Keystone认证服务详细操作流程

Keystone认证服务详细操作流程
认证服务
服务简介
做为云操作系统的Keystone认证服务,主要提供两个功能:
①⽤户⾝份认证:为系统提供是否为合法⽤户的判断功能。对user的管理和保存,管理user的tenant、role、group、domain等,保存user的存放、验证、令牌管理等。
②服务⽬录列表:显⽰系统提供的服务列表。其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间的相互调⽤,需要经过keystone的⾝份验证来获得⽬标服务的Endpoint来到⽬标服务。
认证服务中出现的名词介绍及运⾏⽅式:
User⽤户:⼀个使⽤OpenStack云服务的⼈、系统或者服务的数字表⽰。⽤户需要登录,然后被分配token去访问资源。⽤户可以被分配到⼀个tenant。
Credential⽤户证据:⽤来证明⽤户⾝份的证据,可以是⽤户名和密码、⽤户名和API key,或者⼀个Keystone分配的⾝份token。
Authentication⾝份验证:验证⽤户⾝份的过程。Keystone服务通过检查⽤户的Credential来确定⽤户的⾝份。最开始,使⽤⽤户
名/密码或者⽤户名/API key作为credential。当⽤户的credential被验证后,Keystone会给⽤户分配⼀个authentication token供该⽤户后续的请求使⽤。
Token令牌:⼀个⽤于访问OpenStack API和资源的alpha数字字符串。⼀个token可能在任何时间被撤销(revoke),因此其有效期是有限的。OpenStack中,token是和特定的tenant绑定的,因此如果user如果访问多个tenant的话他就需要多个token。
Tenant租户:⼀个⽤于分组或者隔离资源的容器。⼀个tenant可能对应⼀个客户、账号、组织或者项⽬。在OpenStack中,⽤户⾄少必须在⼀个tenant中。tenant容器的可使⽤资源的限制成为Tenant Quota,它包括tenant内各⼦资源的quota。
Service服务:⼀个OpenStack服务,⽐如Nova、Swift或者Glance等。每个服务提供⼀个或者多个endpoint供⽤户访问资源以及进⾏操作。
Endpoint端点:⼀个⽹络可访问的服务地址,通过它你可以访问⼀个服务,通常是个URL地址。不同region有不同的service endpoint。endpoint告诉也可告诉OpenStack service去哪⾥访问特定的service。⽐如,当Nova需要访问 Glance服务去获取image 时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。我们可以通过Endpoint的region属性去定义多个region。Endpoint该使⽤对象分为三类:①admin url给admin⽤户使⽤。②internal url给OpenStack内部服务使⽤来跟别的服务通信。③public url其它⽤户可以访问的地址。
服务配置信息
创建keystone数据库
进⼊数据库,运⾏如下命令。
[root@ljl-controller ~]# mysql -uroot -p000000
MariaDB [(none)]> CREATE DATABASE keystone;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \    ->  IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
->  IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.00 sec)
认证服务安装和配置
从yum中安装认证服务包。
[root@ljl-controller ~]# yum install openstack-keystone httpd mod_wsgi 随机数⽣成10位数。
[root@ljl-controller ~]# openssl rand -hex 10
4104bb0055496edc5650
配置认证令牌、端点URL、认证API版本。
[root@ljl-controller ~]# export OS_TOKEN=4104bb0055496edc5650
[root@ljl-controller ~]# export OS_URL=ljl-controller:35357/v3身份认证系统
[root@ljl-controller ~]# export OS_IDENTITY_API_VERSION=3
配置f⽂件。
[root@ljl-controller ~]# vi /etc/f
[DEFAULT]
admin_token = 4104bb0055496edc5650
[database]
connection = mysql+pymysql://keystone:000000@ljl-controller/keystone
[token]
provider = fernet
初始化⾝份认证服务的数据库,初始化Fernet keys。
[root@ljl-controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@ljl-controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
进⼊数据库查看同步是否成功。
[root@ljl-controller ~]# mysql -uroot -p000000
MariaDB [(none)]> use keystone;
MariaDB [keystone]> show tables;
图3-1 keystone数据库部分信息
配置Apache HTTP服务器
配置f⽂件,添加如下。
[root@ljl-controller ~]# vi /etc/httpd/f
ServerName ljl-controller
因为mitaka镜像中本⾝带有f⽂件,所以只需要移动到/etc/httpd/conf.d/⽬录下,重启HTTP服务即可。
[root@ljl-controller ~]# cp /LJL/f /etc/httpd/conf.d/
[root@ljl-controller ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@ljl-controller ~]# systemctl restart httpd.service
创建服务实体和API端点变种
创建服务实体和⾝份认证服务,每个添加到OpenStack环境中的服务要求⼀个或多个服务实体和三个认证服务中的API端点变种。[root@ljl-controller ~]# openstack service create --name krystone --description "OpenStck Identity" identity
创建认证服务的三个API端点变种。
[root@ljl-controller ~]# openstack endpoint create --region RegionOne identity public ljl-controller:5000/v3
[root@ljl-controller ~]# openstack endpoint create --region RegionOne identity internal ljl-controller:5000/v3
[root@ljl-controller ~]# openstack endpoint create --region RegionOne identity admin ljl-controller:35357/v3
创建认证服务依赖组合
通过如下命令,创建域。
[root@ljl-controller ~]# openstack domain create --description "liujianlin Domain" default
为了进⾏管理的操作,创建admin的项⽬、⽤户和⾓⾊,命令如下。
[root@ljl-controller ~]# openstack project create --domain default --description "Admin Project" admin
[root@ljl-controller ~]# openstack user create --domain default --password-prompt admin
[root@ljl-controller ~]# openstack role create admin
添加admin⾓⾊到admin⽤户上。
[root@ljl-controller ~]# openstack role add --project admin --user admin admin
创建service项⽬,使环境中所有服务都含有⽤户⾃⼰的服务项⽬。
[root@ljl-controller ~]# openstack project create --domain default --description "Service Project" service
常规(⾮管理)任务应该使⽤⽆特权的项⽬和⽤户。创建⼀个演⽰demo项⽬和⽤户。
[root@ljl-controller ~]# openstack project create --domain default --description "Demo Project" demo
[root@ljl-controller ~]# openstack user create --domain default --password-prompt demo
创建user⾓⾊。
[root@ljl-controller ~]# openstack role create user
添加user⾓⾊到demo⽤户上。
[root@ljl-controller ~]# openstack role add --project demo --user demo user
验证功能状态
⽤户请求认证令牌
重置环境变量。
[root@ljl-controller ~]# unset OS_TOKEN OS_URL
作为admin⽤户,请求认证令牌。
[root@ljl-controller ~]# openstack --os-auth-url ljl-controller:35357/v3 \
>  --os-project-domain-name default --os-user-domain-name default \
>  --os-project-name admin --os-username admin token issue
作为demo⽤户,请求认证令牌,这个命令使⽤demo⽤户的密码和API端⼝5000,这样只会允许对⾝份认证服务API的常规(⾮管理)访问。
[root@ljl-controller ~]# openstack --os-auth-url ljl-controller:5000/v3 \
>  --os-project-domain-name default --os-user-domain-name default \
>  --os-project-name demo --os-username demo token issue
创建优化环境变量脚本
前⼀节中使⽤环境变量和命令选项的组合通过open stack客户端与⾝份认证服务交互。为了提升客户端操作的效率,OpenStack⽀持简单的客户端环境变量脚本即openrc⽂件。
创建open stack客户端环境变量脚本,创建⽂件admin-openrc、demo-openrc。

本文发布于:2024-09-23 03:28:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/372956.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务   认证   创建   资源   访问   管理
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议