Keystone是OpenStack中的身份验证服务,同时它也同Nova, Cinder, Glance,Neutron一样是OpenStack的核心组件。Keystone为其他组件提供统一的身份验证以及服务授权。Keystone的API目前有v2.0和v3.0两个版本,官方目前推荐使用v3.0的版本。由于Keystone中涉及很多的概念,例如 domain,project,user等等,本文旨在介绍相关的概念及其之间在组织结构上的关系。
域(Domains):域是Keystone中的一个全局概念,域的名字在Keystone中必须是全局唯一的,Keystone提供一个名为‘Default’的默认域。域可以包括多个Projects(项目/租户),Users(用户),Groups(组),Roles(角色)。
Projects(项目/租户):Keystone在v3.0的版本开始将v2.0中的Tenant(租户)改为了Project(项目),我认为这更符合我们在实际使用中的认知。项目必须属于某个域,所以在域内的项目名称必须是唯一的,但是不同的域内可以有相同名称的项目名。如果项目没有分配指定域,那么会自动分配到默认域中。项目是资源的集合,也就是说可以对项目所能使用的资源进行限制,包括vCPU,Memory,vDisk,Floating IP等等。
用户(Users):即最终Keystone的使用者,可以是人,服务或者系统,用户必须属于某个特定的域。