资源和权限体系
Keystone的资源和权限体系由项目,角色和权限这三类资源定义。项目是资源的归属,用户要使用资源,必须以特定的角色加入相应的项目。角色和策略(policy)关联,定义了用户的权限。
项目(Projects)
项目是资源的owner,所有虚拟资源都要归属于一个项目。用户或者用户的组加入项目后,在获得权限后才能授权访问资源。
项目一般用Project指代,但是为了和Keystone v2 API兼容,偶尔也用Tenant指代。
属性
| 字段 | 说明 |
|---|---|
| id | 项目ID |
| name | 项目名称 |
| domain_id | 项目归属的域ID |
| project_domain | 项目归属域的名称 |
限制
v3.7之前,用户或者组只能加入同一个域下的项目,或者default域下的项目。Default域下的项目可以加入任意域的用户或者组,非Default域下的项目只能加入同域的用户或者组。v3.7之后,该限制解除,任意域的用或者组可以加入任意域下的项目。
项目下在其他服务有外部资源的无法删除。他服务的资源,默认每15分钟拉取一次, 通过参数设置:fetch_project_resource_count_interval_seconds。
包含用户和组的项目无法删除
system项目无法删除和修改
项目名字空间
项目的名字空间为全局,也就是项目的名称全局唯一
预置项目
系统初始化时,预置项目system,作为sysadmin的项目
角色(Roles)
角色是用户加入项目的 角色。用户的角色确定了用户的权限。
属性
角色的属性如下:
| 字段 | 说明 |
|---|---|
| id | ID,不可修改 |
| name | 名称,可修改 |
| public_scope | 共享范围,可选择值为system(全局共享),domain(域共享) |
| policies | 该角色对应的各个级别的权限名称的列表 |
| match_policies | 该角色对应的所有权限名称的列表 |
限制
一个域下的用户,只能使用项目所在域的角色或者共享的角色加入项目
一个被用户或者组使用的角色不能被删除
共享的角色不能被删除
admin角色不能被删除
角色名字空间
角色的名字空间为全局,也就是角色的名称全局唯一
预置角色
系统初始化时,预置了admin的角色,作为系统用户syadmin加入system项目的缺省角色
同时,在系统初始化完成后,安装程序会自动创建如下的共享项目,以方便用户:
| 角色名称 | 是否共享 |
|---|