实验目标
OpenStack:Identity service 为认证管理,授权管理和服务目录服务管理提供单点整合。其它 OpenStack 服务将身份认证服务当做通用统一 API 来使用。此外,提供用户信息但是不在 OpenStack 项目中的服务(如 LDAP 服务)可被整合进先前存在的基础设施中。为了从 identity 服务中获益,其他的 OpenStack 服务需要与它合作。当某个 OpenStack 服务收到来自用户的请求时,该服务询问Identity 服务,验证该用户是否有权限进行此次请求。
实验内容
实验环境与实验效果预览
在控制节点安装 Keystone 服务
创建数据库及权限授权
- 实验要求
需要在 mysql 里创建 keystone 的用户,并且授权远程访问
- 实现过程:
连接 mysql,输入密码登录
# mysql –uroot -p
然后创建 keystone 数据库,创建 keystone 用户(密码为 123456)并授权
MariaDB > CREATE DATABASE keystone;
MariaDB > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456';
MariaDB > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456';
MariaDB > Grant all privileges on keystone.* to 'keystone'@'controller' identified by '123456';
授权以后重启数据库服务
# systemctl restart mariadb
安装服务并配置
1、实现要求
安装 keystone 服务和 memcached 服务,并配置服务
2、实现过程
yum 安装 keystone 服务和 memcached 服务
# yum install openstack-keystone httpd mod_wsgi memcached python-memcached -y
启动 memcached 服务,配置开机启动
# systemctl start memcached
# systemctl enable memcached
生成随机数,创建管理员令牌,值记下来
# openssl rand -hex 10
我这里是 1d152f6511ae2ea79b09,进入/etc/keystone 目录,备份 keystone.conf 文件成 keystone.conf.bak 修改 keystone.conf 文件,共 3 处:
1:[default] 第 10 行左右
2:[database] 第 640 行左右,指定自己的用户名和密码
3:[token] 第 2659 行左右
admin_token = 1d152f6511ae2ea79b09
connection = mysql+pymysql://keystone:123456@192.168.23.101/keystone
provider=fernet
初始化身份认证服务的数据库
# su -s /bin/sh -c "keystone-manage db_sync" keystone
上一步完成以后要检查 keystone 库中有没有表,没有的话,检查一下哪里错误,可以查看日志/var/log/keystone/keystone.log,正确的结果有如下表:
初始化 fernet key 存储库
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置 Apache HTTP 服务器,修改/etc/httpd/conf/httpd.conf,修改主机名,大概 95 行
ServerName controller:80
将 keystone 配置文件链接到 apache 默认目录下
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动 httpd 服务,添加开机启动
# systemctl start httpd
# systemctl enable httpd
创建实体和 API endpoint,配置认证令牌,与上面生成的管理员令牌一致
# export OS_TOKEN=1d152f6511ae2ea79b09
配置端点 URL
# export OS_URL=http://controller:35357/v3
配置认证 API 版本
# export OS_IDENTITY_API_VERSION=3
创建 keystone 的 service
# openstack service create --name keystone --description "OpenStack Identity" identity
创建 keystone 的 endpoint
# openstack endpoint create --region RegionOne identity public http://controller:5000/v3
# openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
# openstack endpoint create --region RegionOne identity admin http://controller:5000/v3
创建管理项目、用户和角色
- 实现要求
创建域、项目、用户和角色,验证安装配置 - 实现过程:
创建 domain 域
# openstack domain create --description "Default Domain" default
创建 admin 项目
# openstack project create --domain default --description "Admin Project" admin
创建 admin 用户,会提示输入密码
# openstack user create --domain default --password-prompt admin
创建 admin 角色
# openstack role create admin
添加 admin 角色到 admin 项目和用户上,这个命令执行后没有输出
# openstack role add --project admin --user admin admin
创建"service"项目
# openstack project create --domain default --description "Service Project" service
常规任务应该使用无特权的项目和用户,创建一个 demo 项目和用户
创建 demo 项目
# openstack project create --domain default --description "Demo Project" demo
创建 demo 用户,会提示输入密码
# openstack user create --domain default --password-prompt demo
创建 user 角色
# openstack role create user
添加 user 角色到 demo 项目和用户
# openstack role add --project demo --user demo user
完成之后可以验证,重置 OS_TOKEN 和 OS_URL 环境变量
# unset OS_TOKEN OS_URL
使用 admin 用户,请求认证令牌,密码:123456
# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name
default --os-project-name admin --os-username admin token issue
使用 demo 用户,请求认证令牌,密码:123456
# 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 token issue
有输出即为配置正确
创建用户环境脚本
1、实现要求
为了提升客户端操作的效率,OpenStack 支持简单的客户端环境变量脚本即OpenRC 文件创建 admin 和 demo 项目和用户创建客户端环境变量脚本,为客户端操作加载合适的的凭证
2、实现过程
创建 admin 脚本(目录任意),如下图:# vi admin-openrc
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
创建 demo 脚本(目录任意),如下图:# vi 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=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
加载 admin-openrc 文件来身份认证服务的环境变量位置和 admin 项目和用户证书
# . admin-openrc
注意[ . ]和[ admin-openrc ] 之间有空格
加载 demo-openrc 文件来身份认证服务的环境变量位置和 demo 项目和用户证书
# . demo-openrc
注意[ . ]和[ demo-openrc ] 之间有空格
请求认证令牌信息
# openstack token issue
加油,冲冲冲!!!今日博客任务已经超额完成,我要滚回去学习高数了