OpenStack安装流程(juno版)- 添加认证服务(keystone)
keystone简介
keystone主要为了实现以下关键功能:
- 追踪用户和管理其权限;
- 提供可访问服务的目录,并提供服务的API端点(API endpoints)。
keystone中的一些基本概念简介
- 用户(User)
可使用OpenStack云服务的个人、系统或服务的数字化形象。(Digital representation of a person, system, or service who uses OpenStack cloud services. )
- 证书(Credentials)
用于确认用户身份的数据。
- 认证(Authentication)
确认一个用户身份的认证过程。
- 令牌(Token)
一段字母和数字组成的文本,用于访问OpenStack 的API和资源。
- 租户(Tenant)
一个用来分组或隔离资源的集合。租户还可以用来分组或隔离认证对象。根据不同的服务操作者,一个租户可以对应一个顾客、一个账户、一个组织或一个项目。(A container used to group or isolate resources. Tenants also group or isolate identity objects. Depending on the service operator, a tenant may map to a customer, account, organization, or project.)
- 服务(Service)
OpenStack的服务,用于Compute(nova),Object Storage(swift)或Image Service(glance)等。它为用户访问资源,实施运作提供了一个或多个端点(endpoint)。
- 端点(Endpoint)
一个可以通过网络来访问服务的地址,通常是一个URL地址。
- 角色 (Role)
一种定义好的拥有施行特定操作的权限的个人特征。
- keystone客户端(Keystone Client)
一种用于OpenStack认证API的命令行交互界面。
安装和配置
keystone服务安装在controller节点上。
配置keystone所使用的数据库
使用root身份进入数据库(密码为安装数据库步骤时设立的):
$ mysql -u root -p
进入数据库界面后创建属于keystone的数据库:
<pre>CREATE DATABASE keystone;
</pre>
把keystone数据库的访问权限赋予名为keystone,来自任何主机地址的用户,并设定访问密码为KEYSTONE_DBPASS(替换为合适的密码):
<pre>GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
</pre>
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
可以把KEYSTONE_DBPASS变更为合适的密码。
退出数据库客户端。
安装配置组件
- 安装keystone包:
# apt-get install keystone python-keystoneclient
- 编辑
# vi /etc/keystone/keystone.conf
文件:
在[DEFAULT]
部分,定义initial administration token:
<pre>[DEFAULT]
</pre>
...
admin_token = ADMIN_TOKEN其中替换ADMIN_TOKEN为合适的值,可以通过
# openssl rand -hex 10
来生成。继续在
[DEFAULT]
部分开启“输出详细记录日志”的选项:
<pre>[DEFAULT]
</pre>
...
verbose = True在
[database]
部分,设定数据库访问选项:
<pre>[database]
</pre>
...
connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone
把KEYSTONE_DBPASS替换为创建keystone数据库时所授权的密码。配置默认使用SQL的数据库连接,需要注释掉或删除。在
[token]
部分,配置UUID token provider和SQL driver:
<pre>[token]
</pre>
...
provider = keystone.token.providers.uuid.Provider
driver = keystone.token.persistence.backends.sql.Token在
[revoke]
部分,配置SQL revocation driver:
<pre>[revoke]
</pre>
...
driver = keystone.contrib.revoke.backends.sql.Revoke同步认证服务数据库:
# keystone-manage db_sync
完成最后的安装
重启认证服务:
# service keystone restart
默认Ubuntu会产生SQLite数据库,可以将其删除:
# rm -f /var/lib/keystone/keystone.db
默认情况下,认证服务会无限量地存储过期的token,这将导致数据库占用空间大幅度增加而且会降低认证服务的性能,用以下命令可以定期清除过期的token:
<pre># (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/crontabs/keystone</pre>
创建租户,用户和角色
配置所需的环境变量
在使用keystone命令操作前,需要先使用临时的administration token(即在/etc/keystone/keystone.conf
文件中设定的ADMIN_TOKEN),并手动配置认证服务的地址(endpoint)。
将administration token写入环境变量:
$ export OS_SERVICE_TOKEN=ADMIN_TOKEN
将endpoint写入环境变量:
$ export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
创建租户,用户和角色
- 创建拥有管理操作职能的管理租户,管理用户和管理角色。
创建
admin
租户:
<pre>$ keystone tenant-create --name admin --description "Admin Tenant"
Property | Value |
---|---|
description | Admin Tenant |
enabled | True |
id | e8cda8def37b4d32b765759f1faa5ed2 |
name | admin |
</pre>
创建admin
用户:
<pre>$ keystone user-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS
|
|
---|---|
Property | Value |
admin@example.com | |
enabled | True |
id | 13b460ca8d9e4aa094e8f4f4fff6f087 |
name | admin |
username | admin |
+----------+----------------------------------+</pre>
用合适的密码代替ADMIN_PASS。
创建admin
角色:
<pre>$ keystone role-create --name admin
|
|
---|---|
Property | Value |
id | 2bf07853b40b420eb9e9e2aa23ff3e9e |
name | admin |
+----------+----------------------------------+</pre>
将admin
角色赋予给admin
租户和admin
用户。
$ keystone user-role-add --user admin --tenant admin --role admin
这条命令不会产生输出显示。
- 创建拥有特定权限的demo租户,demo用户
创建demo租户:
<pre>$ keystone tenant-create --name demo --description "Demo Tenant"
Property | Value |
---|---|
description | Demo Tenant |
enabled | True |
id | ef5783a270d84bb880a2c6fb85eac651 |
name | demo |
+-------------+----------------------------------+</pre>
创建属于demo
租户的demo
用户
<pre>keystone user-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS
|
|
---|---|
Property | Value |
demo@example.com | |
enabled | True |
id | 2a6e8190e26c4f27ba98171235a8b219 |
name | demo |
tenantId | ef5783a270d84bb880a2c6fb85eac651 |
username | demo |
+----------+----------------------------------+</pre>
用合适的密码代替DEMO_PASS
OpenStack服务的配置方案
OpenStack的服务都需要被赋予租户,用户和角色的性质来与其他服务进行交互。每个服务都需要创建一个或多个独立的用户,这个用户被赋予admin
角色,并且属于service
租户下。
创建service
租户:
<pre>$ keystone tenant-create --name service --description "Service Tenant"
|
|
---|---|
Property | Value |
description | Service Tenant |
enabled | True |
id | e4288b01bc084a29ad6133f882a58732 |
name | service |
+-------------+----------------------------------+</pre>
创建服务实体和API端点(service entity and API endpoint)
配置所需的环境变量
具体操作如上一步骤所述。
创建服务实体和API端点
- 创建服务实体
认证服务会将OpenStack环境中的所有服务登记在目录中,所有服务都通过这个目录来定位环境中的其他服务。创建认证服务的服务实体:
<pre>$ keystone service-create --name keystone --type identity \
--description "OpenStack Identity" | |
---|---|
Property | Value |
description | OpenStack Identity |
enabled | True |
id | d7bbd538857b4caa9f7f9730a74b98ca |
name | keystone |
type | identity |
+-------------+----------------------------------+</pre>
- 创建服务API端点
认证服务会将OpenStack环境中每个服务对应的API端点登记在目录中,这个目录将用来支持各个服务之间的通信。创建认证服务的API端点:
<pre>$ keystone endpoint-create \
--service-id $(keystone service-list | awk '/ identity / {print $2}') \
--publicurl http://controller:5000/v2.0 \
--internalurl http://controller:5000/v2.0 \
--adminurl http://controller:35357/v2.0 \
--region regionOne | |
---|---|
Property | Value |
adminurl | http://controller:35357/v2.0 |
id | 32fb8b8934024c30bd1f0b7795a51220 |
internalurl | http://controller:5000/v2.0 |
publicurl | http://controller:5000/v2.0 |
region | regionOne |
service_id | d7bbd538857b4caa9f7f9730a74b98ca |
+-------------+----------------------------------+</pre>
验证操作
- 复位环境变量:
$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
- 以
admin
租户和用户的身份,请求一条authentication token:
<pre>$ 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 | 2015-11-24T12:37:45Z |
id | 1d5ebdf4e60a4f648240a20a65cbf96e |
tenant_id | 4f7806287c9a437e9cd912504ff71727 |
user_id | fd151acb7cc34bba8d4d9cf391ad0d06 |
+-----------+----------------------------------+</pre>
ADMIN_PASS为之前设定的admin
用户密码。
- 以
admin
租户和用户的身份,列出租户清单:
<pre>$ 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 |
4f7806287c9a437e9cd912504ff71727 | admin | True |
d1f7caccc65840b68258997a759da07f | demo | True |
5ab4d5c513f543cfbf8e3be97f5df5fb | service | True |
+----------------------------------+---------+---------+</pre>
ADMIN_PASS为之前设定的admin
用户密码。
- 以
admin
租户和用户的身份,列出用户清单:
<pre>$ 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 | |
fd151acb7cc34bba8d4d9cf391ad0d06 | admin | True | admin@example.com |
812116bcca5b4a01981669fcef09ee11 | demo | True | demo@example.com |
+----------------------------------+-------+---------+-------------------+</pre>
ADMIN_PASS为之前设定的admin
用户密码。
- 以
admin
租户和用户的身份,列出角色清单:
<pre>$ 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 |
61286483662e40ba8f0a48b05fc8a451 | admin |
+----------------------------------+----------+</pre>
ADMIN_PASS为之前设定的admin
用户密码。其中_member_的来历如下,在创建用户时:Using the --tenant option automatically assigns the member role to a user. This option will also create the member role if it does not exist.(创建时使用的命令为keystone user-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS)
- 以
demo
租户和用户的身份,请求一条authentication token:
<pre>$ keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS \
--os-auth-url http://controller:35357/v2.0 token-get | |
---|---|
Property | Value |
expires | 2015-11-24T13:06:04Z |
id | 9eca8d1dff374c2da6f358e85f0b60af |
tenant_id | d1f7caccc65840b68258997a759da07f |
user_id | 812116bcca5b4a01981669fcef09ee11 |
+-----------+----------------------------------+</pre>
DEMO_PASS为之前设定的demo
用户密码。
- 以
demo
租户和用户的身份,验证无法执行admin
专属命令:
<pre>$ 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)</pre>
创建OpenStack客户端环境脚本
创建脚本
- 创建文件
admin-openrc.sh
,并输入以下内容:
<pre>export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v2.0</pre>
ADMIN_PASS为之前设定的admin
用户密码。
- 创建文件
demo-openrc.sh
,并输入以下内容:
<pre>export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v2.0</pre>
DEMO_PASS为之前设定的demo
用户密码。
注:端口35357是为拥有管理权限的操作准备的,端口5000是为普通用户操作准备的。
启动客户端环境脚本
根据不同租户和用户,执行$ source admin-openrc.sh</code>或<code>$ source demo-openrc.sh
。
安装时出现的问题及解决方法
安装完keystone后,创建"Admin Tenant"时出现“Unable to establish connection to http://controller:35357/v2.0/tenants”的错误,可能是安装keystone时未完整安装,重新安装并更新。在验证步骤时出现(HTTP 401),有可能是密码等配置错误,导致访问权限受限,重新检查配置文件和各个用户的密码情况。
OpenStack安装流程(juno版)- 添加认证服务(keystone)相关推荐
- Openstack之路(二)认证服务Keystone
Keystone的概述 Keystone是Openstack的组件之一,用于为Openstack家族中的其它组件成员提供统一的认证服务,包括身份验证,令牌的发放和校验,服务列表,用户权限的定义等.Op ...
- OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
在controller节点上安装和配置 创建nova的数据库,服务证书和API端点 创建数据库: 使用root身份进入数据库: $ mysql -u root -p 创建nova数据库: <pr ...
- OpenStack安装流程(juno版)- 添加镜像服务(glance)
OpenStack镜像服务(glance)可以让用户查询,存取虚拟机. 安装和配置 glance安装在controller节点上. 创建配置glance所需的数据库,服务证书和API端点 创建glan ...
- 《从0到1-全面深刻理解MySQL系列》- 最详细的MySQL安装流程(Window版)
个人主页: IT学习日记 版权: 本文由[IT学习日记]原创.在CSDN首发 如果文章对你有帮助.欢迎关注.点赞.收藏(一键三连).有任何问题欢迎私信,看到会及时回复! 文章大纲 下载前需要了解的一些 ...
- 【N版】openstack——认证服务keystone(三)
[N版]openstack--认证服务keystone 一.keystone介绍 1.1keystone Keystone(OpenStack Identity Service)是 OpenStack ...
- Ubuntu 14.04 LTS 配置 Juno 版 Keystone
keystone配置概况 采用包安装方式安装的keystone,重要的文件结构有如下: /etc/keystone/ - 包含keystone所有的配置信息 /var/log/keystone/ - ...
- OpenStack 的部署T版(二)——Keystone组件
目录 一.OpenStack安装Keystore组件 Keystone认证流程 1.OpenStack组件安装的顺序 2.创建数据库实例和数据库用户 3.安装.配置keystone.数据库.Apach ...
- OpenStack实践系列②认证服务Keystone
OpenStack实践系列②认证服务Keystone 三.实战OpenStack之控制节点 3.1 CentOS7的时间同步服务器chrony 下载chrony # yum install -y ch ...
- openstack集群安装(Rocky版)
openstack集群安装(Rocky版) 开放栈文档:rocky安装指南 (openstack.org) 一.网络规划 在提供商网络架构中,所有实例都直接附加到提供商网络.在自助服务(私有)网络架构 ...
最新文章
- 03 Cisco IOS设备
- acess dao示例
- 使用git clone的时候报错:Received HTTP code 503 from proxy after CONNECT
- 普通函数与函数模板的区别
- vs2013编译boost1.55.0 32/64位
- 29.rust类型转换.rs
- Linux网络编程 | 并发模式:半同步/半异步模式、领导者/追随者模式
- bai的字怎么写_硬笔书法的连笔字应该要怎么写?
- Mouse Jiggler – 自动移动光标,防止电脑启动屏保、进入休眠[Windows]
- 使用Java线程并发库实现两个线程交替打印的线程题
- realme Q3 Pro跑分曝光:天玑1100加持新一代“千元机皇”
- Linux--iptables常用命令
- BZOJ4001[TJOI2015]概率论(数学、期望、生成函数、卡特兰数)
- 亚马逊、Facebook、Google 等科技公司为何越来越难招到人了?
- [敏捷开发培训] 构建Agile MVP
- 离散数学 (II) 习题 11
- MaxEnt运行错误
- [C] 数组指针、指针数组及数组传参
- iOS线下分享《RunLoop》by 孙源@sunnyxx
- FBI网站被黑致数据泄露?官方称这根本是个骗局