目录

  • 认证服务
    • 1.概述
    • 2.安装和配置
      • 1.先决条件
      • 2.创建服务实体和API端点
      • 3.创建域、项目、用户和角色
      • 4.验证操作
      • 5.创建 OpenStack 客户端环境脚本

认证服务

1.概述

其它所用服务的调用都需要通过认证服务的认证来完成,并且它提供了目录服务,它存储了所有其它组件的API连接端点,即它提供了整个openstack集群的用户认证授权,每个组件在连接的时候需要申请什么样的资源都需要经过认证服务(keystone)的认证,获取token后去连接,连接的时候这个连接信息,就是要访问资源的location就在keystone的目录服务中,一旦认证通过,目录服务就会把这个连接端点传送过去
认证服务包含这些组件:

  1. 服务器
    一个中心化的服务器使用RESTful 接口来提供认证和授权服务。
  2. 驱动
    驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息, 并且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。
  3. 模块
    中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求授权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。

2.安装和配置

1.先决条件

在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。

数据库设置:
mysql -u root -p       %用数据库连接客户端以 root 用户连接到数据库服务器
CREATE DATABASE keystone      %创建 keystone 数据库对keystone数据库授予恰当的权限,之后退出数据库:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'  IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';      %允许所有主机访问openssl rand -hex 10            %生成一个随机值在初始的配置中作为管理员的令牌


安全并配置组件:
yum install openstack-keystone httpd mod_wsgi -y     %安装相关包,认证服务将会通过apache的wsgi模块来启动编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
在[DEFAULT]部分,定义初始管理令牌的值:
[DEFAULT]
...
admin_token = ADMIN_TOKEN
使用前面步骤生成的随机数替换ADMIN_TOKEN值。在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
将KEYSTONE_DBPASS替换为你为数据库选择的密码。在[token]部分,配置Fernet UUID令牌的提供者:
[token]
...
provider = fernet




初始化身份认证服务的数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone
注意:忽略输出中任何不推荐使用的信息初始化Fernet keys:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone


认证服务使用带有mod_wsgi的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。缺省情况下,Kestone服务仍然监听这些端口。配置 Apache HTTP 服务器:
编辑/etc/httpd/conf/httpd.conf文件,配置ServerName选项为控制节点:
ServerName controller用下面的内容创建文件 /etc/httpd/conf.d/wsgi-keystone.conf:
Listen 5000
Listen 35357<VirtualHost *:5000>WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}WSGIProcessGroup keystone-publicWSGIScriptAlias / /usr/bin/keystone-wsgi-publicWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /var/log/httpd/keystone-access.log combined<Directory /usr/bin>Require all granted</Directory>
</VirtualHost><VirtualHost *:35357>WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}WSGIProcessGroup keystone-adminWSGIScriptAlias / /usr/bin/keystone-wsgi-adminWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /var/log/httpd/keystone-access.log combined<Directory /usr/bin>Require all granted</Directory>
</VirtualHost>


启动 Apache HTTP 服务并配置其随系统启动:
systemctl enable httpd.service
systemctl start httpd.service

2.创建服务实体和API端点

身份认证服务提供服务的目录和他们的位置。每个你添加到OpenStack环境中的服务在目录中需要一个service实体和一些API endpoints。
默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息。因此我们需要使用“先决条件”章节中为身份认证服务创建的临时身份验证令牌用来初始化的服务实体和API端点。

export OS_TOKEN=ADMIN_TOKEN      %配置认证令牌
将ADMIN_TOKEN替换为在"先决条件"中生成的认证令牌export OS_URL=http://controller:35357/v3      %配置端点URLexport OS_IDENTITY_API_VERSION=3       %配置认证 API 版本


创建服务实体和API端点:
在你的Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。创建服务实体和身份认证服务。OpenStack使用三个API端点变量代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。$ openstack service create  --name keystone --description "OpenStack Identity" identity
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Identity               |
| enabled     | True                             |
| id          | 4ddaae90388b4ebc9d252ec2252d8d10 |
| name        | keystone                         |
| type        | identity                         |
+-------------+----------------------------------+身份认证服务管理了一个与您环境相关的 API 端点的目录。服务使用这个目录来决定如何与您环境中的其他服务进行通信:
创建认证服务的 API 端点:
$ openstack endpoint create --region RegionOne   identity public http://controller:5000/v3
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 30fff543e7dc4b7d9a0fb13791b78bf4 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 8c8c0927262a45ad9066cfe70d46892c |
| service_name | keystone                         |
| service_type | identity                         |
| url          | http://controller:5000/v3        |
+--------------+----------------------------------+$ openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 57cfa543e7dc4b712c0ab137911bc4fe |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 6f8de927262ac12f6066cfe70d99ac51 |
| service_name | keystone                         |
| service_type | identity                         |
| url          | http://controller:5000/v3        |
+--------------+----------------------------------+$ openstack endpoint create --region RegionOne identity admin http://controller:35357/v3
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 78c3dfa3e7dc44c98ab1b1379122ecb1 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 34ab3d27262ac449cba6cfe704dbc11f |
| service_name | keystone                         |
| service_type | identity                         |
| url          | http://controller:35357/v3       |
+--------------+----------------------------------+


