空间策略作用于所配置的KS3空间及空间内对象,包含以下几个元素:
下面是一条空间策略示例,此策略允许账户accountid下的子用户Dave在ip为101.226.XXX.185
的条件下对examplebucket存储桶具有 ks3:listbucket 和 ks3:getobject 的权限。
{
"Version":"2015-11-01",
"Statement": [
{
"Sid":"1",
"Effect":"Allow",
"Principal":{krn:ksc:iam::(accountid):user/Dave},
"Action":[
"ks3:ListBucket",
"ks3:GetObject"
],
"Resource":["krn:ksc:ks3:::examplebucket","krn:ksc:ks3:::examplebucket/*"],
"Condition": {
"IpAddress": {
"ksc:SourceIp": ["101.226.XXX.185"]
}
}
}
]
}
下面依次对空间策略包含的元素的配置方式进行说明。
包含允许(Allow)和拒绝(Deny)两种授权效果,允许(Allow)代表允许设定的用户对指定资源的访问权限,拒绝(Deny)可确保设定的用户无法访问指定资源,即使有其他策略授予了访问权限的情况下也是如此。
在KS3中,使用资源名称(KRN)来标识资源,KRN的格式如下:
krn:ksc:ks3:::bucketname
krn:ksc:ks3:::bucketname/keyname
其中bucketname
表示存储空间名称,keyname
表示对象/文件(Object)的名称,支持通配符*
(匹配多个字符)和?
(匹配单个字符)。
以下为 KS3 资源KRN的示例:
krn:ksc:ks3:::mybucket
krn:ksc:ks3:::mybucket/*
krn:ksc:ks3:::*
注意:
krn:ksc:ks3:::
。后台程序会自动将简化输入转换为标准输入。Principal 元素用于指定被允许或拒绝访问资源的子用户、账户、服务或其他实体。元素 Principal 仅在空间策略中起作用;用户策略中不必指定,因为用户策略直接附加到特定用户。下面是指定 Principal 的示例。
1、*表示所有用户。
2、krn:ksc:iam::(accountid):root //标识主账号,acountid是主账户id,root是固定值。
3、krn:ksc:iam::(acountid):user/(userName) userName表示子账号,其中user是固定值,acountid是归属主账户id。
4、krn:ksc:iam::(acountid):role/(ruleNAME) ruleNAME表示角色名称,其中role是定值,acountid是归属主账户id。
注意:在实际使用中,为了简化输入,在控制台写入Principal时,对于主账户只需要填入主账户ID即可;对于子用户,写入格式为“acountid/userName”,其中accountid为用户主账号ID,userName为子用户名。后台程序会自动将简化输入转换为标准输入。
KS3在策略中指定的一组权限。每一个权限,都会映射到特定 KS3 操作。
权限关键字 | 对应的KS3操作 | 操作级别 |
---|---|---|
ks3:ListBucket | 列举bucket下的文件和查询bucket信息 | Bucket 级别 |
ks3:DeleteBucket | 删除当前Bucket | Bucket 级别 |
ks3:GetBucketAcl | 获取Bucket的ACL信息 | Bucket 级别 |
ks3:PutBucketAcl | 设置Bucket的ACL信息 | Bucket 级别 |
ks3:GetBucketCORS | 获取bucket的CORS配置信息 | Bucket 级别 |
ks3:PutBucketCORS | 设置Bucket的CORS | Bucket 级别 |
ks3:ListBucketMultipartUploads | 列出分段上传 | Bucket 级别 |
ks3:PutObject | 上传文件,包含post、PUT和分块上传 | Object 级别 |
ks3:DeleteObject | 删除文件 | Object 级别 |
ks3:GetObject | GET Object 和 HEAD Object | Object 级别 |
ks3:GetObjectAcl | 获取文件的ACL信息 | Object 级别 |
ks3:PutObjectAcl | 设置文件的ACL | Object 级别 |
ks3:ListMultipartUploadParts | 列出分段 | Object 级别 |
ks3:AbortMultipartUpload | 取消分块上传 | Object 级别 |
ks3:PostObjectRestore | 解冻归档存储对象 | Object 级别 |
ks3:PutObjectTagging | 添加/更新对象的标签 | Object 级别 |
ks3:GetObjectTagging | 查询对象的标签 | Object 级别 |
ks3:DeleteObjectTagging | 删除对象的标签 | Object 级别 |
注意:
不同级别的操作需要指定与之对等的资源。
1.如您想授权ks3:ListBucket
操作则其对应的资源必须为bucket, 例如:krn:ksc:ks3:::bucket01
代表名为bucket01的存储空间;
2.如果您想授权ks3:PutObject
操作,则需要指定文件资源,例如:krn:ksc:ks3:::bucket01/*
,代表bucket01中的所有文件;
3.需要同时授权Bucket与Object级别权限需要同时指定两种对应的资源。
访问策略语言支持在授予权限时指定该策略生效的条件。在Condition 元素(或 Condition 块)中,可以指定策略生效的条件。Condition 元素是可选的。
如果在策略中指定了条件,那么用户的请求必须满足条件,策略才可以生效。
KS3支持的Condition如下:
Condition | 功能 |
---|---|
ksc:SourceIp | 指定IP地址 |
ksc:RequestHeader | 指定请求中带有的请求头 |
ksc:SubnetID | 指定请求来自SubnetID对应的VPC子网 |
条件运算符 | value取值范围 | 说明 |
---|---|---|
IpAddress | 严格的IP地址格式和CIDR格式,只支持IPV4 | 客户请求的源IP地址是value中指定的IP地址或范围内的地址,策略生效 |
NotIpAddress | 严格的IP地址格式和CIDR格式,只支持IPV4 | 客户的请求的源IP地址是指定IP地址和范围外的IP地址,策略生效 |
条件运算符 | value取值范围 | 说明 |
---|---|---|
StringEquals | 键值对形式的字符串,如"x-kss-cdn:kingsoftcdn" | 请求中带有指定header ,并且请求头的value值恰好匹配(区分大小写),策略生效 |
StringNotEquals | 键值对形式的字符串,如"x-kss-cdn:kingsoftcdn" | 请求中带有指定header ,并且请求头的value值不匹配(区分大小写),策略生效 |
StringEqualsIgnoreCase | 键值对形式的字符串,如"x-kss-cdn:kingsoftcdn" | 请求中带有指定header ,并且请求头的value值恰好匹配(不区分大小写),策略生效 |
StringNotEqualsIgnoreCase | 键值对形式的字符串,如"x-kss-cdn:kingsoftcdn" | 请求中带有指定header ,并且请求头的value值不匹配(不区分大小写),策略生效 |
StringLike | 键值对形式的字符串,可包括字符串中任何一个多字符匹配的通配符 (*) 或单字符匹配的通配符 (?),如"x-kss-cdn:*" | KS3的请求中带有指定header ,并且请求头的value值可模糊匹配(区分大小写),策略生效 |
StringNotLike | 键值对形式的字符串,可包括字符串中任何一个多字符匹配的通配符 (*) 或单字符匹配的通配符 (?),如"x-kss-cdn:*" | 请求中带有指定header ,并且请求头的value值不模糊匹配(不区分大小写),策略生效 |
条件运算符 | value取值范围 | 说明 |
---|---|---|
StringEquals | 严格的AccountID格式和SubnetID格式 | 客户的请求来自value中指定的SubnetID对应的VPC子网,策略生效 |
StringNotEquals | 严格的AccountID格式和SubnetID格式 | 客户的请求不是来自value中指定的VPC子网,策略生效 |
支持控制台和API两种操作方式:
操作方式 | 参考文档 |
---|---|
控制台 | 空间策略 |
API | |
SDK |
文档内容是否对您有帮助?
评价建议不能为空
非常感谢您的反馈,我们会继续努力做到更好!