Keystone详解
一 什么是KeyStone
KeyStone是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证,令牌发放和校验,服务列表,用户权限定义等。
二 KeyStone in OpenStack
三 基本概念
User(用户)
用于身份认证,一个用户可以关联多个租户。
Tenant(租户)
相当于用户组的概念。一个租户可以容纳多个用户。
Role(角色)
关联到“用户-租户对”的元数据。可以关联到多个“用户-租户对”
Token(令牌)
用于验证用户或者“用户-租户对”的请求是否合法。
Service(服务)
服务类型和名称。
Endpoint(端点)
服务额实例(URL入口)
四 用户-角色-服务交互图
五 基本架构
六 Backend
七 验证流程
八创建虚拟机流程
九 Keystone work flow
十 流程解释
1 用户向keystone发送用户名和密码,通过验证后,keystone会返回一个临时token和一个service catalog列表。
2 用户用这个临时token向catalog列表中keystone的endpoint请求用户对应的tenant信息,keystone验证token通过后会返回对于tenant列表。
3 用户从列表中选取tenant,再次向keystone请求,keystone验证通过后,返回与该tenant相关的catalog信息和token。
4 用户用该token以及tenant/user信息向catalog中navo服务器端口请求开启虚拟服务。nova向keystone请求验证:a.token是否合法?b.这个租户/用户是否有权限来向nova请求服务?
5 用户返回给nova:a.租户-用户具备访问nova的权限。b.token合法。c.token属于该租户-用户。
6 nova根据自己的规则判断用户是否具备开启虚拟机的权限,如果具备,启动虚拟机。并向用户报告状态。
十一 Keystone安装
Keystone包安装
Keystone配置
KeyStone数据库初始化
Keystone服务启动
十二 KeyStone CLI使用
Keystone:包含一个命令行接口,可以与Keystone API交互以管理keystone和相关服务。
Keystone-all:用于验证的,面向管理员和用户的API。
Keystone-manage:管理keystone的命令行接口,用于管理与keystone相连接的数据库。
1 创建租户
keystone tenant-create --name <String> --description <String>
2 创建用户
keystone user-create --name <String> --tenant-id 637856874 --pass 111111 --email [email protected]
3 创建角色
keystone role-create --name <role_name>
4 绑定角色
keystone --os-username <String> --os-passwork 111111 --os-tenant-name <String> --os-auth-url "http://localhost:35357/v2.0" tenant-list
keystone user-role-list --user <String> --tenant <String>
keystone user-role-add --user <String> --role admin --tenant <String>
5 创建服务
6 查询服务列表
十三 调试工具
Curl
Firefox plugin
restclient-ui-3.4-jar