云计算OpenStack:keystone身份认证服务(二)--技术流ken
Keystone介绍
-
管理用户及其权限
-
维护 OpenStack Services 的 Endpoint
-
Authentication(认证)和 Authorization(鉴权)
-
Token 用做访问 Service 的 Credential
-
Service 会通过 Keystone 验证 Token 的有效性
-
Token 的有效期默认是 24 小时
-
资源的所有权是属于 Project 的,而不是 User。
-
在 OpenStack 的界面和文档中,Tenant / Project / Account 这几个术语是通用的,但长期看会倾向使用 Project
-
每个 User(包括 admin)必须挂在 Project 里才能访问该 Project 的资源。 一个User可以属于多个 Project。
-
admin 相当于 root 用户,具有最高权限
# source devstack/openrc admin admin# openstack catalog list
-
Keystone定义Role
-
可以为 User 分配一个或多个 Role,Horizon 的菜单为:Identity->Project->ManageMembers
-
Service 决定每个 Role 能做什么事情 Service 通过各自的 policy.json 文件对 Role 进行访问控制。 下面是 Nova 服务 /etc/nova/policy.json 中的示例:
Keystone基本架构
通过例子认识Keystone
我们通过“查询可用 image”这个实际操作让大家对这些概念建立更加感性的认识。User admin 要查看 Project 中的 image
OpenStack问题排查
安装和配置keystone
第一步:数据库创建keystone用户
MariaDB [(none)]> CREATE DATABASE keystone;
第二步:对“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@ken-node1 ~]# yum install openstack-keystone httpd mod_wsgi -y
第四步:编辑配置文件/etc/keystone/keystone.conf
在[database]下面添加下面的内容
在713行处
[root@ken-node1 etc]# vim /etc/keystone/keystone.conf ... 713 connection = mysql+pymysql://keystone:keystone@192.168.64.7/keystone
第四步:在“[token]“部分,配置Fernet UUID令牌的提供者
2832行处
[root@ken-node1 etc]# vim /etc/keystone/keystone.conf
...
2832 provider = fernet
第五步:初始化身份认证服务的数据库
[root@ken-node1 etc]# su -s /bin/sh -c "keystone-manage db_sync" keystone
第六步:初始化Fernet keys
[root@ken-node1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@ken-node1 ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
第七步:引导身份认证服务
[root@ken-node1 ~]# keystone-manage bootstrap --bootstrap-password admin \ #密码设置为admin > --bootstrap-admin-url http://192.168.64.7:35357/v3/ \ > --bootstrap-internal-url http://192.168.64.7:5000/v3/ \ > --bootstrap-public-url http://192.168.64.7:5000/v3/ \ > --bootstrap-region-id RegionOne
第八步:编辑“/etc/httpd/conf/httpd.conf“ 文件,配置“ServerName“ 选项为控制节点
ServerName 192.168.64.7
第九步:创建软连接/usr/share/keystone/wsgi-keystone.conf
[root@ken-node1 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
第十步:启动
[root@ken-node1 ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@ken-node1 ~]# systemctl start httpd
第十一步:配置管理账号
新建一个文件写入如下的内容
[root@ken-node1 ~]# cat admin export OS_USERNAME=admin export OS_PASSWORD=admin #keystone-manage bootstrap的密码 export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://192.168.64.7:35357/v3 export OS_IDENTITY_API_VERSION=3
至此,keystone身份认证部署完毕,下一节开始部署glance镜像服务!