您现在的位置 >> Hadoop教程 >> Hadoop实战 >> 专题  
 

openstack之role篇

【作者:Hadoop实战专家】【关键词:用户 创建 】 【点击:27124次】【2013-12-0】
从《openstack之tenant篇》我们知道,一个用户可以同时属于多个tenant,根据openstack.org里对role的定义,role规定了一个用户能够实现的行为。 test2用户可以看到tenant1下的instance。 user2用户可以将user1用户创建的instance删除,因为这个instance在tenant1中。  

相关热门搜索:hadoop 用户管理 hadoop用户 hadoop 用户制定类

大数据标签:bigdata

问题导读:
1、什么是role
2、如何通过role创建用户

一、role简介

从《openstack之tenant篇》我们知道,一个用户可以同时属于多个tenant,根据openstack.org里对role的定义,role规定了一个用户能够实现的行为。这个定于似乎稍显神秘,其实从管理用户使用的角度来说,role是和tenant息息相关的,一个用户想要加入另一个tenant,必须借助于role来完成,而由于tenant规定了其成员的行为规范,所以role也间接的起到了对于用户行为的规定。

二、role基本操作

与user,tenant等一样,role的操作也无怪乎创建,更新,删除,列举等:

列举:

# keystone role-list

创建:

# keystone role-create

删除:

# keystonerole-delete

... 等等,由于太过简单,这里不再说明。

三、通过role操作用户

下面着重介绍通过role将一个用户加入到另一个tenant的小魔法。

首先,创建两个tenant, 分别命名为tenant1和tenant2(注意创建tenant,user, role的keystone命令必须有administrator权限,这里对所有administrator操作忽略相关用户/密码/tenant的声明):

# keystone tenant-create --name tenant1--enabled true

# keystone tenant-create --name tenant2--enabled true

为tenant1创建用户user1, 为tenant2创建用户user2:

# keystone user-create --name user1--tenant-id  --pass password --enabled true

# keystone user-create --name user2--tenant-id  --pass password --enabled true

先不进行role操作,用user1用户创建一个instance:

# nova --os-username user1--os-passwordpassword --os-tenant-name tenant1 boot test --image"cb79a458-169d-413e-89d0-02bcae61569a" --flavor 1

#nova --os_username user1 --os_passwordpassword --os_tenant_name tenant1 list

+--------------------------------------+-------+--------+---------------------------+

| ID                                   | Name  | Status | Networks                  |

+--------------------------------------+-------+--------+---------------------------+

| 88bc939b-e29e-44ee-9f09-ec45a93ee6c4 | test| ACTIVE | nova_fixed=192.168.123.65 |

+--------------------------------------+-------+--------+---------------------------+

这时候,用user2用户登录,是无法对user1用户创建的instance进行操作的。

#nova --os_username user2 --os_passwordpassword --os_tenant_name tenant2 list

--  --

创建role test:

keystone role-create --name test

+----------+----------------------------------+

| Property |              Value               |

+----------+----------------------------------+

|   id    |2493283f09c1475198f2337a47aa398f |

|  name   |              test               |

+----------+----------------------------------+

通过role test将user2用户加入到名为tenant1的tenant中:

# keystone user-role-add --user-id7b32f4fc92704947802d2eca95edff0d --role-id 2493283f09c1475198f2337a47aa398f--tenant-id 0647347fa21d4221b0197cd282465a00

其中7b32f4fc92704947802d2eca95edff0d是user2的id,0647347fa21d4221b0197cd282465a00是tenant1的id。

这样,就把user2用户加入到了tenant1。

#nova --os_username user2 --os_passwordpassword --os_tenant_name tenant1 list

+--------------------------------------+-------+--------+---------------------------+

| ID                                   | Name  | Status | Networks                  |

+--------------------------------------+-------+--------+---------------------------+

| 88bc939b-e29e-44ee-9f09-ec45a93ee6c4 |test | ACTIVE | nova_fixed=192.168.123.65 |

+--------------------------------------+-------+--------+---------------------------+

test2用户可以看到tenant1下的instance。

# nova --os_username user2 --os_passwordpassword --os_tenant_name tenant1 delete 88bc939b-e29e-44ee-9f09-ec45a93ee6c4

user2用户可以将user1用户创建的instance删除,因为这个instance在tenant1中。当然,对于tenant1内的资源,user2用户也必须用tenant1内的身份去访问,这就是我们在上边的命令中定义--os_tenant_name为tenant1的原因。

唯一例外的是admin tenant内的admin用户,因为这是一个administrator用户,所以用这个用户可以对所有tenant内的instance进行查看、更新、删除等操作。此外,admin用户缺省也只能看到自身tenant内的instance,如果想要看到其他tanent内的instance,需要加上参数--all_tenants,也就是:

nova list --all_tenants

不过,略显奇怪的是,通过命令:

# keystone user-role-list --user-id7b32f4fc92704947802d2eca95edff0d

得不到任何用户和role的关系输出,这个命令到底有什么作用,尚待研究。

大数据系列相关文章:

最新评论
johnny2014-09-10 10:40:47
和我提示一样
王二宝_麦兜2014-09-09 02:58:55
2、负责公司大数据产品的现场部署、调优和维护;
低调生活2014-09-08 06:47:10
存入hdfs时候能进行分区?
安和桥2014-09-07 08:17:59
重启啥啊?
寂寞的夜2014-09-06 09:43:33
反正买的也不多
 
  • Hadoop生态系统资料推荐