当您是空间的所有者时,您可对KS3资源(空间和对象)设置访问控制策略。
其他用户对空间和空间内对象的访问请求都将受到空间策略的控制,这种访问控制表现为接受或拒绝请求。对访问请求是接受还是拒绝,取决于您在空间策略中的描述。
Policy在做权限判断时,每条Statement(策略)会有3种结果,explicit deny、allow和default deny。Bucket Policy对于Policy中的多条Statement采用以下规则进行判定:Bucket Policy对Policy中包含的每条Statement都要进行Explicit Deny、Allow和Default Deny的判断,最终的判决结果遵循explicit deny>allow>default deny的规则:
1.登录KS3控制台,点击左侧存储空间,点击相应的空间名,点击空间设置 > 空间策略,点击添加策略。
2.选择配置此条策略的效果是允许还是禁止:
注意不同用户类型对应的账号ID填写格式:
1.所有用户用*表示;
2.主账号格式accountid;
3.子用户格式accountid/userName; accountld表示主账号id, userName表示用户用户名
4.角色名格式accountid/roleName; accountld表示主账号id, roleName表示角色名
4.选择资源,可以选择整个存储桶或者指定资源:
5.指定权限:
其中,操作关键字和操作的对应关系可以参考下表:
权限关键字 | 对应的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 级别 |
ks3ListBucketMultipartUploads | 列出分段上传 | Bucket 级别 |
ks3:PutObject | 上传文件,包含post、PUT和分块上传 | Object 级别 |
ks3:DeleteObject | 删除文件 | Object 级别 |
ks3:GetObject | GET Object 和 HEAD Object | Object 级别 |
ks3:GetObjectAcl | 获取文件的ACL信息 | Object 级别 |
ks3:PutObjectAcl | 设置文件的ACL | Object 级别 |
ks3ListMultipartUploadParts | 列出分段 | Object 级别 |
ks3:AbortMultipartUpload | 取消分块上传 | Object 级别 |
ks3:PostObjectRestore | 解冻归档存储对象 | Object 级别 |
注意:不同级别的操作需要指定与之对等的资源。
如您想授权ks3:ListBucket
操作则其对应的资源必须为bucket,
例如:krn:ksc:ks3:::bucket01
代表名为bucket01的存储空间;
如果您想授权ks3:PutObject
操作,则需要指定文件资源,例如:krn:ksc:ks3:::bucket01/*
,代表bucket01中的所有文件;
需要同时授权Bucket与Object级别权限需要同时指定两种对应的资源。
6.添加条件,目前支持请求者的IP地址(ksc:SourceIp)、请求头(ksc:RequestHeader)和请求者所在VPC的子网ID作为条件:
条件运算符 | 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子网,策略生效 |
1.登录KS3控制台,点击左侧存储空间,点击相应的空间名,点击空间设置 > 空间策略,点击策略语言。
2.在弹出的策略编辑器中编辑Bucket Policy:
下面是一条空间策略示例,此策略允许所有用户在ip为10.1.1.1
的条件下对整个存储桶进行 ks3:listbucket 和 ks3:getobject 操作。
{
"Statement": [
{
"Condition": {
"IpAddress": {
"ksc:SourceIp": [
"10.1.1.1"
]
}
},
"Resource": [
"krn:ksc:ks3:::examplebucket",
"krn:ksc:ks3:::examplebucket/*"
],
"Principal": {
"KSC": [
"*"
]
},
"Action": [
"ks3:GetObject",
"ks3:ListBucket"
],
"Effect": "Allow"
}
]
}
3.点击确定即可完成配置。
文档内容是否对您有帮助?
评价建议不能为空
非常感谢您的反馈,我们会继续努力做到更好!