身份服务(Identity service)
身份概述:
Openstack身份服务为管理器身份验证、授权和服务提供了单一的集成点。
身份服务通常与之交互的第一服务,经过身份验证后,终端用户可以使用他们的身份访问其他的Openstack服务,同样地,其他OpenStack服务利用身份服务来确保用户是他们说的,并发先其他服务在部署种的位置,身份服务还可以与一些外部用户管理系统集成(如LDAP)
用户和服务可以通过使用服务目录来定位其他服务,服务目录由身份服务管理,顾名思义,服务目录是OpenStack部署种可用服务的集合,每个服务可以有一个或多个端点,每个端点可以是三种类型之一:admin、internal或public。在生产环境中,不同端点类型可能位于不同的网络上,由于安全原因,他们会暴露于不同类型的用户之间,例如:public API网络可以从因特网上看到,这样客户就可以管理他们的云,admin API网络可能仅限于管理云基础设施的组织种的操作员。internal API网络可能被限制在包含OpenStack服务的主机上。此外,OpenStack支持多个区域以获得可伸缩性。为简单起见,本指南使用了所有端点类型和默认分区域的管理网络,在身份服务中创建的区域、服务和端点组成了部署的服务目录,在部署种,每个Openstack服务都需要一个服务条目,其中对应的端点存储在服务中,这些都可以在身份服务安装和配置之后完成。
身份服务包含的组件:
Server
集中式服务器使用RESTful接口提供身份验证和服务。
Drivers
驱动程序或服务后端继承道集中的服务器上。他们用于访问OpenStack外部存储库中的标识信息,并且可能已经存在于OpenStack部署的基础设施种(例如,SQL数据库或LDAP服务器)
Modules
中间件模块运行在使用身份服务的OpenStack组建的地址空间中,这些模块拦截服务请求,提取用户凭证,并将他们发送到中央服务器进行授权。中间模块和OpenStack组件之间的集成使用python web服务器网关接口。
一、安装配置:
如何在控制器的节点上安装和配置OpenStack身份服务(代号为keysone)。处于可伸缩性的目的,该配置部署了Fernet令牌和Apache HTTPserver来处理请求
1)先决条件:
在安装和配置身份服务之前,必须创建一个数据库。使用数据库访问客户端作为根用户连接到数据库服务器
[root@controller ~]# mysql -u root -p’lifulai_000’
MariaDB [(none)]> create database keystone;
MariaDB [(none)]> grant all privileges on keystone.* to ‘keystone’@‘localhost’ identified by ‘lifulai_000’;
MariaDB [(none)]> grant all privileges on keystone.* to ‘keystone’@’%’ identified by ‘lifulai_000’;
二、安装和配置组件
1、默认配置文件因分发而异,可能需要添加这些部分和选项,而不是修改现有的部分和选项。同时,配置片段种的省略号(…)表示您应该保留的潜在的默认配置选项。
2、Apache HTTP服务器与mod_wsgi来服务请求道端口5000和3537的身份服务。默认情况下,keystone服务仍在监听这些端口
运行以下命令来安装:
[root@controller ~]# yum -y install openstack-keystone httpd mod_wsgi
编辑/etc/kistone/kestston.conf文件并完成一下操作:
在数据库部分,配置数据库访问
[root@controller ~]# vim /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:lifulai_000@192.168.85.101/keystone
[token]
provider = fernet
填充身份数据库
[root@controller ~]# su -s /bin/sh -c “keystone-manage db_sync” keystone
初始化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
引导身份服务
[root@controller ~]# keystone-manage bootstrap --bootstrap-password 123 --bootstrap-admin-url http://192.168.85.101:35357/v3/ --bootstrap-internal-url http://192.168.85.101:5000/v3/ --bootstrap-public-url http://192.168.85.101:5000/v3/ --bootstrap-region-id RegionOne
配置Apache HTTP服务器
编辑/etc/http/conf/httpd.conf文件并将Server Nead选项配置为参考控制器节点:
[root@controller ~]# vim /etc/httpd/conf/httpd.conf
ServerName controller
创建到/usr/share/keystone/wsgi-keystone.conf文件的链接
[root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
完成安装
启动Apache HTTP服务并在系统启动时将其配置为启动:
[root@controller ~]# systemctl enable httpd ; systemctl restart httpd ; systemctl status httpd
配置管理账户
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.85.101:35357/v3
export OS_IDENTITY_API_VERSION=3
创建域、项目、用户和角色
身份服务为每个Openstack服务提供认证服务。
身份验证服务使用域、项目、用户的组合,以及角色
1、每个服务的唯一用户的服务项目。添加到环境中,创建服务项目:
该向导使用一个服务项目,该项目包含添加到环境的每个服务的唯一用户,创建服务项目
[root@controller ~]# openstack project create --domain default --description “Service Project” service
2、常规(非admin)任务应该使用无特权项目和用户。作为一个例子,这个向导创建了演示项目和用户
[root@controller ~]# openstack project create --domain default --description “Demo Project” demo
创建demo用户
[root@controller ~]# openstack user create --domain default --password-prompt demo
User Password:123
Repeat User Password:123
创建用户角色:
[root@controller ~]# openstack role create user
将用户角色添加到演示项目和用户:
[root@controller ~]# openstack role add --project demo --user demo user
注意:1、此命令不提供输出
2、该命令可以重复此过程来创建附加的项目和用户
验证操作:
在安装其他服务之前,验证身份服务的操作。
注意:在控制器节点上执行这些命令。
1、取消临时OS_AUTH_URL and OS_PASSWORD变量
[root@controller ~]# unset OS_AUTH_URL OS_PASSWORD
2、作为管理员用户,请求身份验证令牌:
注意:此命令使用管理员用户的密码
[root@controller ~]# openstack --os-auth-url http://192.168.85.101:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
Password: 123
3、作为演示用户,请求身份验证令牌
注意:此命令使用演示用户的密码和API端口5000,它只允许定期(非管理员)访问身份服务API
[root@controller ~]# openstack --os-auth-url http://192.168.85.101:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue
创建OpenStack客户端环境脚本
1、创建和编辑admin-openrc文件并添加以下内容
[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.85.101:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2、创建和编辑demo-openrc文件并添加以下内容
[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.85.101:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
使用脚本
若要将客户端作为特定项目和用户运行,可以简单地加载相关联的客户端环境脚本优先运行,例如:
1、加载admin-openrc文件填充环境变量,位置为身份服务和管理项目和用户凭据:
[root@controller ~]# . admin-openrc
2、请求认证令牌
[root@controller ~]# openstack token issue