6.1 Keystone API
Keystone API与Openstack其他服务的API类似,也是基于ReSTFul HTTP实现的。
Keystone API划分为Admin API和Public API:
- Public API不仅实现获取版本以及相应扩展信息的操作,同时包括获取Token以及Token租户信息的操作;
- Admin API主要提供服务开发者使用,不仅可以完成Public API的操作,同时对User、Tenant、Role和Service Endpoint进行管理操作。
6.2 Router
Keystone Router主要实现上层API和底层服务的映射和转换功能,包括四种Router类型。
(1) AdminRouter
负责将Admin API请求映射为相应的行为操作并转发至底层相应的服务执行;
(2) PublicRouter
与AdminRouter类似;
(3) PublicVersionRouter
对系统版本的请求API进行映射操作;
(4) AdminVersionRouter
与PublicVersionRouter类似。
6.3 Services
Keystone Service接收上层不同Router发来的操作请求,并根据不同后端驱动完成相应操作,主要包括四种类型;
(1) Identity Service
Identity Service提供关于用户和用户组的授权认证及相关数据。
Keystone-10.0.0支持ldap.core.Identity,Sql.Identity两种后端驱动,系统默认的是Sql.Identity;
Users:
用户这一概念在openstack中实际上是用来标识一个使用者(an individual API consumer)
一个用户必须被一个具体的domain拥有
所有的用户名不是全局唯一的,在同一个domain中用户名才唯一
Groups:
用户组是一个包含了一系列用户的容器,一个group必须被一个具体的domain拥有
所有的组名不是全局唯一的,在同一domain种组名才唯一
(2) Resource Service
Resouse服务提供关于projects和domains的数据
projects Projects(在v2.0中称之为Tenants) 在openstack中project代表资源的结合 一个project必须被一个具体的domain所拥有 所有的project都不是全局唯一的,仅仅在一个domain中project唯一 新建一个project没有指定domain,它将被添加到默认的domain中即default Domains Domains是一个更高级别的包含n个projects-users-groups的容器。 默认的Domains名为Default