1. 前言介绍
Openstack的身份认证服务提供单点认证管理、授权和目录服务。Openstack的其他服务都使用身份认证服务作为统一的API。其他服务接收用户请求,需要身份认证服务验证用户是否有申请请求的权限。
身份认证包括以下几个组成:
Server:集中式服务器通过RESTful接口提供认证和授权服务。
Drivers:用来在外部访问openstack身份信息。
Modules:中间件模块运行在使用身份认证服务的openstack组件的地址空间,它们拦截服务请求,提取用户凭证,并将他们发送至集中式服务器授权。
备注:安装openstack身份认证时,需要注册每个openstack组件。此外,身份认证可以追踪哪个openstack服务已经安装,以及他们在网络中的位置。
2. 安装
2.1 安装前
安装keystone前需要创建一个数据库和管理员令牌
使用root连接数据库
mysql -u root -p
创建“keystone”数据库
MariaDB > CREATE DATABASE keystone;
为访问keystone数据库添加权限
MariaDB> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY '123456';
MariaDB> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY '123456';
退出数据库访问客户端。随机令牌
在初始配置期间生成一个随机值作为管理令牌使用
openssl rand -hex 10
生成的随机值为:b14c455ff3cfbea08fbb
2.2 安装和配置组件
在安装完成后禁止keystone服务自启动
官方文档中使用mod_wsgi(一种Apache HTTP Server)在端口使用5000和35357上为Openstack认证服务请求提供服务。默认情况下keystone服务也会监听该端口,因此,官方文档中手动禁用了keystone服务。
# echo "manual" > /etc/init/keystone.override
安装包
apt-get install keystone apache2 libapache2-mod-wsgi
配置文件
编辑配置文件 /etc/keystone/keystone.conf
在[default]部分,添加在2.1-4中随机生成的管理员令牌b14c455ff3cfbea08fbb
[DEFAULT]
...
admin_token = b14c455ff3cfbea08fbb
在[database]部分,配置数据库访问连接,123456为KEYSTONE_DBPASS的密码
[database]
...
connection = mysql+pymysql://keystone:123456@controller/keystone
[token]
...
provider = fernet
- populate身份认证服务数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
- 初始化fernet
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone