OpenStack安装流程(juno版)- 添加认证服务(keystone)

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';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
</pre>
可以把KEYSTONE_DBPASS变更为合适的密码。

退出数据库客户端。

安装配置组件

  1. 安装keystone包:

# apt-get install keystone python-keystoneclient

  1. 编辑# vi /etc/keystone/keystone.conf文件:
    [DEFAULT]部分,定义initial administration token:
    <pre>[DEFAULT]
    ...
    admin_token = ADMIN_TOKEN
    </pre>

    其中替换ADMIN_TOKEN为合适的值,可以通过# openssl rand -hex 10来生成。

    继续在[DEFAULT]部分开启“输出详细记录日志”的选项:
    <pre>[DEFAULT]
    ...
    verbose = True
    </pre>

    [database]部分,设定数据库访问选项:
    <pre>[database]
    ...
    connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone
    </pre>
    把KEYSTONE_DBPASS替换为创建keystone数据库时所授权的密码。配置默认使用SQL的数据库连接,需要注释掉或删除。

    [token]部分,配置UUID token provider和SQL driver:
    <pre>[token]
    ...
    provider = keystone.token.providers.uuid.Provider
    driver = keystone.token.persistence.backends.sql.Token
    </pre>

    [revoke]部分,配置SQL revocation driver:
    <pre>[revoke]
    ...
    driver = keystone.contrib.revoke.backends.sql.Revoke
    </pre>

    同步认证服务数据库:

# 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

创建租户,用户和角色

  1. 创建拥有管理操作职能的管理租户,管理用户和管理角色。

    创建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
email 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
这条命令不会产生输出显示。

  1. 创建拥有特定权限的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
email 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端点

  1. 创建服务实体
    认证服务会将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>

  1. 创建服务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>

验证操作

  1. 复位环境变量:

$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

  1. 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用户密码。

  1. 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用户密码。

  1. 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 email
fd151acb7cc34bba8d4d9cf391ad0d06 admin True admin@example.com
812116bcca5b4a01981669fcef09ee11 demo True demo@example.com

+———————————-+——-+———+——————-+</pre>
ADMIN_PASS为之前设定的admin用户密码。

  1. 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)

  1. 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用户密码。

  1. 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客户端环境脚本

创建脚本

  1. 创建文件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用户密码。

  1. 创建文件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),有可能是密码等配置错误,导致访问权限受限,重新检查配置文件和各个用户的密码情况。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101282.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • journalctl命令详解,与如何查看系统日志

    journalctl命令详解,与如何查看系统日志journalctl可以查看所有的系统日志文件,由于日志信息量很大,journalctl还提供了各种参数帮助用户更快速的定位到日志信息。默认情况下,用户都可以访问自己的日志。对于系统主日志和其他用户的日志,仅限于有权限的用户访问,比如root用户,wheel组和systemd组的用户。

  • 矩阵论:向量范数和矩阵范数的区别_矩阵范数的定义

    矩阵论:向量范数和矩阵范数的区别_矩阵范数的定义http://blog.csdn.net/pipisorry/article/details/51030563向量范数0-范数,向量中非零元素的个数。1-范数:,即向量元素绝对值之和,matlab调用函数norm(x,1) 。2-范数:,Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方,matlab调用函数norm(x,2)。∞-范数:,即所有向量元素绝对值中

  • linux系统查看网卡命令_linux如何配置网卡

    linux系统查看网卡命令_linux如何配置网卡rhel内核版本号信息:[root@hvrhub~]#uname-aLinuxhvrhub2.6.18-308.el5#1SMPFriJan2717:17:51EST2012x86_64x86_64x86_64GNU/Linux查看网卡的驱动。制造商等信息:[root@hvrhub~]#kudzu–probe–class=network-class:…

    2022年10月19日
  • 软件看门狗与硬件看门狗_电脑看门狗是什么意思

    软件看门狗与硬件看门狗_电脑看门狗是什么意思软件看门狗和硬件看门狗的作用和区别工业级无线路由器,作为无线组网中非常重要的设备,洞察客户应用场景,只要是关乎无线组网可靠性的需求,即使是最细微的技术应用都要做到极致,比如看门狗。为什么工业级无线路由器这么重视软硬件看门狗,今天我们就来看看软硬件看门狗区别。看门狗,又叫watchdogtimer,是一个定时器电路,一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔…

    2022年10月24日
  • w3c标准是什么_语言的特征主要包括什么

    w3c标准是什么_语言的特征主要包括什么什么是W3C标准站点标准(SiteStandard)不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML;表现标准语w3c网页标准,具体指那些?CSS布局HTML小编今天和大家分享高手指教,。WEB标准不是某一个标准,而是一系列标准的…

  • linux 安装Jenkins和配置

    linux 安装Jenkins和配置简要介绍Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。语言:Java一句话描述:持续集成工具建议的版本建议使用版本为“jenkins-2.164.x”。环境清单:CentOS7.6配置安装环境安装OpenJDK。 要求Java的OpenJDK为“1.8.0”以上,可以通过以下命令安装…

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号