内容简介:OpenStack Identity服务提供单点集成,用于管理身份验证,授权和服务目录。身份验证服务通常是用户与之交互的第一个服务。经过身份验证后,最终用户可以使用其身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现部署中的其他服务。Identity服务还可以与某些外部用户管理系统(例如LDAP)集成。
KeyStone概述
OpenStack Identity服务提供单点集成,用于管理身份验证,授权和服务目录。
身份验证服务通常是用户与之交互的第一个服务。经过身份验证后,最终用户可以使用其身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现部署中的其他服务。Identity服务还可以与某些外部用户管理系统(例如LDAP)集成。
用户和服务可以使用由Identity服务管理的服务目录来查找其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同的端点类型可能驻留在暴露给不同类型用户的不同网络上。例如,公共API网络可能从Internet上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织内的运营商。内部API网络可能仅限于包含OpenStack服务的主机。此外,OpenStack支持多个区域以实现可伸缩性。RegionOne区域。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在安装和配置Identity服务之后完成。
Identity服务包含以下组件:
服务器
一个中心化的服务器使用RESTful接口来提供认证和授权服务。
驱动程序
驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息,并且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。
模块
中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求授权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。
KeyStone术语
-
User :用户,它是用一个数字代表使用OpenStack云服务的一个人、系统或者服务,身份验证服务将会验证传入的由用户申明调用的请求。
-
Project :项目,它是一个人或服务所拥有的资源集合。不同的项目之间资源是隔离的,资源可以设置配额,项目中可以有多个用户,每一个用户会根据权限的划分来使用项目中的资源,用户在使用项目的资源前,必须要与这个项目关联,并且制定用户在项目下的角色,一个assignment(关联) 即:Project-User-Role。
-
Token :令牌,它是一串数字字符串,当用户访问资源时需要使用的东西,在keystone中主要是引入令牌机制来保护用户对资源的访问,同时引入PKI、PKIZ、fernet、UUID其中一个随机加密产生一串数字,对令牌加以保护,token并不是长久有效的,是有时效性的,在有效的时间内可以访问资源。
-
Role :角色,它是一堆ACL集合,主要用于权限的划分,例如Nova中的虚拟机、Glance中的镜像,可以给User指定Role,是user获得role对应的操作权限,系统默认使用管理Role的角色 管理员用户admin,在老版本中普通用户是member,而新版本则是user。
-
Service :服务,它是一个通讯簿,一个服务可以确认当前用户是否具有访问其资源的权限,但是当一个用户尝试着访问其项目内的服务时,他必须知道这个服务是否存在,以及如何联系。
-
Endpoint :端点,它是用来通过访问和定位某个openstack service的地址,通常是一个URL,我们也可以理解为它是一个暴露出来的访问点,如果需要访问一个服务,则必须知道他的端点,端点的每一个Url都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限,public url可以被全局访问,默认端口为5000,private url只能被局域网访问,默认端口为5000,admin url可以被从常规的访问中分离,默认端口为35357。
V3版本
-
Tenant更改为Project,即租户改为项目
-
添加了域的概念Domain(对系统资源进行限额)
-
添加了组的概念Group(为了更好的管理用户,例如 linux 下对组授权,其组下面的用户也有了相应的权限)
-
普通用户member更改为user
KeyStone认证流程
用户通过api接口想创建一个实例,首先会将自己的相关信息发给keystone。认证成功后,keystone会颁给用户一个临时的令牌(Token)和一个访问服务的地址(Endpoint)。用户把临时令牌(Token)提交给keystone,keystone并返回一个项目(Project),用户向keystone发送带有特定项目凭证,告诉keystone用户在哪个项目中,keystone收到请求后,会发送一个项目的token到用户,用户拿着令牌(Token)和一个访问服务的地址(Endpoint)找到可访问服务,服务向keystone进行认证,令牌(Token)是否合法,它允许访问使用该服务(判断用户中角色(Role)权限),keystone向服务提供额外的信息。用户是允许方法服务,这个令牌(Token)匹配请求,这个令牌(Token)是用户的,服务执行用户发起的请求,创建实例,服务会将状态报告给用户,最后返回结果,实例已经创建。
安装和配置
1.在安装和配置Identity服务之前,必须创建数据库
MariaDB [(none)]> CREATE DATABASE keystone; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123'; MariaDB [(none)]> flush privileges;
2.运行以下命令来安装包
[root@controller ~]# yum install -y openstack-keystone httpd mod_wsgi
3.编辑文件 /etc/keystone/keystone.conf 并完成如下动作
#在[database]部分,配置数据库访问 [database] # ... connection = mysql+pymysql://keystone:123@192.168.137.51/keystone #在[token]部分,配置Fernet UUID令牌的提供者 [token] # ... provider = fernet
4.初始化身份认证服务的数据库
[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
5.初始化Fernet key
[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone [root@controller ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
6.创建管理员账户与引导身份服务
[root@controller ~]# keystone-manage bootstrap --bootstrap-password 123 --bootstrap-admin-url http://192.168.137.51:35357/v3/ --bootstrap-internal-url http://192.168.137.51:5000/v3/ --bootstrap-public-url http://192.168.137.51:5000/v3/ --bootstrap-region-id RegionOne
7.编辑 /etc/httpd/conf/httpd.conf 文件,配置 ServerName 选项为控制节点
ServerName 192.168.137.51:80
8.创建一个链接到 /usr/share/keystone/wsgi-keystone.conf 文件
[root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
9.启动 Apache HTTP 服务并配置其随系统启动
[root@controller ~]# systemctl enable httpd.service [root@controller ~]# systemctl start httpd.service
到这里为止我们基本安装已经完成,启动Apache服务后我们可以看到三个端口:80、35357、5000,当然,我们也可以查看 /usr/share/keystone/wsgi-keystone.conf 文件使用的端口分别有哪些和指向到了什么目录下
10.配置admin账户
[root@controller ~]# export OS_USERNAME=admin [root@controller ~]# export OS_PASSWORD=123 [root@controller ~]# export OS_PROJECT_NAME=admin [root@controller ~]# export OS_USER_DOMAIN_NAME=Default [root@controller ~]# export OS_PROJECT_DOMAIN_NAME=Default [root@controller ~]# export OS_AUTH_URL=http://192.168.137.51:35357/v3 [root@controller ~]# export OS_IDENTITY_API_VERSION=3
创建域、项目、用户和角色
Identity服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和 角色的组合。
1.创建Service Project,后续服务都加入到这个项目中
[root@controller ~]# openstack project create --domain default --description "Service Project" service +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Service Project | | domain_id | default | | enabled | True | | id | a6306dfc6ac944b48fdaed30fdc0daf1 | | is_domain | False | | name | service | | parent_id | default | +-------------+----------------------------------+
2.常规(非管理)任务应该使用无特权的项目和用户,作为展示创建demo项目和用户
#创建demo项目
[root@controller ~]# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Demo Project |
| domain_id | default |
| enabled | True |
| id | 243522d50796454f9909333176175676 |
| is_domain | False |
| name | demo |
| parent_id | default |
+-------------+----------------------------------+
#创建demo用户
[root@controller ~]# openstack user create --domain default --password-prompt demo
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | e375ef47b2ab49b3b73374cd5790fb19 |
| name | demo |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
#创建user角色
[root@controller ~]# openstack role create user
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | e76183c8e18e4cba8dacf66117772162 |
| name | user |
+-----------+----------------------------------+
#将user角色添加到项目demo用户demo
[root@controller ~]# openstack role add --project demo --user demo user
验证操作
1.撤销临时环境变量 OS_AUTH_URL 和 OS_PASSWORD
[root@controller ~]# unset OS_AUTH_URL OS_PASSWORD
2.测试admin用户
[root@controller ~]# openstack --os-auth-url http://192.168.137.51:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue +------------+-------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +------------+-------------------------------------------------------------------------------------------------------------------------+ | expires | 2018-11-26T00:10:11+0000 | | id | gAAAAABb-yvTfoMZaD72e5NwuiwRSeppwjBYVs3n8UKFGwCyTD0LXRm2nCAUDeAnfmL39d1gmPCAAYsUXVuxI1OXLTscT- | | | JOwnYWFty0W3KbhvShrufSxr45OhYMKIL88gNu__wLxKq9K_YBRmLF7VyRvoJ_0kVxo7HFUlKvmLKvtU5XdnEPTKA | | project_id | 2013d449ba6d4cd8a3d69cee893e6ab9 | | user_id | b0bed0d065a54f23b9de7f2332a8be45 | +------------+-------------------------------------------------------------------------------------------------------------------------+
3.测试demo用户
[root@controller ~]# openstack --os-auth-url http://192.168.137.51:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue +------------+-------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +------------+-------------------------------------------------------------------------------------------------------------------------+ | expires | 2018-11-26T00:11:36+0000 | | id | gAAAAABb-ywoYRmxBMTuAQeBqoA7gmdXA8i-i4vpULGy4Mwe-_2tJEq4237eEq6z67aIrAXbDpBlpRTyGv5XitBhFfw7CR9jfCR1eHDcpMaKvOoyIpMIaAB | | | sehsPGUQbZivTx9vtpa4jgOR_7bTRyaMB2GfWtj43XxodYBso_dTfRRm0TFu2YJE | | project_id | 243522d50796454f9909333176175676 | | user_id | e375ef47b2ab49b3b73374cd5790fb19 | +------------+-------------------------------------------------------------------------------------------------------------------------+
创建OpenStack客户端环境脚本
1.创建admin用户环境脚本
[root@controller ~]# 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=123 export OS_AUTH_URL=http://192.168.137.51:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
2.创建demo用户环境脚本
[root@controller ~]# 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=123 export OS_AUTH_URL=http://192.168.137.51:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
3.测试使用
[root@controller ~]# . admin-openrc [root@controller ~]# openstack token issue +------------+-------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +------------+-------------------------------------------------------------------------------------------------------------------------+ | expires | 2018-11-26T00:16:31+0000 | | id | gAAAAABb-y1PSG-I6pxr7zJLN5MfFZkvENLgFCjVSWIDJp4_9e7uyiUurdAiB3Z32K5ANiZCEZr5ZfHxBixZKUshAAs- | | | 35qKInUc3M1a37zgUPlkjaxbP3NUk4zZYYFkdKRFr_c8Dbn45vrKHWuSDVnpJNrmkTILcnj72PMgkUuM5IRgcXho87w | | project_id | 2013d449ba6d4cd8a3d69cee893e6ab9 | | user_id | b0bed0d065a54f23b9de7f2332a8be45 | +------------+-------------------------------------------------------------------------------------------------------------------------+
以上所述就是小编给大家介绍的《OpenStack云计算与虚拟化—认证篇》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 虚拟化生态系统及实现从虚拟化走向云端
- KVM虚拟化技术(一)虚拟化简介以及按安装
- 云计算技术分享之桌面虚拟化中的3D虚拟化解决方案经验总结
- 虚拟化技术介绍
- 了解虚拟化硬件支持
- 如何探测虚拟化环境是物理机、虚拟机还是容器?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Parsing Techniques
Dick Grune、Ceriel J.H. Jacobs / Springer / 2010-2-12 / USD 109.00
This second edition of Grune and Jacobs' brilliant work presents new developments and discoveries that have been made in the field. Parsing, also referred to as syntax analysis, has been and continues......一起来看看 《Parsing Techniques》 这本书的介绍吧!