桶策略的作用范围为对象存储桶和桶内的所有对象。天翼云用户可以通过设置桶策略为不同类型或不同标识的用户授权桶及桶内对象的操作访问权限。
桶策略使用场景
- 允许其他天翼云用户对该桶进行访问控制时,可以使用桶策略的方式授权相应的读写权限。
- 对于不同的用户,需要对不同的桶有不同的访问控制需求时,使用桶策略,可以简单方便地授权给用户不同的控制权限。
桶策略设置
桶策略包括效力、用户、资源、操作、条件5个桶策略基本元素共同决定。其中:
- 效力:允许/禁止策略中的操作。
- 用户:根据填写的用户类型和用户标识信息,向其他天翼云用户或所有用户(包括匿名访问者)配置策略。
- 资源:指定授权策略的资源范围,可选的资源范围包括整个存储桶或指定资源。
- 操作:配置本策略指定的具体操作,包括:存储桶操作、对象操作。具体可参考下文中的存储桶操作、对象操作。
- 条件:对符合特定条件的用户生效,目前支持以IP为条件配置。
存储桶操作
Action | 描述 |
---|---|
CreateBucket | 赋予创建桶的权限 |
DeleteBucket | 赋予删除桶的权限 |
DeleteBucketPolicy | 赋予删除桶策略的权限 |
DeleteBucketWebsite | 赋予删除桶静态网站配置信息的权限 |
GetBucketAcl | 赋予获取桶ACL配置信息的权限 |
GetBucketCORS | 赋予获取桶跨域配置信息的权限 |
GetBucketPolicy | 赋予获取桶策略的权限 |
GetBucketTagging | 赋予查询桶标签的权限 |
GetBucketVersioning | 赋予查询桶版本控制配置信息的权限 |
GetBucketWebsite | 赋予查询静态网站配置信息的权限 |
GetLifecycleConfiguration | 赋予查询桶生命周期的权限 |
ListAllMyBuckets | 赋予查询用户所有桶的权限 |
ListBucket | 赋予查询桶部分或全部对象列表的权限 |
ListBucketMultipartUploads | 赋予查询桶正在进行的分段上传的权限 |
ListBucketVersion | 赋予查询桶所有版本控制配置信息的权限 |
ListMultipartUploads | 赋予查询用户所有正在进行的分段上传的权限 |
PutBucketAcl | 赋予设置桶ACL的权限 |
PutBucketCORS | 赋予设置桶跨域配置的权限 |
PutBucketLogging | 赋予设置桶日志信息的权限 |
PutBucketPolicy | 赋予设置桶策略的权限 |
PutBucketTagging | 赋予设置桶标签的权限 |
PutBucketVersioning | 赋予设置桶版本控制配置的权限 |
PutBucketWebsite | 赋予设置桶静态网站配置的权限 |
PutLifecycleConfiguration | 赋予设置桶生命周期的权限 |
对象操作
Action | 描述 |
---|---|
DeleteObject | 赋予删除对象的权限 |
DeleteObjectVersion | 赋予删除对象指定版本的权限 |
GetObject | 赋予获取对象的权限 |
GetObjectAcl | 赋予查询对象ACL的权限 |
GetObjectVersion | 赋予获取指定版本对象的权限 |
GetObjectVersionAcl | 赋予获取指定版本对象的访问控制列表的权限 |
PutObject | 赋予上传对象的权限 |
PutObjectAcl | 赋予设置对象ACL的权限 |
PutObjectVersionAcl | 赋予设置指定版本对象ACL的权限 |
桶策略参数说明
桶策略使用JSON格式的数据管理指定用户对存储资源可执行的操作,格式定义如下为:
{
"Statement" : [{
statement1
},
{
statement2
},
......
]
}
以下是桶策略具体示例,表示授权给用户testpolicy对桶bucket1的全部权限:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["* "],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
Policy由多条statement组成,也可以是一条。每条statement的结构包括下表内容:
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
Version | 是 | String | 版本,描述访问控制策略的版本信息,当前版本只能是"2012-10-17"。 | 2012-10-17 | |
Statement | 是 | Array | 语句,描述一项或多项赋权的详细信息。 | Effect、Action、Principal、Resource、Condition | |
Effect | 是 | String | 效力,描述语句中权限产生的结果是允许还是禁止,只能是"allow"或"deny"两种情况。效力属于必填项。 | Allow | |
Action | 是 | String | 操作,描述语句中赋予的权限,必填项。 | "s3:GetObject" | |
Principal | 否 | Container | 委托人,描述策略赋权的实体,例如用户、用户组等。 | AWS | |
AWS | 否 | Array | 媒体存储用户。 | "arn:aws:iam:::user/testpolicy","arn:aws:iam:::user/testpolicy2" | |
Resource | 是 | String | 资源,描述策略授权的具体资源。资源采用六段式描述,段与段之间使用冒号分隔,目前天翼对象存储s3接口的资源描述方式前三段为固定格式,最后一段位描述存储空间和对象资源,如 arn:aws:s3:::{BucketName}/{ObjectName}。 在Action中有“桶操作”表中的操作,则Resource中只填写桶名。 在Action中有“对象操作”表中的操作,则Resource需要填写“bucketname/objectname”。 |
"arn:aws:s3:::bucket1/* " | |
Condition | 否 | String | 条件,描述策略生效的约束条件,非必填项,目前支持以IP为条件配置。 | "IpAddress":{“aws:SourceIp":"192.168.5.101/24"} |
桶策略示例
- 示例1:授权给用户testpolicy和用户testpolicy2获取桶bucket1内对象的权限。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["s3:GetObject"],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy","arn:aws:iam:::user/testpolicy2"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
- 示例2:授权给用户testpolicy对桶bucket1的全部权限
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["* "],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
- 示例3:授权给用户testpolicy对桶bucket1的除上传对象的全部权限
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["* "],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
},
{
"Effect":"Deny",
"Action":["s3:PutObject"],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
- 示例4:授权给所有用户(包括匿名用户)获取桶内对象test.png的权限。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["s3:GetObject"],
"Principal":{
"AWS":["* "]
}
"Resource":"arn:aws:s3:::bucket1/test.png"
}
]
}
桶策略设置方式
操作途径 | 使用方式 |
---|---|
控制台 | 可参考:权限管理。控制台提供桶策略界面化配置,无需编辑代码。 |
XstorBrowser | 可参考:配置桶策略。 |
SDK | 请从SDK概览页面选择进入对应的开发指南查阅。 |