keystone的概念:

keystone是openstack的组件之一,用于为openstack家族中的其他组件成员统一的认证服务,包括:身份认证、令牌的发放与校验、服务列表、用户权限定义等。


基本概念:


User:用户 -身份认证,一个用户可以关联到多个租户

Tenant(租户)-相当于用户组的概念,一个租户可以包括多个用户

role(角色)-关联到“用户-租户对”的元数据。可以关联到多个“用户-租户对”

Token(令牌)-用于验证用户或者“用户-租户对"的请求是否合法。

service(服务)-服务类型和名称。

Endpoint(端点)-某个服务的URL。


keystone在openstack的地位:

wKiom1WalvbCRYLLAALUs69TnZk576.jpg


用户-角色-服务交互图


wKioL1WamPuBWXueAAHUnU16-wE313.jpg


keystone的架构图:


wKiom1Wal2HB7Q5nAAFahWyQST4709.jpg

token:用于生成和管理Token。

Catalog:用来存储和管理service和endpoint。

identity:用来管理租户、用户、角色和验证。

policy:用来管理访问权限。(不是很理解)


keystone的验证流程:

wKiom1WamGCA0RVbAADYshM3pdM619.jpg


创建虚拟机的过程:wKioL1WamoOz8XgzAAJMGMes91c983.jpg


keystone的工作流程:


wKiom1WamRXi7NYOAAPnQbzKPQk270.jpg


解释:

1.alice向keystone发送用户名和密码,验证通过后,keystone会返回一个临时的令牌,和一个service的catalog。

2.alice提供这个临时的token,用keystone请求她所属的所有的租户列表。

3.alice从租户列表中选出tenant,再次向keystone发送请求,验证通过后返回该租户的Service Catalog和Token。

4.alice向nova-api发送创建vm请求,nova向keystone验证,Token是否合法?这个租户-用户是否有权向nova请求服务?

5.keystone返回验证信息,a:租户-用户alice有权访问nova服务;b:这个toaken合法;c:这个token属于租户-用户alice

6.nova根据自己的规则,判断用户是否具有创建虚拟机的权限。若有,就开启虚机,并将状态返回给用户alice。