3.创建域、项目、用户和角色

身份认证服务为每个OpenStack服务提供认证服务。认证服务使用 T domains, projects (tenants), :term:users<user>和 :term:roles<role>的组合。

创建域default:
$ openstack domain create --description "Default Domain" default
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Default Domain                   |
| enabled     | True                             |
| id          | e0353a670a9e496da891347c589539e9 |
| name        | default                          |
+-------------+----------------------------------+在你的环境中,为进行管理操作,创建管理的项目、用户和角色:
创建 admin 项目:
$ openstack project create --domain default --description "Admin Project" admin
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Admin Project                    |
| domain_id   | e0353a670a9e496da891347c589539e9 |
| enabled     | True                             |
| id          | 343d245e850143a096806dfaefa9afdc |
| is_domain   | False                            |
| name        | admin                            |
| parent_id   | None                             |
+-------------+----------------------------------+创建 admin 用户:
openstack user create --domain default --password admin admin
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | e0353a670a9e496da891347c589539e9 |
| enabled   | True                             |
| id        | ac3377633149401296f6c0d92d79dc16 |
| name      | admin                            |
+-----------+----------------------------------+
创建 admin 角色:$ openstack role create admin
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | cd2cb9a39e874ea69e5d4b896eb16128 |
| name      | admin                            |
+-----------+----------------------------------+添加admin角色到admin项目和用户上:
openstack role add --project admin --user admin admin




下面的示例使用一个你添加到你的环境中每个服务包含独有用户的service项目。创建service项目:$ openstack project create --domain default \--description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | e0353a670a9e496da891347c589539e9 |
| enabled     | True                             |
| id          | 894cdfa366d34e9d835d3de01e752262 |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | None                             |
+-------------+----------------------------------+常规(非管理)任务应该使用无特权的项目和用户。作为例子,创建demo项目和用户。
创建demo项目:
$ openstack project create --domain default \--description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | e0353a670a9e496da891347c589539e9 |
| enabled     | True                             |
| id          | ed0b60bf607743088218b0a533d5943f |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | None                             |
+-------------+----------------------------------+创建``demo`` 用户:$ openstack user create --domain default \--password-prompt demo
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | e0353a670a9e496da891347c589539e9 |
| enabled   | True                             |
| id        | 58126687cbcc4888bfa9ab73a2256f27 |
| name      | demo                             |
+-----------+----------------------------------+创建 user 角色:
$ openstack role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 997ce8d05fc143ac97d83fdfb5998552 |
| name      | user                             |
+-----------+----------------------------------+添加user角色到demo项目和用户:
openstack role add --project demo --user demo user

4.验证操作

重置OS_TOKEN和OS_URL环境变量:
unset OS_TOKEN OS_URL作为 admin 用户,请求认证令牌:
$ openstack --os-auth-url http://controller:35357/v3 \--os-project-domain-name default --os-user-domain-name default \--os-project-name admin --os-username admin token issue
Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+作为demo用户,请求认证令牌:
$ openstack --os-auth-url http://controller:5000/v3 \--os-project-domain-name default --os-user-domain-name default \--os-project-name demo --os-username demo token issue
Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:15:39.014479Z                                     |
| id         | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
|            | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
|            | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U       |
| project_id | ed0b60bf607743088218b0a533d5943f                                |
| user_id    | 58126687cbcc4888bfa9ab73a2256f27                                |
+------------+-----------------------------------------------------------------+
这个命令使用demo用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。


5.创建 OpenStack 客户端环境脚本

前一节中使用环境变量和命令选项的组合通过openstack客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。

为admin和demo项目和用户创建客户端环境变量脚本。编辑文件 admin-openrc 并添加如下内容:
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
将 ADMIN_PASS 替换为你在认证服务中为 admin 用户选择的密码。编辑文件 demo-openrc 并添加如下内容:
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
将 DEMO_PASS 替换为你在认证服务中为 demo 用户选择的密码。


使用脚本
使用特定租户和用户运行客户端,你可以在运行之前简单地加载相关客户端脚本。例如:加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书:. admin-openrc
请求认证令牌:
$ openstack token issue
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:44:35.659723Z                                     |
| id         | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
|            | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
|            | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

source demo-openrc         %切换到demo用户后将不能查看相关信息

