更新时间:2024-04-16 GMT+08:00

桶策略和对象策略

桶和对象的拥有者

桶的拥有者是创建桶的账号。一个账号下的IAM用户创建的桶,桶拥有者为该IAM用户的父级账号。

对象的拥有者是上传对象的账号,而不是对象所属的桶的拥有者。例如,如果账号B被授予访问账号A的桶的权限,然后账号B上传一个文件到桶中,则账号B是对象的拥有者,而不是账号A。

桶策略

桶策略是作用于所配置的OBS桶及桶内对象的。OBS桶拥有者通过桶策略可为IAM用户或其他账号授权桶及桶内对象的操作权限。

桶策略的应用场景

  • 不用IAM策略控制访问权限的情况下,允许其他账号访问OBS资源,可以使用桶策略的方式授权其他账号对应的权限。
  • 当不同的桶对于不同的IAM用户有不同的访问控制需求时,需使用桶策略分别授权IAM用户不同的权限。
  • 桶拥有者允许其他账号访问自己的桶时,可使用桶策略授权其他账号对应的权限。

桶策略模板:

OBS控制台预置了八种常用典型场景的桶策略模板,用户可以使用模板创建桶策略,快速完成桶策略配置。

选择使用模板创建时,部分模板需要指定被授权用户或资源范围,您也可以在原模板基础上修改被授权用户、资源范围、模板动作以及增加桶策略执行的条件。

表1 桶策略模板

被授权用户

授权资源

模板名称

模板动作

高级设置

所有账号

整个桶(包括桶内对象)

公共读

允许所有账号(所有互联网用户)对整个桶及桶内所有对象执行以下动作:

HeadBucket(判断桶是否存在、获取桶元数据)

GetBucketLocation(获取桶位置)

GetObject(获取对象内容、获取对象元数据)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

不支持排除以上授权操作

公共读写

允许所有账号(所有互联网用户)对整个桶及桶内所有对象执行以下动作:

ListBucket(列举桶内对象、获取桶元数据)

ListBucketVersions(列举桶内多版本对象)

HeadBucket(判断桶是否存在、获取桶元数据)

GetBucketLocation(获取桶位置)

PutObject(PUT上传,POST上传,上传段,初始化上传段任务,合并段)

GetObject(获取对象内容、获取对象元数据)

ModifyObjectMetaData(修改对象元数据)

ListBucketMultipartUploads(列举多段上传任务)

ListMultipartUploadParts(列举已上传段)

AbortMultipartUpload(取消多段上传任务)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

PutObjectAcl(设置对象ACL)

GetObjectVersionAcl(获取指定版本对象ACL)

GetObjectAcl(获取对象ACL)

不支持排除以上授权操作

当前账号/其他账号/委托账号

整个桶(包括桶内对象)

桶只读

允许指定账号对整个桶及桶内所有对象执行以下动作:

Get*(所有获取操作)

List*(所有列举操作)

HeadBucket(判断桶是否存在、获取桶元数据)

不支持排除以上授权操作

桶读写

允许指定账号对整个桶及桶内所有对象执行除以下动作以外的所有动作:

DeleteBucket(删除桶)

PutBucketPolicy(设置桶策略)

PutBucketAcl(设置桶ACL)

排除以上授权操作

所有账号/当前账号/其他账号/委托账号

当前桶+指定对象

目录只读

允许所有账号(所有互联网用户)或指定账号对当前桶和桶内指定资源执行以下动作:

GetObject(获取对象内容、获取对象元数据)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

GetObjectVersionAcl(获取指定版本对象ACL)

GetObjectAcl(获取对象ACL)

ListBucket(列举桶内对象、获取桶元数据)

ListBucketVersions(列举桶内多版本对象)

HeadBucket(判断桶是否存在、获取桶元数据)

GetBucketLocation(获取桶位置)

说明:

被授权用户选择“所有账号”时,模板动作中不包含ListBucket、ListBucketVersions。

不支持排除以上授权操作

目录读写

允许所有账号(所有互联网用户)或指定账号对当前桶和桶内指定资源执行以下动作:

