OpenStack基本概念Domain,Project,User,Role

Posted by 云谷计算 on January 16, 2018

Domain,project,user,role的概念和关系

  • Domain - 表示 project 和 user 的集合,在公有云或者私有云中常常表示一个客户
  • Group - 一个domain 中的部分用户的集合
  • Project - IT基础设施资源的集合,比如虚机,卷,镜像等
  • Role - 角色,表示一个 user 对一个 project resource 的权限

说明: 说明:

  • Domain 可以认为是 project,user,group 的 namespace。 一个 domain 内,这些元素的名称不可以重复,但是在两个不同的domain内,它们的名称可以重复。因此,在确定这些元素时,需要同时使用它们的名称和它们的 domain 的 id 或者 name。
  • Group 是一个 domain 部分 user 的集合,其目的是为了方便分配 role。给一个 group 分配 role,结果会给 group 内的所有 users 分配这个 role。 Role 是全局(global)的,因此在一个 keystone 管辖范围内其名称必须唯一。 role 的名称没有意义,其意义在于 policy.json 文件根据 role 的名称所指定的允许进行的操作。

简单地,role 可以只有 admin 和 member 两个,前者表示管理员,后者表示普通用户。但是,结合 domain 和 project 的限定,admin 可以分为 cloud admin,domain admin 和 project admin。

  • policy.json 文件中定义了 role 对某种类型的资源所能进行的操作,比如允许 cloud admin 创建 domain,允许所有用户创建卷等
  • project 是资源的集合,其中有一类特殊的project 是 admin project。通过指定 admin_project_domain_name 和 admin_project_name 来确定一个 admin project,然后该project 中的 admin 用户即是 cloud admin。

OpenStack Mitaka默认安装的Domain, Project, User, Group, Role

如果按OpenStack的安装手册默认安装,我们会得到如下的拓扑视图: Domain:

  • default

Project:

  • admin
  • service
  • demo

Role

  • admin
  • user

User:

  • glance
  • nova
  • neutron
  • user

其中,系统用户glance, nova, neutron在每个服务初始化安装的时候,被如下的命令与service project及admin role关联起来:

openstack role add --project service --user glance admin

而演示用户demo会和demo project及user role关联起来:

openstack role add --project demo --user demo user