openstack云计算平台<2>--核心组件配置->认证服务相关推荐

  1. openstack云计算平台

    文章目录 openstack简介 1 openstack环境部署 1.1主机网络和解析 1.2网络时间协议,所有的节点时间一直 1.3OpenStack包 1.4 SQL数据库 1.5 消息队列 1. ...

  2. openstack云计算平台 4(镜像封装、块存储服务)

    目录 一.镜像封装 二.块存储服务 1.简介 2.环境部署 3.安装并配置控制节点 4.安装并配置一个存储节点 5.验证操作 一.镜像封装 目前我们只有一个测试镜像,接下来我们去构建一个镜像 点击虚拟 ...

  3. vmware快速搭建OpenStack云计算平台

    快速搭建OpenStack云计算平台 VMware 专用 OpenStack 云计算平台 本系统基于Centos7.8(core)进行部署 部署方式采用简单快捷的RDO源同步到本地进行离线安装 默认登 ...

  4. openstack云计算平台<5>--核心组件配置->Netwoking服务

    目录 概述 一.安装并配置控制节点 1.先决条件 2.配置网络选项 3.配置元数据代理 4.为计算节点配置网络服务 5.完成安装 二.安装并配置计算节点 1.安装组件 2.配置通用组件 3.配置网络选 ...

  5. openstack 云计算平台 mitaka 搭建

    简介 OpenStack是什么? 云计算:形象化的说法,云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问 云计算的分类: 公有云:公有云通常指第三方提供商为用户提供的能够使用 ...

  6. openstack云计算平台 2(计算服务、Networking 服务、命令行方式启动实例)

    目录 一.组件3-计算服务 1.简介 2.安装并配置控制节点 3.安装并配置计算节点 4.验证操作 二.组件4-Networking 服务 1.简介 2.安装并配置控制节点 3.控制节点配置网络选项- ...

  7. openstack云计算平台 3 (Dashboard搭建、创建云主机平台)

    文章目录 一.组件5-Dashboard 1.检查云主机状态 2.安装和配置 3.验证操作(创建云主机) 二.控制节点配置网络选项-私有网络 三.计算节点配置网络选项-私有网络 1.创建云主机 一.组 ...

  8. openstack云计算平台(一)

    openstack 1.openstack简介 2. 环境 2.1 安全 2.2 主机网络 2.2.1 配置网络接口 2.2.2 配置域名解析 2.3 网络时间协议(NTP) 2.4 OpenStac ...

  9. OpenStack云计算平台部署 单节点

    环境配置 虚拟机(centos7 .内存8G.硬盘300G.处理器4核并开启intel vt-x,网络模式设置为NAT,虚拟机网络一定要设置好,并可以ping通baidu,不然有中途掉IP的情况发生) ...

最新文章

  1. 依赖注入及AOP简述(一)——“依赖”的概念 .
  2. XGBoost算法概述
  3. 64岁Python之父:我不退休了,我要去微软
  4. gzdeflate函数_PHP中的gzcompress、gzdeflate、gzencode函数详解
  5. Zend_Db_Table-insert ()和zend_db_adapter::insert方法返回值不同
  6. 下载编译goldfish内核
  7. numpy安装与调试
  8. anaconda安装opencv
  9. mysql 备份数据库
  10. logo去白底_如何在word编辑把网上截图过来的logo的白色底板去掉,只留下logo字样?...
  11. 吃饭 睡觉 打豆豆游戏
  12. C#使用spitter控件分割左右两个panel并可拖动
  13. java版Spring Cloud+SpringBoot+mybatis+uniapp b2b2c 多商户入驻商城 直播 电子商务之全渠道线上线下会员引流协同
  14. NGNIX在CENTEROS 下部署
  15. 天涯明月刀开发_腾讯天涯明月刀研发全程:六年四个阶段成就最美国风
  16. win10和win7游戏测试软件,绝地求生win7和win10哪个不卡?绝地求生系统要求测试-游侠网...
  17. Logism · 汉字字库存储芯片扩展 实验
  18. 【智能优化算法-倭黑猩猩算法】基于倭黑猩猩优化算法求解多目标优化问题附matlab代码
  19. Apicloud之亲加模块的使用方法
  20. 八月五日个人训练记录

热门文章

  1. invalid python sd,Fatal Python error: init_fs_encoding: failed to get the Python cod如何解决
  2. 大数据-日志接收处理
  3. NFC模块方案,轻松实现NFC通讯
  4. python绘制时间节点事件图
  5. Spark读HBASE - shc方案
  6. BZOJ 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 bfs
  7. 【Go语言入门指南】零基础入门 go 语言 | Golang 入门指南
  8. Android图片转换
  9. 华为计算机apk,华为手机助手安卓版apk
  10. 89C52RC控制 WS2812B