文章目录
一、认证服务
1.概述
- 其它所用服务的调用都需要通过认证服务的认证来完成,并且它提供了目录服务,它存储了所有其它组件的API连接端点,即它提供了整个openstack集群的用户认证授权,每个组件在连接的时候需要申请什么样的资源都需要经过认证服务(keystone)的认证,获取token后去连接,连接的时候这个连接信息,就是要访问资源的location就在keystone的目录服务中,一旦认证通过,目录服务就会把这个连接端点传送过去
- 认证服务包含这些组件:
- 服务器:一个中心化的服务器使用RESTful 接口来提供认证和授权服务。
- 驱动: 驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息, 并且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。
- 模块:中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求授权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。
2.安装和配置
1) 先决条件
[root@controller ~]# mysql -u root -p ##用数据库连接客户端以 root 用户连接到数据库服务器
Enter password:
MariaDB [(none)]> CREATE DATABASE keystone; ##创建 keystone 数据库
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone'; #对keystone数据库授予权限
[root@controller ~]# mysql -u keystone -p
2) 安全并配置组件
[root@controller ~]# yum install openstack-keystone httpd mod_wsgi -y #安装相关包,认证服务将会通过apache的wsgi模块来启动
[root@controller ~]# openssl rand -hex 10 ##生成一个随机值在初始的配置中作为管理员的令牌
c6ad1e2b4e05df0aea27
[root@controller ~]# vim /etc/keystone/keystone.conf
[DEFAULT]
admin_token = c6ad1e2b4e05df0aea27 ##定义初始管理令牌的值
[database] ##配置数据库访问
connection = mysql+pymysql://keystone:keystone@controller/keystone
[token] ##配置Fernet UUID令牌的提供者
provider = fernet
[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone ##初始化身份认证服务的数据库
[root@controller ~]# mysql -pwestos
MariaDB [(none)]> use keystone
MariaDB [keystone]> show tables;
[root@controller ~]# id keystone
uid=163(keystone) gid=163(keystone) groups=163(keystone)
[root@controller keystone]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone ##初始化Fernet keys
3) 配置 Apache HTTP 服务器
##认证服务使用带有mod_wsgi的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。缺省情况下,Kestone服务仍然监听这些端口
[root@controller keystone]# vim /etc/httpd/conf/httpd.conf
ServerName controller ##配置``ServerName`` 选项为控制节点
[root@controller keystone]# vim /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{
GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone<