Openstack租户、用户、角色的概念与管理Openst

Openstack租户(项目)、用户、角色的概念与管理


这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战


Openstack租户(项目)、用户、角色的概念与管理

0x00.概念

1.用户(User)

表示拥有用户名,密码,邮箱等帐号信息的自然人。创建一个用户名为“hui”的用户如下:

$ keystone user-create –name=hui –pass=password –mail=hui@example.com
复制代码

openstack官网定义User为“In OpenStack Identity, entities represent individual API consumers and are owned by a specific domain. In OpenStack Compute, a user can be associated with roles, projects, or both”
关于用户需要明白以下:

1)一个用户就是一个有身份验证信息的API消费实体;

2)一个用户可以属于多个租户/项目/组织, 角色;

2.租户(Tenant)

租户可以理解为一个项目,团队或组织。你必须指定一个相应的租户(tenant)才可以申请OpenStack服务,例如你指定以某租户申请Compute服务来查询当前运行的实例列表,则你将收到的是该租户的运行实例列表,而无法看到其它租户的运行实例列表。在M版之后租户概念提的少,可以理解成就是项目:可以理解为一个用户资源组,这个用户资源组包含多个用户组成的用户组和一些可供访问的资源集合,相应的资源集合只有这个用户组才有权限访问。

创建一个名为“acm”租户的命令如下:

$ keystone tenant-create –name=acm
复制代码

openstack官网定义Tenant为"A group of users; used to isolate access to Compute resources. An alternative term for a project”

关于租户需要明白以下几点:

1)【修改前】租户相当于一个用户组,包含多个用户。

**注[updated on 2016/07/25]:以上这句话不是很准确,经核实后修改如下。

2)【修改后】租户也可以理解为一个项目(Project)。 在API 3之前的版本,使用tenant, API 3之后的版本,更多的使用project。目前的openstack版本(Mitaka (April 2016))中,更多的使用的是peoject(项目)这个词,而不倾向于使用tenatn(租户)。Tenant其实是各个服务中的一些可以访问的资源集合。这些资源集合可供多个用户使用,这也是为什么用户默认的总是绑定到某些tenant上。

3)用户通过租户访问计算管理资源(这里的计算管理资源可以理解为openstack服务),也就是说必须指定一个相应的租户才可以申请openstack服务。

4)各租户相互独立,在当前租户下无法查看其他租户信息。

3.角色(Role)

代表特定的租户中的用户用户操作权限,可以使用如下命令创建角色:

$ keystone role-create –name=compute-user
复制代码

可以理解租户为那些使用你云环境的客户,这些客户可以是一个项目组、工作组、公司,这些客户中会建立不同的帐号(用户)及其对应的权限(角色)。

openstack官网定义role为“A personality that a user assumes to perform a specific set of operations. A role includes a set of rights and privileges. A user assuming that role inherits those rights and privileges.”

关于角色需要明白以下:
1)角色是可执行一特定系列操作的用户特性,角色规定了用户在某个租户中的一系列权利和特权。
2)一般默认有超级管理员权限admin和普通管理员权限member。

0x01.Web页面管理

首先登录dashboard管理界面,此处使用的admin管理员账号登陆的OpenStack Dashboard。

1.新建一个租户(项目)

身份管理》项目》创建项目
在这里插入图片描述

点击创建项目后。在弹出的页面上,依次设置项目信息(必填)、项目成员、项目组、配额信息(必填),非必填项为项目成员、项目组可以之后按需进行修改。

(1)项目信息

在这里插入图片描述

(2)配额

在这里插入图片描述
配额修改完成后,点击页面右下角的创建项目按钮即可。

此时刷新,身份管理》项目的列表后,会发增加了一个刚才新创建的项目。
在这里插入图片描述

2.新建一个用户

身份管理》项目》创建用户
在这里插入图片描述
点击创建用户后。在弹出的页面上,依次设置用户名(必填)、描述、邮箱、密码(必填)、确认密码(必填)、主项目、角色,非必填项为描述、邮箱、主项目、角色,这几项可以在之后按需进行修改。

(1)用户信息

在这里插入图片描述

这里我们将主项目选择为上一步新建的项目,并且在角色上选择member
填写完成后,点击页面右下角的创建用户按钮即可。

此时刷新,身份管理》用户的列表后,会发增加了一个刚才新创建的用户。

(2)更新用户

如果想更换,可以在用户列表的用户编辑框进行修改,更新用户。
在这里插入图片描述

(3)查看项目成员

在项目列表中,在新建的项目中,点击管理成员,发现新建的用户位于该项目中。

3.新建一个角色

【新建角色为可选非必要操作】
身份管理》项目》创建角色
在这里插入图片描述

4.后续步骤

如此完成了一个新租户的项目初始环境,接下来就是给租户建立内网网络环境。此处不做描述。

0x03.命令方式

0.首先创建domain

[root@cc01 ~]# openstack domain create --description "Default Domain" default
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Default Domain                   |
| enabled     | True                             |
| id          | 011fbf8c04f1479ab1a4e49b019b22d1 |
| name        | default                          |
+-------------+----------------------------------+
复制代码

