让IAM用户只能看到被授权的桶
场景介绍
本章节介绍如何通过企业项目为华为云账号下的某个IAM用户配置指定桶的权限,使其只能在控制台看到授权的桶并且拥有桶的指定权限,无法看到账号下的其他桶,实现桶资源的隔离。
本案例将指定IAM用户test-user只能在控制台看到名为example的桶,并且只拥有上传权限(obs:object:PutObject)、列举桶内权限(obs:bucket:ListBucket)和列举桶权限(obs:bucket:ListAllMyBuckets),通过这些权限test-user用户可以完成上传对象的操作。
推荐配置方法
企业项目
配置须知
- 如果同时在IAM和企业项目中针对某个动作(Action)为某IAM用户进行了授权,授权结果以IAM为准。
1、如果在IAM和企业项目同时配置了列举桶权限(obs:bucket:ListAllMyBuckets),最终结果会列举出所有桶,包括用户所属企业项目之外的桶。
2、针对上传权限(obs:object:PutObject),如果在IAM中配置Allow,企业项目中配置deny,最终结果为Allow,即允许上传对象。
- 如果在IAM中为某IAM用户配置OBS Viewer权限,并且将其所在用户组加入至企业项目中,则IAM用户登录后将会出现无法列举桶的情况。
- 配置完成进入桶后仍然会出现无权限相关提示,属于正常现象,因为控制台还调用了其他高级配置的接口,但此时已可以正常完成读写模式中允许的操作。
配置步骤
- 登录控制台,单击页面右上方的“企业 > 项目管理”。参考创建企业项目,使用授权账号创建一个名为test-project的企业项目。
- 参考为企业项目迁入资源,将目标桶example-001迁入步骤1中test-project的企业项目中。
如果需要授权多个桶,则将需要的桶都迁移到企业项目中即可。
图1 将目标桶迁入目标企业项目
- 选择“权限管理 ”。单击“用户授权”。
图2 为企业用户添加授权
- 进入IAM用户界面,找到目标用户test-user。
图3 找到目标IAM用户
- 单击“操作”列下的“授权”,进入授权页面。选择“直接给用户授权(适用于企业项目授权)”。
图4 选择直接给用户授权
- 对目标用户test-user设置策略,使该用户在test-project企业项目中拥有策略定义的权限。
- 选择策略。您可以在所选策略的下拉框中选择“自定义策略”对已有策略进行筛选,也可以通过右侧“新建策略”创建自定义策略。
- 勾选待添加的策略。
图6 添加自定义策略
- 单击“下一步”。将目标用户test-user(未加入任何用户组)添加至该企业项目中。
图7 将目标用户添加至企业项目中
- 单击“确定”,完成权限配置。添加成功的权限会展示在“权限管理 > 授权管理”的“企业项目视图”列表中。
图8 添加完成
完成企业项目权限配置后,无需再配置IAM自定义策略或系统策略。
验证
- 使用目标用户test-user登录OBS控制台。
- 可以看到桶列表中只有名为example-001的桶。
图9 验证权限配置结果
- 进入目标桶,单击左侧导航栏“对象”。可以看到桶中的其他对象。
图10 进入桶example-001
配置完成进入桶后仍然会出现无权限相关提示,属于正常现象,因为控制台还调用了其他高级配置的接口,但此时已可以正常完成读写模式中允许的操作。
- 上传文件111.txt至桶example-001中,可以上传成功。表示权限配置成功。
图11 上传文件
如果需要配置其他指定的权限完成其他操作,如下载对象或删除对象等,可前往“账号名 > 统一身份认证 > 权限”页面配置的自定义策略中继续配置相关权限即可。