更新时间:2020-10-09 13:48:58
对于IAM授权中使用的权限策略,详细规则如下。
{
"version": "1",
"statement": [
{
"action": [
"wos:GetBucket"
],
"resource": [
"wsc:wos:*:*:testbucket"
],
"effect": "allow"
},
{
"action": [
"wos:PutObject",
"wos:GetObject",
"wos:DeleteObject"
],
"resource": [
"wsc:wos:*:*:testbucket/*"
],
"effect": "allow"
}
]
}
这是一个授权的Policy,父账号可以用这样的一个Policy通过IAM服务向子账号授权。Policy当中有一个statement(一条Policy当中可以有多条statement)。statement里面规定了相应的action、resource和effect。
这条Policy配置的权限:列举空间testbucket中所有文件的信息;上传文件到空间testbucket;下载空间testbucket中的文件;删除空间testbucket中的文件。
version定义了权限策略的版本,当前支持版本为“1”。
通过statement描述授权语义,其中可以根据业务场景包含多条语义,每条包含对action、effect和resource的描述。每次请求系统会逐条依次匹配检查,所有匹配成功的statement会根据effect的设置不同分为通过(allow)、禁止(deny),其中禁止(deny)的优先。如果匹配成功的都为通过,该条请求即鉴权通过。如果匹配成功有一条禁止,或者没有任何条目匹配成功,该条请求被禁止访问。
action指代的是wos提供的S3 API或控制台的操作。action的规则是wos:{action_name},支持通配,可以用代表 0 个或多个任意的英文字母,如wos:List*表示wos提供的所有action_name以 List 开头的 S3 API或控制台操作。
action是一个列表,可以选择操作中的一种或几种,所有的action_name前面都必须加上“wos:”。可以有多个action。
action分为三大类:
• Service级别操作,对应类似于wos:GetService之类的操作。
• Bucket级别操作,对应类似于wos:PutBucketLifecycle、wos:GetBucket之类的操作,操作的对象是Bucket。
• Object级别操作,对应类似于wos:GetObject、wos:PutObject、wos:DeleteObject和wos:AbortMultipartUpload,操作对象是Object。
S3 API | action |
---|---|
GetService | wos:GetService |
注:给子账号分配了GetService权限,则子账号可以获取其父账号拥有的所有空间。(子账号创建的空间,该空间的拥有者为其父账号)
S3 API | action |
---|---|
GetBucket(ListObjects) | wos:GetBucket |
GetBucketLifecycle | wos:GetBucketLifecycle |
PutBucketLifecycle | wos:PutBucketLifecycle |
DeleteBucketLifecycle | wos:DeleteBucketLifecycle |
ListMultipartUploads | wos:ListMultipartUploads |
S3 API | action |
---|---|
GetObject | wos:GetObject |
HeadObject | wos:HeadObject |
PutObject | wos:PutObject |
PostObject | wos:PutObject |
InitiateMultipartUpload | wos:PutObject |
UploadPart | wos:PutObject |
CompleteMultipartUpload | wos:PutObject |
DeleteObject | wos:DeleteObject |
MultiDelete | wos:DeleteObject |
AbortMultipartUpload | wos:AbortMultipartUpload |
ListParts | wos:ListParts |
CopyObject | wos:GetObject,wos:PutObject |
RestoreObject | wos:RestoreObject |
控制台操作 | action |
---|---|
概览 | |
查看 | wos:GetService |
统计分析 | |
查询(查看) | wos:GetBucketAnalysis |
注:
控制台操作 | action |
---|---|
概览 | |
新建空间 | wos:PutBucket |
空间设置 | |
删除空间 | wos:DeleteBucket |
查看-镜像存储 | wos:GetBucketMirror |
编辑-镜像存储 | wos:PutBucketMirror |
删除-镜像存储 | wos:DeleteBucketMirror |
查看-空间域名 | wos:GetBucketDomain |
绑定域名 | wos:PutBucketDomain |
修改协议 | wos:PutBucketDomain |
删除-空间域名 | wos:DeleteBucketDomain |
编辑-原图保护 | wos:PutBucketOriginal |
查看-分隔符设置 | wos:GetBucketDelimiter |
编辑-分隔符设置 | wos:PutBucketDelimiter |
查看-图片样式 | wos:GetBucketStyle |
新增图片样式 | wos:PutBucketStyle |
删除-图片样式 | wos:DeleteBucketStyle |
查看-生命周期设置 | wos:GetBucketLifecycle |
创建规则-生命周期设置 | wos:PutBucketLifecycle |
编辑-生命周期设置 | wos:PutBucketLifecycle |
清空全部规则-生命周期设置 | wos:DeleteBucketLifecycle |
删除-生命周期设置 | wos:DeleteBucketLifecycle |
创建规则-跨域设置 | wos:PutBucketCors |
编辑-跨域设置 | wos:PutBucketCors |
查看-跨域设置 | wos:GetBucketCors |
删除-跨域设置 | wos:DeleteBucketCors |
清空全部规则-跨域设置 | wos:DeleteBucketCors |
控制台-文件管理 | |
查询(查看) | wos:GetBucket |
操作 | action |
---|---|
控制台-空间设置 | |
更新镜像源 | wos:Prefetch |
控制台-文件管理 | |
新建文件夹 | wos:PutFolder |
上传文件 | wos:PutObject |
删除 | wos:DeleteObject |
重命名 | wos:PutObject |
解冻 | wos:RestoreObject |
resource指代的是存储在wos上的资源,resource的规则是wsc:wos:{region}:{bucket_owner}:{bucket_name}/{object_name},支持通配。可以用代表 0 个或多个任意的英文字母。其中的region字段暂时不做支持,设置为“*”。
resource也是一个列表,可以包含一个或多个资源。可以有多个resource。
对于所有Service级别的操作,不支持指定到具体的资源,即wsc: wos:
*: * : * 。
对于所有Bucket级别的操作,只支持指定到具体的空间,即wsc:wos:{region}:{bucket_owner}:{bucket_name}。
对于所有Object级别的操作。支持指定到具体的文件,即wsc:wos:{region}:{bucket_owner}:{bucket_name}/{object_name}。
effect代表本条的statement的授权的结果,分为allow和deny,分别指代通过和禁止。多条statement同时匹配成功时,禁止(deny)的优先级更高。
例如,期望禁止用户对某一目录进行删除,但对于其他文件有全部权限:
{
"version": "1",
"statement": [
{
"effect": "allow",
"action": [
"wos:*"
],
"resource": [
"wsc:wos:*:*:bucketname/*"
]
},
{
"effect": "deny",
"action": [
"wos:DeleteObject"
],
"resource": [
"wsc:wos:*:*:bucketname/test/*"
]
}
]
}