《大话华为云OBS+IAM权限控制》连载 (二十三):通过EPS项目的用户和资源管理,可实现让指定用户只可见部分指定资源的效果
现实的华为云企业客户往往有如下的需求:指派“专门的管理人员”,将企业所购买的华为云服务资源分配给企业的“各个业务团队”,预期各个业务团队仅能“看见”和“访问”分配给该团队的资源。
我们以OBS服务资源为例,将企业客户的这个需求,初步可以在华为云平台上使用IAM用户管理机制 和 IAM的OBS权限控制机制,进行如下的方案分解:
专门的管理人员——掌握该企业在华为云上的IAM管理员账号
各个业务团队——该企业在华为云账号(Tenant)下的各个IAM用户组
业务团队仅能“访问”分配给该团队的OBS资源——为每个团队对应的IAM用户组单独创建一个IAM的OBS访问权限, 控制该用户组成员只能对目标OBS桶和对象进行指定的读写操作
——但是,预期“每个业务团队仅能“看见”(即列举出)分配给该团队的OBS桶”这个需求,仅仅依靠IAM的用户和权限控制手段是无法做到的,因为IAM的OBS权限控制策略中,虽然包含直接的 ListAllMyBuckets 操作项(可参见连载十七),但是该操作项的勾选只能够简单粗暴地“允许”或“拒绝”用户列举所有桶的请求,并且默认情况下,一旦“允许”用户执行列举桶操作,用户是能够列举出该企业购买的所有OBS桶的
下面以OBS服务资源为例,进行一个简单的场景举例说明:
云企业购买了很多OBS桶,其中包括两个广州的桶:guangzhou-test-2 和 zhx-bucket-guangzhou-1
IAM用户 user_1 属于IAM用户组 user_group_1,用户组权限为 OBS Viewer(包含ListAllMyBuckets权限),IAM管理员希望 user_1 只能够列举出广州的这两个目标OBS桶(guangzhou-test-2 和 zhx-bucket-guangzhou-1),而不想让 user_1 用户看到其他那些OBS桶
默认情况下,仅通过IAM权限手段(控制 ListAllMyBuckets 选项是否勾选),只能够“允许”或“拒绝”user_1 列举他可见的OBS桶——即只能“全可列举”或“全不可列举”,而无法实现“可部分列举” 。一旦开启了ListAllMyBuckets操作权限,user_1 能够列举出来的OBS桶很多,这与预期是不符的
根据连载(二十)中所描述的EPS项目所属的非admin用户组的“人”,可见的资源集合仅限于该EPS项目所拥有的“物”,user_1 可见的OBS桶其实就是 user_group_1 这个IAM用户组所属的EPS项目所拥有的OBS桶,而又因为 user_group_1 用户组默认属于default企业项目,所以 user_1 能够列举出来的OBS桶范围才会超出预期。要解决这个问题,可以通过新建EPS项目的方式来解决,步骤如下:
新建一个EPS项目 test-project,然后将目标的两个目标OBS桶资源(guangzhou-test-2 和 zhx-bucket-guangzhou-1)迁入到新项目
然后将 user_1 所在的 user_group_1 用户组添加到新建的EPS项目 test-project,并在 test-project 项目中授权给 user_group_1 用户组“OBS Viewer”这个系统策略,允许用户组中的用户列举其可见的所有OBS桶
为确保IAM权限配置生效,等待一段时间后,再次用IAM用户 user_1 登录OBS控制台,此时列举出来的OBS桶就只有两个广州的目标桶了
对于所有可执行列举操作的云服务资源(包括OBS、ECS等),都可以类似地通过IAM+EPS结合的手段,实现“限制用户仅可列举出部分资源”的需求
- 点赞
- 收藏
- 关注作者
评论(0)