您的位置:首页 > 运维架构

cenos7.1 安装openstack kilo 心得之六 添加身份认证服务

2015-11-15 12:08 555 查看
注意:该部分只在控制节点

一、安装和配置

这一章描述了怎样在控制结点安装和配置Openstack身份认证服务

配置前的准备

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

1. 完成下面的步骤以创建数据库:

a. 以 root 用户身份通过数据库客户端连接到数据库服务:

$ mysql -u root -p

b. 创建 keystone 数据库:

CREATE DATABASE keystone;

c. 为 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 替换为实际的密码。

d. 退出数据库客户端。

quit;

2. 生成一个随机值在初始的配置中作为管理员的令牌。

$ openssl rand -hex 10

二、安装和配置组件

1. 运行以下命令来安装包。

# yum install openstack-keystone python-keystoneclient

2. 编辑 /etc/keystone/keystone.conf ,并完成下列操作:

a. 在 [DEFAULT] 段中,对管理员令牌进行配置。

[DEFAULT]

...

admin_token = ADMIN_TOKEN

将 ADMIN_TOKEN 替换为上一步中生成的随机字符串。

b. 在 [database] 段,配置数据库访问相关参数:

[database]

...

connection = mysql://keystone:KEYSTONE_DBPASS@控制器/keystone

将 KEYSTONE_DBPASS 替换为实际的数据库用户的密码。

c. 在 [token] 部分,设置 UUID 令牌的提供者和 SQL 驱动。

[token]

...

provider = keystone.token.providers.uuid.Provider

driver = keystone.token.persistence.backends.sql.Token

d. 在 [revoke] 部分,配置 SQL 的撤回驱动:

[revoke]

...

driver = keystone.contrib.revoke.backends.sql.Revoke

e. (可选配置)可以在 [DEFAULT] 段中开启详细日志配置,为后期的故障排除提供帮助:

[DEFAULT]

...

verbose = True

3. 生成通用的证书和私钥文件,并修改这些文件的访问权限:

# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone

# chown -R keystone:keystone /var/log/keystone

# chown -R keystone:keystone /etc/keystone/ssl

# chmod -R o-rwx /etc/keystone/ssl

4. 初始化身份认证服务的数据库:

#keystone-manage db_sync

三、完成安装

1. 启动身份认证服务,并将该服务配为系统启动时自动启动:

# systemctl enable openstack-keystone.service

# systemctl start openstack-keystone.service

2. 身份认证服务默认的情况会永久保存已经过期的身份凭证。过期凭证的累积会增加数据

库的体积甚至减低整个服务的性能,特别是在那些资源紧缺的环境中。

建议使用 cron 配置计划任务每个小时定时清理过期的身份凭证:

# (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log \

2>&1' >> /var/spool/cron/keystone

四、创建租户、用户和角色

1. 配置管理员令牌:

$ export OS_SERVICE_TOKEN=ADMIN_TOKEN

将其中的 ADMIN_TOKEN 替换为您在 “安装和配置”一节 [30] 中生成的管理员令牌。例

如:

$ export OS_SERVICE_TOKEN=294a4c8a8a475f9b9836

2. 配置入口点:

$ export OS_SERVICE_ENDPOINT=http://控制器:35357/v2.0

创建租户、用户和角色

1. 创建管理员租户、用户和角色以在您的环境中执行管理员操作:

a. 创建 admin 租户:

$ keystone tenant-create --name admin --description "Admin Tenant"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Admin Tenant |

| enabled | True |

| id | 6f4c1e4cbfef4d5a8a1345882fbca110 |

| name | admin |

+-------------+----------------------------------+

b. 创建 admin 用户:

$ keystone user-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | admin@example.com |

| enabled | True |

| id | ea8c352d253443118041c9c8b8416040 |

| name | admin |

| username | admin |

+----------+----------------------------------+

将其中的 ADMIN_PASS 替换为您要设置的一个合适的密码,其中的 EMAIL_ADDRESS

替换为合适的 e-mail 地址。

c. 创建 admin 角色:

$ keystone role-create --name admin

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| id | bff3a6083b714fa29c9344bf8930d199 |

| name | admin |

+----------+----------------------------------+

d. 将 admin 角色赋予给 admin 租户和用户:

$ keystone user-role-add --user admin --tenant admin --role admin

2. 创建一个 demo 租户和用户,用于环境中的一般操作:

a. 创建 demo 租户:

$ keystone tenant-create --name demo --description "Demo Tenant"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Demo Tenant |

| enabled | True |

| id | 4aa51bb942be4dd0ac0555d7591f80a6 |

| name | demo |

+-------------+----------------------------------+

b. 在 demo 租户下创建 demo 用户:

$ keystone user-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | demo@example.com |

| enabled | True |

| id | 7004dfa0dda84d63aef81cf7f100af01 |

| name | demo |

| tenantId | 4aa51bb942be4dd0ac0555d7591f80a6 |

| username | demo |

+----------+----------------------------------+

将其中的 DEMO_PASS 替换为您要设置的一个合适的密码,其中的 EMAIL_ADDRESS 替

换为合适的 e-mail 地址。

3. OpenStack 服务也需要租户、用户和角色来与其他服务交互。每个服务一般需要在

service 租户下创建一个或多个用户,并赋予 admin 的角色。

• 创建 service 租户:

$ keystone tenant-create --name service --description "Service Tenant"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Service Tenant |

| enabled | True |

| id | 6b69202e1bf846a4ae50d65bc4789122 |

