全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

空间策略设置

最近更新时间:2024-05-30 16:31:14

当您是空间的所有者时,可对KS3资源(整个Bucket或指定Object资源)设置访问控制策略。其他用户对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的规则:

  • Statement的顺序没有影响

  • 如果没有显式的Deny和Allow,则该条Statement请求权限判别为Default Deny

  • 显式的Deny覆盖Allow

  • Allow覆盖默认的Default Deny

  • 如果多条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操作,具体对应关系可以参考下表:

Bucket级别

API

Action

接口描述

GET Bucket(ListObjects)

ks3:ListBucket

列举Bucket中所有Object的信息

List Object V2

ks3:ListBucket

列举Bucket中所有Object的信息

GET Bucket Location

ks3:GetBucketLocation

查看用户Bucket所属区域

DELETE Bucket

ks3:DeleteBucket

删除某个Bucket

PUT Bucket ACL

ks3:PutBucketAcl

设置或修改Bucket ACL

GET Bucket ACL

ks3:GetBucketAcl

获取Bucket ACL

PUT Bucket Replication

ks3:PutBucketReplication

设置复制规则

GET Bucket Replication

ks3:GetBucketReplication

查看复制规则

DELETE Bucket Replication

ks3:DeleteBucketReplication

删除复制规则

PUT Bucket Logging

ks3:PutBucketLogging

开启Bucket的日志功能

GET Bucket Logging

ks3:GetBucketLogging

查看Bucket的日志记录状态

PUT Bucket CORS

ks3:PutBucketCORS

设置指定Bucket的跨域资源共享规则

GET Bucket CORS

ks3:GetBucketCORS

获取指定Bucket的跨域资源共享规则

DELETE Bucket CORS

ks3:PutBucketCORS

删除指定Bucket的跨域资源共享规则

List Multipart Uploads

ks3:ListBucketMultipartUploads

列出所有正在进行的分块上传任务

PUT Bucket Retention

ks3:PutBucketRetention

开通、关闭及设置Bucket回收站功能

GET Bucket Retention

ks3:GetBucketRetention

获取Bucket回收站配置规则

LIST Retention

ks3:ListBucketRetention

获取Bucket回收站中Object列表

PUT Bucket Inventory

ks3:PutBucketInventory

配置Bucket存储清单规则

List Bucket Inventory

ks3:ListBucketInventory

批量获取Bucket中的所有清单任务

GET Bucket Inventory

ks3:GetBucketInventory

查看某个Bucket中指定的清单任务

DELETE Bucket Inventory

ks3:DeleteBucketInventory

删除Bucket中指定的清单任务

POST Bucket Saveas

ks3:PostProcessTask

图片处理持久化

Object级别

API

Action

接口描述

PUT Object

ks3:PutObject

上传Object

PUT Object Copy

ks3:PutObject, ks3:GetObject

拷贝同一地域下相同或不同Bucket之间的Object

POST Object

ks3:PutObject

通过HTML表单上传的方式将Object上传到指定Bucket

Initiate Multipart Upload

ks3:PutObject

初始化分块上传

Upload Part

ks3:PutObject

上传分块

Complete Multipart Upload

ks3:PutObject

完成分块上传

Abort Multipart Upload

ks3:AbortMultipartUpload

取消分块上传任务

List Parts

ks3:ListMultipartUploadParts

列出指定上传任务中所有已上传的块

Upload Part Copy

ks3:PutObject, ks3:GetObject

从一个已存在的Object中拷贝数据来上传一个块

GET Object

ks3:GetObject

获取Object

HEAD Object

ks3:GetObject

获取Object的元数据信息

DELETE Object

ks3:DeleteObject

删除Object

Restore Object

ks3:PostObjectRestore

解冻归档Object

PUT Object ACL

ks3:PutObjectAcl

设置Bucket下某个Object的ACL

GET Object ACL

ks3:GetObjectAcl

获取Bucket下某个Object的ACL

PUT Object Tagging

ks3:PutObjectTagging

添加/更新Object的标签

GET Object Tagging

ks3:GetObjectTagging

获取Object的标签

DELETE Object Tagging

ks3:DeleteObjectTagging

删除Object的标签

CLEAR Object

ks3:ClearObject

删除Bucket回收站中的Object

Recover Object

ks3:RecoverObject

恢复Bucket回收站中的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:listbucketks3: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. 点击确定即可完成配置。

有关空间策略的更多详细信息,请参见文档:空间策略(Bucket Policy)

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