基于身份策略的授权(IAM新版)
OBS服务支持基于身份策略授权的授权模型。如表1所示,包括了OBS基于身份策略授权中的所有系统策略。身份策略授权的系统策略,和角色与策略授权的系统策略并不互通。例如,如果您使用基于身份策略的授权方式给用户授权,那么配置策略时,策略中的action需要使用基于身份策略的授权项,并使用基于身份策略的条件键和运算符。
| 系统策略名称 | 描述 | 策略类别 |
|---|---|---|
| OBSFullAccessPolicy | 对象存储服务(OBS)管理员权限。 | 系统身份策略 |
| OBSBucketsViewerPolicy | 只有对象存储服务(OBS)获取桶列表、获取桶元数据、获取桶区域位置,无其他权限。 | 系统身份策略 |
| OBSReadOnlyPolicy | 只有对象存储服务(OBS)获取桶列表、获取桶元数据、列举桶内对象、查询桶位置权限,无其他权限。 | 系统身份策略 |
| OBSBasicOperationsPolicy | 具有对象存储服务(OBS)查看桶列表、获取桶元数据、列举桶内对象、查询桶位置、上传对象、获取对象、删除对象、获取对象ACL等对象基本操作权限。 | 系统身份策略 |
| OBSAssumeLoggingPolicy | 具有OBS服务桶日志委托上传对象相关权限。 | 系统身份策略 |
| OBSConsoleFullAccessPolicy | 具有对象存储服务(OBS)管理控制台使用所有权限。 | 系统身份策略 |
表2列出了OBS常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。
| 操作名称 | OBSFullAccessPolicy | OBSBucketsViewerPolicy | OBSReadOnlyPolicy | OBSBasicOperationsPolicy | OBSAssumeLoggingPolicy | OBSConsoleFullAccessPolicy |
|---|---|---|---|---|---|---|
| 获取桶列表 | 可以 | 可以 | 可以 | 可以 | 不可以 | 可以 |
| 创建桶 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 列举桶内对象 | 可以 | 不可以 | 可以 | 可以 | 不可以 | 可以 |
| 获取桶元数据 | 可以 | 可以 | 可以 | 可以 | 不可以 | 可以 |
| 获取桶区域位置 | 可以 | 可以 | 可以 | 可以 | 不可以 | 可以 |
| 删除桶 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶ACL | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶ACL | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶日志管理配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶日志管理配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的生命周期配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的生命周期配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶的生命周期配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的多版本状态 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的多版本状态 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的事件通知 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的事件通知 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶默认存储类型 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶默认存储类型 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的跨区域复制配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的跨区域复制配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶的跨区域复制配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶标签 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶标签 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶标签 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶配额 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶配额 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶存量信息 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶清单 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶清单 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 列举桶清单 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶清单 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的自定义域名 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的自定义域名 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶的自定义域名 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的加密配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的加密配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶的加密配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶归档存储对象直读策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶归档存储对象直读策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶归档存储对象直读策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置镜像回源规则 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取镜像回源规则 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除镜像回源规则 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置DIS通知策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取DIS通知策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除DIS通知策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置在线解压策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取在线解压策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除在线解压策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 配置桶级默认WORM策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶级默认WORM策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的网站配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的网站配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶的网站配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 设置桶的CORS配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取桶的CORS配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 删除桶的CORS配置 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| PUT上传 | 可以 | 不可以 | 不可以 | 可以 | 可以 | 可以 |
| POST上传 | 可以 | 不可以 | 不可以 | 可以 | 可以 | 可以 |
| 复制对象 | 可以 | 不可以 | 不可以 | 可以 | 可以 | 可以 |
| 下载对象 | 可以 | 不可以 | 不可以 | 可以 | 不可以 | 可以 |
| 获取对象元数据 | 可以 | 不可以 | 不可以 | 可以 | 不可以 | 可以 |
| 删除对象 | 可以 | 不可以 | 不可以 | 可以 | 不可以 | 可以 |
| 批量删除对象 | 可以 | 不可以 | 不可以 | 可以 | 不可以 | 可以 |
| 恢复归档存储或深度归档存储对象 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 追加写对象 | 可以 | 不可以 | 不可以 | 可以 | 可以 | 可以 |
| 设置对象ACL | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 获取对象ACL | 可以 | 不可以 | 不可以 | 可以 | 不可以 | 可以 |
| 修改对象元数据 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 修改写对象 | 可以 | 不可以 | 不可以 | 不可以 | 可以 | 可以 |
| 截断对象 | 可以 | 不可以 | 不可以 | 不可以 | 可以 | 可以 |
| 重命名对象 | 可以 | 不可以 | 不可以 | 不可以 | 可以 | 可以 |
| 配置对象级WORM保护策略 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 列举桶中已初始化多段任务 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 初始化上传段任务 | 可以 | 不可以 | 不可以 | 可以 | 可以 | 可以 |
| 上传段 | 可以 | 不可以 | 不可以 | 可以 | 可以 | 可以 |
| 拷贝段 | 可以 | 不可以 | 不可以 | 不可以 | 不可以 | 可以 |
| 列举已上传未合并的段 | 可以 | 不可以 | 不可以 | 可以 | 不可以 | 可以 |
| 合并段 | 可以 | 不可以 | 不可以 | 可以 | 可以 | 可以 |
| 取消多段上传任务 | 可以 | 不可以 | 不可以 | 可以 | 不可以 | 可以 |
OBS自定义身份策略样例
- 示例1:给用户授予OBS的所有权限
此策略表示用户可以对OBS进行任何操作,使用方式包括API、SDK、控制台及工具。
由于用户登录OBS控制台时,会访问一些其他服务的资源,如CTS审计信息,CDN加速域名,KMS密钥等。因此除了配置OBS的权限外,还需要配置其他服务的访问权限。其中CDN属于全局服务,CTS、KMS等属于区域级服务,需要根据您实际使用到的服务和区域分别在全局项目和对应区域项目中配置Tenant Guest权限。{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "obs:*:*" ] } ] } - 示例2:给用户授予桶内所有对象的列举和下载权限 此策略表示用户可以对桶obs-example下的所有对象进行列举和下载。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "obs:object:getObject", "obs:bucket:listBucket" ], "Resource": [ "obs:*:*:object:obs-example/*", "obs:*:*:bucket:obs-example" ] } ] } - 示例3:给用户授予桶内对象的列举和指定目录对象的下载权限 此策略表示用户只能下载桶obs-example中“my-project/”目录下的所有对象,其他目录下的对象虽然可以列举,但无法下载。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "obs:object:getObject", "obs:bucket:listBucket" ], "Resource": [ "obs:*:*:object:obs-example/my-project/*", "obs:*:*:bucket:obs-example" ] } ] } - 示例4:给用户授予桶的读写权限(限定目录) 此策略表示用户可以对桶obs-example中“my-project”目录下的所有的对象进行列举、下载、上传和删除。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "obs:object:GetObject", "obs:object:ListMultipartUploadParts", "obs:bucket:listBucket", "obs:object:deleteObject", "obs:object:putObject" ], "Resource": [ "obs:*:*:object:obs-example/my-project/*", "obs:*:*:bucket:obs-example" ] } ] } - 示例5:给用户授予桶的所有权限 此策略表示用户可以对桶obs-example进行任何操作。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "obs:*:*" ], "Resource": [ "obs:*:*:bucket:obs-example", "obs:*:*:object:obs-example/*" ] } ] } - 示例6:拒绝用户上传对象
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。
如果您给用户授予OBS OperateAccess的系统策略,但不希望用户拥有OBS OperateAccess中定义的上传对象的权限,您可以创建一条拒绝上传对象的自定义策略,然后同时将OBS OperateAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以执行除了上传对象外OBS OperateAccess允许的所有操作。拒绝策略示例如下:
{ "Version": "5.0", "Statement": [ { "Effect": "Deny", "Action": [ "obs:object:PutObject" ] } ] } - 示例7:给用户授予指定桶的修改桶存储类别权限以及桶内指定对象的删除权限
此策略表示用户可以修改桶obs-example的存储类别,以及对桶obs-example中“my-object.txt”对象进行删除。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "obs:bucket:listAllMyBuckets", "obs:bucket:listBucket" ] }, { "Effect": "Allow", "Action": [ "obs:object:deleteObject", "obs:bucket:putBucketStoragePolicy" ], "Resource": [ "OBS:*:*:object:obs-example/my-object.txt", "OBS:*:*:bucket:obs-example" ] } ] }