| name | service |

+-------------+----------------------------------+

创建服务实体和 API 端点

创建好租户、用户和角色后,您必须为身份认证服务创建 service 实体和 API 端点。

配置前的准备

• 如 “创建租户、用户和角色”一节 [32] 中所描述的内容,设置 OS_SERVICE_TOKEN 和

OS_SERVICE_ENDPOINT 环境变量。

创建服务实体和 API 端点

1. 身份认证服务管理了一个关于您 OpenStack 环境中的服务的目录。服务使用这个目录来

查找您环境中的其他服务。

创建服务实体和身份认证服务:

$ keystone service-create --name keystone --type identity --description "OpenStack Identity"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Identity |

| enabled | True |

| id | 15c11a23667e427e91bc31335b45f4bd |

| name | keystone |

| type | identity |

+-------------+----------------------------------+

2. 身份认证服务管理了一个与您环境相关的 API 端点的目录。服务使用这个目录来决定如

何与您环境中的其他服务进行通信。

创建身份认证服务的 API 端点:

$ keystone endpoint-create --service-id $(keystone service-list | awk '/ identity / {print $2}') --publicurl http://控制器:5000/v2.0 --internalurl http://控制器:5000/v2.0 \

--adminurl http://控制器:35357/v2.0 --region regionOne

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| adminurl | http://controller:35357/v2.0 |

| id | 11f9c625a3b94a3f8e66bf4e5de2679f |

| internalurl | http://controller:5000/v2.0 |

| publicurl | http://controller:5000/v2.0 |

| region | regionOne |

| service_id | 15c11a23667e427e91bc31335b45f4bd |

+-------------+----------------------------------+

验证操作

这个部分描述如何验证身份认证服务的操作。

1. 取消 OS_SERVICE_TOKEN 和 OS_SERVICE_ENDPOINT 临时环境变量的设置:

$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

2. 使用admin 租户和用户,需要一个认证的令牌:

$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS
--os-auth-url http://controller:35357/v2.0 token-get

+-----------+----------------------------------+

| Property | Value |

+-----------+----------------------------------+

| expires | 2014-10-10T12:50:12Z |

| id | 8963eb5ccd864769a894ec316ef8f7d4 |

| tenant_id | 6f4c1e4cbfef4d5a8a1345882fbca110 |

| user_id | ea8c352d253443118041c9c8b8416040 |

+-----------+----------------------------------+

将其中的 ADMIN_PASS 替换为您在身份认证服务中为 admin 用户设置的密码。如果包含

特殊字符,您可能需要使用单引号 (') 将密码引用。

3. 使用 admin 租户和用户,列出租户以验证 admin 租户和用户能够执行只有管理员才能执

行的命令行,且身份认证服务包含您在 “创建租户、用户和角色”一节 [32] 中创建的

租户:

$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 tenant-list

+----------------------------------+----------+---------+

| id | name | enabled |

+----------------------------------+----------+---------+

| 6f4c1e4cbfef4d5a8a1345882fbca110 | admin | True |

| 4aa51bb942be4dd0ac0555d7591f80a6 | demo | True |

| 6b69202e1bf846a4ae50d65bc4789122 | service | True |

+----------------------------------+----------+---------+

4. 使用 admin 租户和用户,列出用户以验证身份认证服务包含您在 “创建租户、用户和

角色”一节 [32] 中创建的用户:

$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS \

--os-auth-url http://controller:35357/v2.0 user-list

+----------------------------------+---------+---------+---------------------+

| id | name | enabled | email |

+----------------------------------+---------+---------+---------------------+

| ea8c352d253443118041c9c8b8416040 | admin | True | admin@example.com |

| 7004dfa0dda84d63aef81cf7f100af01 | demo | True | demo@example.com |

+----------------------------------+---------+---------+---------------------+

5. 使用 admin 租户和用户,列出角色以验证 身份认证服务包含您在 “创建租户、用户和

角色”一节 [32] 中创建的角色:

$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS \

--os-auth-url http://controller:35357/v2.0 role-list

+----------------------------------+----------+

| id | name |

+----------------------------------+----------+

| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |

| bff3a6083b714fa29c9344bf8930d199 | admin |

+----------------------------------+----------+

将其中的 DEMO_PASS 替换为您在身份认证服务中为 demo 用户所设置的密码。

7. 使用 demo 租户和用户,尝试列出用户以验证您不能执行只有管理员才能执行的命令

行:

$ keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS \

--os-auth-url http://controller:35357/v2.0 user-list

You are not authorized to perform the requested action, admin_required. (HTTP 403)

创建 OpenStack 客户端环境脚本

1. 编辑 admin-openrc.sh 文件并添加下列内容:

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=ADMIN_PASS

export OS_AUTH_URL=http://控制器:35357/v2.0

将其中的 ADMIN_PASS 替换为您在身份认证服务中为 admin 用户设置的密码。

2. 编辑 demo-openrc.sh 文件并添加下列内容:

export OS_TENANT_NAME=demo

export OS_USERNAME=demo

export OS_PASSWORD=DEMO_PASS

export OS_AUTH_URL=http://控制器:5000/v2.0

将其中的 DEMO_PASS 替换为您在身份认证服务中为 demo 用户设置的密码。

加载客户端环境脚本

• 使用特定租户和用户运行客户端,您可以在运行之前简单地加载相关客户端脚本。例

如,加载身份认证服务的位置和 admin 租户及用户的凭证:

$ source admin-openrc.sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: