7.OpenStack-Ocata 认证服务keystone

OpenStack Identity 服务提供单点集成,用于管理身份验证、授权和服务目录。

标识服务通常是用户与之交互的第一个服务。经过身份验证后,最终用户可以使用其身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现其他服务在部署中的位置。标识服务还可以与某些外部用户管理系统(如 LDAP)集成。

用户和服务可以使用由标识服务管理的服务目录查找其他服务。顾名思义,服务目录是 OpenStack 部署中可用服务的集合。每个服务可以有一个或多个终结点,每个终结点可以是以下三种类型之一:管理员、内部或公共。在生产环境中,出于安全原因,不同的终结点类型可能驻留在向不同类型的用户公开的单独网络上。例如,公共 API 网络可能从互联网上可见,以便客户可以管理其云。管理 API 网络可能仅限于组织内管理云基础结构的操作员。内部 API 网络可能仅限于包含 OpenStack 服务的主机。此外,OpenStack支持多个区域以实现可扩展性。为简单起见,本指南将管理网络用于所有终结点类型和默认区域。在 Identity 服务中创建的区域、服务和终结点共同构成了部署的服务目录。部署中的每个 OpenStack 服务都需要一个服务条目,其中包含存储在 Identity 服务中的相应端点。这一切都可以在安装和配置标识服务后完成。

‎本节介绍如何在控制器节点上安装和配置 OpenStack Identity 服务(代号为 keystone)。

安装和配置

‎在安装和配置标识服务之前,必须创建数据库。

用数据库连接客户端以 root 用户连接到数据库服务器:

mysql -u root -p

创建 keystone 数据库:

CREATE DATABASE keystone;

keystone数据库授予恰当的权限:

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

用合适的密码替换 KEYSTONE_DBPASS

eixt退出数据库客户端。

安全并配置组件

运行以下命令来安装包。

yum install -y openstack-keystone httpd mod_wsgi

编辑文件 /etc/keystone/keystone.conf 并完成如下动作:

vim /etc/keystone/keystone.conf
  • [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 key:

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

‎引导标识服务or Bootstrap the Identity service:

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

替换为管理用户的合适密码。‎ADMIN_PASS

Replace with a suitable password for an administrative user.ADMIN_PASS

配置 Apache HTTP 服务器

编辑/etc/httpd/conf/httpd.conf 文件,配置ServerName 选项为控制节点:

vim /etc/httpd/conf/httpd.conf
ServerName controller:80

图片[1]-7.OpenStack-Ocata 认证服务keystone-剧毒之触博客

创建一个链接到/usr/share/keystone/wsgi-keystone.conf文件

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

完成安装

启动 Apache HTTP 服务并配置其随系统启动:

systemctl enable httpd.service;systemctl start httpd.service

配置admin账户脚本

vim admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3

图片[2]-7.OpenStack-Ocata 认证服务keystone-剧毒之触博客

执行admin文件

. admin

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

身份服务为每个 OpenStack 服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合。

创建service项目:

openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 7eeb20ab4a434c7f8dc13f85dd1d33be |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
+-------------+----------------------------------+

常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。

创建demo 项目:

openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 05a0d6348521402c94444117d753f3a5 |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | default                          |
+-------------+----------------------------------+

创建demo 用户:

openstack user create --domain default --password DEMO_PASS demo
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 2dd768ac5440476a8215774272f7d63e |
| name                | demo                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

创建 user 角色:

openstack role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 450318367c3f471aa1ef457e4f017729 |
| name      | user                             |
+-----------+----------------------------------+

将角色添加到项目的用户:user/demo/demo

openstack role add --project demo --user demo user

验证操作

在安装其他服务之前确认身份认证服务的操作。

在控制节点上执行这些命令。

作为 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 --os-password ADMIN_PASS token issue
+------------+---------------------------------------------------------------------------------------------+
| Field      | Value                                                                                       |
+------------+---------------------------------------------------------------------------------------------+
| expires    | 2022-04-27T03:13:39+0000                                                                    |
| id         | gAAAAABiaKbTPcWHmTJ2dx_wD5RsZ7WuGId9zCwatSbGEhObo3Xrngd9M-3t83Z0YbMk80TwOFFGhicugqgXdzs-    |
|            | mWJXpLFclwgdIKCyW89-4p0Ow86f8HFEXK0Cdx6gLQGeIgVdCgkh90ph3pgF0eIvqsIGtHkP-                   |
|            | DlbHnJgh0ZNLUFM9Jl4-0A                                                                      |
| project_id | ce0e09a6236a49cd83b0818f89399885                                                            |
| user_id    | 1e00e587279844b49ae5af63d1f9d120                                                            |
+------------+---------------------------------------------------------------------------------------------+

作为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 --os-password DEMO_PASS token issue
+------------+---------------------------------------------------------------------------------------------+
| Field      | Value                                                                                       |
+------------+---------------------------------------------------------------------------------------------+
| expires    | 2022-04-27T03:14:25+0000                                                                    |
| id         | gAAAAABiaKcB88SY-OVdh7lMI6wRsvpogBFIdkXXtqn01nlBl7i4OZYWxcFHwp0Ep5izbJ1HK_dSh7MPqX5LVc4     |
|            | -y86pZGJxLLsGr5ruBmFXnw-                                                                    |
|            | QR_EDbUkxCq4ae4pZ4wUed4G_H8fSFJWMO_YDsxr4GMiRyUxsxUILgZFvCjF160z7kPs_7Ok                    |
| project_id | 05a0d6348521402c94444117d753f3a5                                                            |
| user_id    | 2dd768ac5440476a8215774272f7d63e                                                            |
+------------+---------------------------------------------------------------------------------------------+

创建 OpenStack 客户端环境脚本

创建 admindemo 项目和用户创建客户端环境变量脚本。

创建和编辑 admin-openrc 文件并添加以下内容:

vim 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 文件并添加以下内容:

vim 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    | 2022-04-27T04:05:00+0000                                                                    |
| id         | gAAAAABiaLLcCay2ev6bh826y0nMH2zsdqPIY636rCn04PIsllcFSmA_NYDyXlgwY6ezUi10x38zGghj14PJSmESmCA |
|            | h8iH1aMKGA1SNHqE_N8KtmZajPq3F_laERQnvlIqubUBfgqnrmt_G8aA1VSjnrd0UA6OPNYEa8_rXat0SXOUmMJdsIz |
|            | I                                                                                           |
| project_id | ce0e09a6236a49cd83b0818f89399885                                                            |
| user_id    | 1e00e587279844b49ae5af63d1f9d120                                                            |
+------------+---------------------------------------------------------------------------------------------+
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论