PutObject(PUT上传,POST上传,上传段,初始化上传段任务,合并段)

GetObject(获取对象内容、获取对象元数据)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

ModifyObjectMetaData(修改对象元数据)

ListBucketMultipartUploads(列举多段上传任务)

ListMultipartUploadParts(列举已上传段)

AbortMultipartUpload(取消多段上传任务)

GetObjectVersionAcl(获取指定版本对象ACL)

GetObjectAcl(获取对象ACL)

PutObjectAcl(设置对象ACL)

ListBucket(列举桶内对象、获取桶元数据)

ListBucketVersions(列举桶内多版本对象)

HeadBucket(判断桶是否存在、获取桶元数据)

GetBucketLocation(获取桶位置)

不支持排除以上授权操作

所有账号/当前账号/其他账号/委托账号

指定对象

对象只读

允许所有账号(所有互联网用户)或指定账号对桶内指定资源执行以下动作:

GetObject(获取对象内容、获取对象元数据)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

GetObjectVersionAcl(获取指定版本对象ACL)

GetObjectAcl(获取对象ACL)

不支持排除以上授权操作

对象读写

允许所有账号(所有互联网用户)或指定账号对桶内指定资源执行以下动作:

PutObject(PUT上传,POST上传,上传段,初始化上传段任务,合并段)

GetObject(获取对象内容、获取对象元数据)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

ModifyObjectMetaData(修改对象元数据)

ListMultipartUploadParts(列举已上传段)

AbortMultipartUpload(取消多段上传任务)

GetObjectVersionAcl

GetObjectAcl(获取对象ACL)

PutObjectAcl(设置对象ACL)

不支持排除以上授权操作

自定义桶策略:

您也可以根据实际业务场景的定制化需求,不使用预置桶策略模板,自定义创建桶策略。自定义桶策略由效力、被授权用户、授权资源、授权操作和授权条件5个桶策略基本元素共同决定。详细请参见桶策略参数说明

对象策略

对象策略即为桶策略中针对对象的策略,桶策略中针对对象的策略是通过配置资源来实现对象匹配的,资源可配置“*”(表示所有对象)或对象前缀(表示对象集)。对象策略则是直接选定对象后,配置到选定的对象资源的策略。

对象策略模板:

OBS控制台预置了两种常用典型场景的对象策略模板,用户可以使用模板创建对象策略,快速完成对象策略配置。

选择使用模板创建时,部分模板需要指定被授权用户,您也可以在原模板基础上修改被授权用户、模板动作以及增加对象策略执行的条件。资源范围即为所需配置对象策略的对象,系统自动指定,无需修改。

表2 对象策略模板

被授权用户

授权资源

模板名称

模板动作

高级设置

所有账号/当前账号/其他账号/委托账号

指定对象

对象只读

允许所有账号(所有互联网用户)或指定账号对桶内指定资源执行以下动作:

GetObject(获取对象内容、获取对象元数据)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

GetObjectVersionAcl(获取指定版本对象ACL)

GetObjectAcl(获取对象ACL)

不支持排除以上授权操作

对象读写

允许所有账号(所有互联网用户)或指定账号对桶内指定资源执行以下动作:

PutObject(PUT上传,POST上传,上传段,初始化上传段任务,合并段)

GetObject(获取对象内容、获取对象元数据)

GetObjectVersion(获取指定版本对象内容、获取指定版本对象元数据)

ModifyObjectMetaData(修改对象元数据)

ListMultipartUploadParts(列举已上传段)

AbortMultipartUpload(取消多段上传任务)

GetObjectVersionAcl(获取指定版本对象ACL)

GetObjectAcl(获取对象ACL)

PutObjectAcl(设置对象ACL)

不支持排除以上授权操作

自定义对象策略:

您也可以根据实际业务场景的定制化需求,不使用预置对象策略模板,自定义创建对象策略。自定义对象策略由效力、被授权用户、授权资源、授权操作和授权条件5个桶策略基本元素共同决定,与桶策略类似,详细请参见桶策略参数说明。其中授权资源为已选择的对象,系统自动配置。