空间策略设置

最近更新时间:2021-08-26 19:23:14

查看PDF

当您是空间的所有者时,您可对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是否公开。

方式一:图形化配置Bucket Policy

1.登录KS3控制台,点击左侧存储空间,点击相应的空间名,点击空间设置 > 空间策略,点击添加策略

2.选择配置此条策略的效果是允许还是禁止:

3.添加被授权人,最多可以添加10条:

注意不同用户类型对应的账号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作为条件:

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子网,策略生效

方式二:通过策略语法配置Bucket Policy

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.点击确定即可完成配置。

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