1.KeyStone功能介绍
KeyStone主要有两个功能:用户管理和服务目录
用户管理主要包括:认证和授权
认证方式有四种:即token令牌、账号和密码、服务目录、策略
认证核心术语
用户相关:
User:能使用OpenStack服务的一个用户
Project:之前交Tenant(租户),是组件服务的一种资源隔离方式
Role:角色,是User访问指定Project资源的一种权限
Token:令牌,一个综合的加密认证信息
使用方式:给一个User赋予在指定Project中一个资源访问的Role角色。
服务目录相关:
Service:OpenStack各组件提供的服务,用于用户访问
Endpoint:用户访问Service的一个url链接入口
KeyStone配置信息
配置文件:/etc/keystone/keystone.conf
日志文件:/var/log/keystone/keystone.log
2.KeyStone部署
在OpenStack中,任何组件的基本上都按照数据库配置、软件安装、软件配置、数据同步、http配置、权限设置这六个方面来操作。
- 数据库配置
连接并创建数据库
mysql -u root -p root
CREATE DATABASE keystone;
复制代码
配置权限
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
-- 将keystone用户密码设置为keystone
复制代码
- 软件安装
yum install -y openstack-keystone httpd mod_wsgi
- 编辑配置文件
vim /etc/keystone/keystone.conf
[DEFAULT]
#连接到消息队列
405 transport_url = rabbit://openstack:openstack@192.168.188.100:5672
[database]
#数据库配置连接控制节点的认证地址
661 connenction = mysql+pymysql://keystone:keystone@192.168.188.100/keystone
[token]
#配置token令牌的提供者,取消注释即可
2758 provider = fernet
复制代码
检查修改信息
[root@controller keystone]# grep -ni '^[a-Z]' /etc/keystone/keystone.conf
- 初始化信息
同步数据库信息
su -s /bin/sh -c "keystone-manage db_sync" keystone
复制代码
初始化keystone的认证信息
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
复制代码
生成openstack管理admin账户的api信息
Queen版本的admin用户和普通用户都使用5000端口连接,而之前版本admin用户使用35357端口。这里一定要注意,否则会直接导致后面的组件无法部署。
# keystone-manage bootstrap --bootstrap-password admin
--bootstrap-admin-url http:// controller:5000/v3/
--bootstrap-internal-url http:// controller:5000/v3/
- bootstrap-public-url http:// controller:5000 /v3/
--bootstrap-region-id RegionOne
复制代码
- 配置http服务
编辑配置文件
# vim /etc/httpd/conf/httpd.conf
ServerName 192.168.188.100:80
复制代码
创建连接文件
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d
启动http服务,并设置开机启动
systemctl enable httpd.service
systemctl start httpd.service
复制代码
- 权限配置
配置用户信息
$ export OS_USERNAME=admin
$ export OS_PASSWORD=admin
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3
复制代码
1.创建项目
命令格式:openstack project create --domain default --description "描述" <项目名>
创建service项目
openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description "Demo Project" demo
复制代码
检查效果
openstack project list
2.创建demo用户,即普通用户
命令格式:openstack user create --domain default --password <密码> <用户名>
openstack user create --domain default --password demo demo
复制代码
3.创建role角色
命令格式:openstack role create <role名>
openstack role create user
复制代码
4.给demo用户赋予在指定Project(即"Demo Project")中一个资源访问的Role角色(即user)
命令格式:openstack role add --project <项目名> --user <用户名> <角色组>
openstack role add --project demo --user demo user
复制代码
3.认证效果
- 效果测试
取消环境变量
unset OS_AUTH_URL OS_PASSWORD
用户验证
命令格式:
openstack --os-auth-url http://controller:5000/v3
--os-project-domain-name Default --os-user-domain-name Default
--os-project-name <项目> --os-username <用户> --os-password <密码> token issue
复制代码
使用admin验证
openstack --os-auth-url http://controller:5000/v3
--os-project-domain-name Default --os-user-domain-name Default
--os-project-name admin --os-username admin --os-password admin token issue
复制代码
使用demo用户验证
openstack --os-auth-url http://controller:5000/v3
--os-project-domain-name Default --os-user-domain-name Default
--os-project-name demo --os-username demo --os-password demo token issue
复制代码
- 创建环境变量脚本来自动设置用户环境变量
创建admin用户的变量脚本
#vim admin-openstack.sh
export OS_PROJECT_DOMIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
复制代码
openstack token issue
复制代码
创建demo用户的变量脚本