空间策略

最近更新时间:2019-08-22 00:31:39

存储空间策略(Bucket Policy)


当您是空间的所有者时,您可对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的规则:

  • 如果没有显式的Deny和Allow,则该条Statement请求权限判别为Default Deny
  • 显式的Deny覆盖Allow
  • Allow覆盖默认的Default Deny
  • Statement的顺序没有影响
  • 如果多条Statement判断的最后结果是Default Deny,最终资源是否可以访问,还需要看资源的ACL是否公开。

设置空间策略方法如下:

1. 设置位置:"空间设置"->"空间策略",点击添加策略

image.png

2. 设置空间策略

image.png 其中:

  • Effect:操作效果,allow、deny,allow表示允许,deny表示禁止。
  • Actions:操作关键字,允许或者禁止的操作类型,详参操作关键字和操作对应关系
  • Principal:指定委托人,委托人可以是其他主账户,也可以是当前账户下的子用户,目前不支持其它账户下的子用户。主账户通过账号id表示,任何账户可以通过在自己的控制台点击查看账号ID查看自己的账号ID。子用户通过账号ID/子用户用户名表示。
  • Resource:资源(空间和对象),如果没有明确的资源指向,此处建议填写资源全集(bucketname,bucketname/*),如上图示例。
  • Condition:指定此策略生效的条件。目前支持请求者的IP地址(ksc:SourceIp)、请求头(ksc:RequestHeader)和请求者所在VPC的子网ID作为条件。详细介绍见Condition详解

3. 点击策略语言,查看空间策略内容

image.png

image.png

操作关键字和操作的对应关系

权限关键字 涉及的KS3操作
• ks3:AbortMultipartUpload 取消分块上传
• ks3:DeleteObject DELETE Object
• ks3:GetBucketAcl GET Bucket ACL
• ks3:GetBucketCORS GET Bucket cors
• ks3:GetObject GET Object
HEAD Object
• ks3:GetObjectAcl GET Object ACL
• ks3:ListBucket GET Bucket(List Objects)
HEAD Bucket
• ks3:DeleteBucket Delete Bucket
• ks3:ListBucketMultipartUploads 列出分段上传
• ks3:ListMultipartUploadParts 列出分段
• ks3:PutBucketAcl PUT Bucket ACL
• ks3:PutBucketCORS PUT Bucket cors
• ks3:PutObject PUT Object
POST Object
Initiate Multipart Upload
Upload Part
Complete Multipart Upload
• ks3:PutObjectAcl PUT Object ACL
• ks3:PostObjectRestore Restore Object

Condition详解

IP地址(ksc:SourceIp)支持的条件运算符如下:

条件运算符 value取值范围 说明
IpAddress 严格的IP地址格式和CIDR格式,只支持IPV4 客户请求的源IP地址是value中指定的IP地址或范围内的地址,策略生效
NotIpAddress 严格的IP地址格式和CIDR格式,只支持IPV4 客户的请求的源IP地址是指定IP地址和范围外的IP地址,策略生效

请求头(ksc:RequestHeader)支持的条件运算符如下:

条件运算符 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值不模糊匹配(不区分大小写),策略生效

VPC子网ID(ksc:SubnetID)支持的条件运算符如下:

条件运算符 value取值范围 说明
StringEquals 严格的AccountID格式和SubnetID格式 客户的请求来自value中指定的SubnetID对应的VPC子网,策略生效
StringNotEquals 严格的AccountID格式和SubnetID格式 客户的请求不是来自value中指定的VPC子网,策略生效

金山云,开启您的云计算之旅

注册有礼