1.租户管理

(1)创建租户

[root@cc10 ~]# openstack project create --domain default --description "hzbtest Project" hzbtest
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | hzbtest Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | a18a50c3e0204fd9841751f0dbe93d66 |
| is_domain   | False                            |
| name        | hzbtest                          |
| parent_id   | default                          |
+-------------+----------------------------------+
复制代码

(2)修改租户属性

(以修改enabled和name为例子)

openstack project set --disable --name=hzbtest2 hzbtest
复制代码
[root@cc10 ~]# openstack project show hzbtest2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | hzbtest Project                  |
| domain_id   | default                          |
| enabled     | False                            |
| id          | a18a50c3e0204fd9841751f0dbe93d66 |
| is_domain   | False                            |
| name        | hzbtest2                         |
| parent_id   | default                          |
+-------------+----------------------------------+
复制代码

(3)删除租户

openstack project delete hzbtest2
复制代码

(4)查询租户列表

[root@cc01 ~]# openstack project list
+----------------------------------+--------------------+
| ID                               | Name               |
+----------------------------------+--------------------+  |
| 91550f3ddf5940ea9a9d17daaf6d1f5e | admin              |
复制代码

(5)查看租户详情

[root@cc01 ~]# openstack project show admin
+-------------+-----------------------------------------------+
| Field       | Value                                         |
+-------------+-----------------------------------------------+
| description | Bootstrap project for initializing the cloud. |
| domain_id   | default                                       |
| enabled     | True                                          |
| id          | 91550f3ddf5940ea9a9d17daaf6d1f5e              |
| is_domain   | False                                         |
| name        | admin                                         |
| parent_id   | default                                       |
+-------------+-----------------------------------------------+
复制代码

2.用户管理

(1)创建用户

[root@cc10 ~]# openstack user create --domain default --password-prompt hzbtest
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | default                          |
| enabled   | True                             |
| id        | a51a551644ed42ad84d7580be91f7fae |
| name      | hzbtest                          |
+-----------+----------------------------------+
复制代码

(2)查看用户详情

[root@cc10 ~]# openstack user show hzbtest
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | default                          |
| enabled   | True                             |
| id        | a51a551644ed42ad84d7580be91f7fae |
| name      | hzbtest                          |
+-----------+----------------------------------+
复制代码

(3)更新用户信息

usage: openstack user set [-h] [--name <name>] [--project <project>]
                          [--project-domain <project-domain>]
                          [--password <password>] [--password-prompt]
                          [--email <email-address>]
                          [--description <description>] [--enable | --disable]
                          <user>
复制代码
[root@cc10 ~]# openstack user set --email=hzbtest@qq.com --description=xxx --password=12345678 hzbtest
[root@cc10 ~]# openstack user show hzbtest
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | xxx                              |
| domain_id   | default                          |
| email       | hzbtest@qq.com                   |
| enabled     | True                             |
| id          | a51a551644ed42ad84d7580be91f7fae |
| name        | hzbtest                          |
+-------------+----------------------------------+
复制代码

(4)删除用户

openstack user delete hzbtest
复制代码

(5)查询用户列表

[root@cc01 ~]# openstack user list
+----------------------------------+---------------------------+
| ID                               | Name                      |
+----------------------------------+---------------------------+
| 01eef5e310e141cc8a3687dabc643676 | test_user                 |
复制代码

(6)查询某一租户下的所有用户

[root@cc01 ~]# openstack user list --project=admin
+----------------------------------+------------------+
| ID                               | Name             |
+----------------------------------+------------------+
| f05b4e3b6585429e98f178934d71ae3e | admin            |
| 99955f8cefeb4a6f945e06ec3f424b5d | pulsar@admin.com |
| 01eef5e310e141cc8a3687dabc643676 | test_user        |
| 6e6d64905b0f419daaf424f678733dec | test123409       |
+----------------------------------+------------------+
复制代码

3.角色管理

(1)创建角色

[root@cc10 ~]# openstack role create hzb-role
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 72744157e8ad4267ae7b8ffc4c00fb03 |
| name      | hzb-role                         |
+-----------+----------------------------------+
复制代码

(2)角色相关的操作

[root@cc10 ~]# openstack role --help
Command "role" matches:
  role add
  role assignment list
  role create
  role delete
  role list
  role remove
  role set
  role show
复制代码

(3)将租户和用户加入到角色

openstack role add --project hzbtest --user hzbtest hzb-role
复制代码

(4)查看租户和用户的关系

[root@cc10 ~]# openstack role assignment list --user=hzbtest
+----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
| Role                             | User                             | Group | Project                          | Domain | Inherited |
+----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
| 72744157e8ad4267ae7b8ffc4c00fb03 | a51a551644ed42ad84d7580be91f7fae |       | a21daa122cb54ca68fdcfeaad843c081 |        | False     |
+----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
复制代码

(5)将role移除租户和用户

openstack role remove --user=hzbtest --project=hzbtest hzb-role
复制代码

0x04.参考链接

Openstack新租户开通指南
openstack租户、用户管理
openstack的用户(user), 租户(tenant), 角色(role)概念区分