全部文档
当前文档

暂无内容

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

文档中心

空间策略(Bucket Policy)

最近更新时间:2024-06-26 21:01:44

空间策略(Bucket Policy)是KS3推出的针对Bucket的授权策略,您可以通过空间策略授权其他用户访问您指定的KS3资源。

空间策略包含以下几个元素:

元素名称

描述

是否必选

效果(Effect)

代表本条策略的效果,可以是允许或拒绝,对应Effect的值为Allow或者Deny

资源(Resource)

代表本条策略针对哪些资源起作用,可以设置为整个Bucket,也可以指定Object资源

被授权人(Principal)

代表授权给哪些用户,可选所有用户、主账号、子账号、角色名

权限(Action)

代表对于指定的资源授权了哪些权限

条件(Condition)

在授予权限时指定的条件。访问请求只有在满足指定条件时,访问策略才可以生效

下面是一条空间策略示例,此策略允许账户accountid下的子用户Dave在ip为101.226.XXX.185的条件下对examplebucket存储桶具有ks3:listbucketks3: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"]
        	}
      	 }
   }
  ]
}


下面依次对空间策略每个元素的配置方式进行说明。

效果(Effect)

包含允许(Allow)和拒绝(Deny)两种授权效果:

  • 允许(Allow):允许设定的用户访问指定资源。

  • 拒绝(Deny):拒绝设定的用户访问指定资源,即使有其他策略授予了该用户访问权限的情况下也会拒绝访问。

指定资源(Resource)

在KS3中,使用资源名称(KRN)来标识资源,KRN的格式如下:

krn:ksc:ks3:::bucketname
krn:ksc:ks3:::bucketname/keyname

其中bucketname表示存储空间名称,keyname表示对象/文件(Object)的名称,支持通配符*(匹配多个字符)和(匹配单个字符)。

以下为 KS3 资源KRN的示例:

  • 表示mybucket存储空间

krn:ksc:ks3:::mybucket
  • 表示mybucket存储空间中全部对象

krn:ksc:ks3:::mybucket/*
  • 表示您拥有的所有存储空间与对象

krn:ksc:ks3:::*

注意:

  • 在实际使用中,为了简化输入,在控制台写入Resource时,只需要写入空间名称和文件名称,可省略前面的krn:ksc:ks3:::。后台程序会自动将简化输入转换为标准输入。

  • Bucket与Object级别的操作需要对应与之相匹配的权限表示,详见权限

被授权人(Principal)

Principal 元素用于指定被允许或拒绝访问资源的所有用户、主账号、子账号、角色。元素 Principal 仅在空间策略中起作用;用户策略中不必指定,因为用户策略直接附加到特定用户。下面是指定 Principal 的示例。

1. *表示所有用户。
2. krn:ksc:iam::(accountid):root //标识主账号,acountid是主账户id,root是固定值。
3. krn:ksc:iam::(accountid):user/(userName) //userName表示子账号,其中user是固定值,acountid是归属主账户id。
4. krn:ksc:iam::(accountid):role/(ruleNAME) //ruleNAME表示角色名称,其中role是定值,acountid是归属主账户id。

注意:在实际使用中,为了简化输入,在控制台写入Principal时,对于主账户只需要填入主账户ID即可;对于子用户,写入格式为“acountid/userName”,其中accountid为用户主账号ID,userName为子用户名。后台程序会自动将简化输入转换为标准输入。

权限(Action)

Action为KS3在策略中指定的一组权限,每一个权限都会映射到特定的KS3操作。Action分为Bucket和Object级别的权限。

控制台只读需要的最小权限

主账号默认拥有所有权限,并且可以根据业务需求为子账号分配不同的权限。如果想让子账号在控制台只读,至少需要给子账号配置以下权限。

Action

描述

ks3:ListBuckets

查询Bucket列表,注意该权限为User Policy权限,主账号需要到IAM平台中为子账号配置

ks3:ListBucket

列举Bucket中所有Object的信息

ks3:GetObject

获取Object

ks3:GetBucketLocation

查看用户Bucket所属区域

ks3:ListBucketMultipartUploads

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

ks3:ListMultipartUploadParts

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

ks3:GetBucketAcl

获取Bucket ACL

ks3:GetObjectAcl

获取Object ACL

注意:

  • 以上为子账号在控制台只读需要配置的最小权限,如果子账号需要额外拥有获取Object标签信息的权限,需要在以上权限的基础上增加ks3:GetObjectTagging权限。

  • 如果想让子账号在控制台拥有写权限,需要在以上最小读权限的基础上增加相应的写权限。比如子账号需要拥有上传、删除、设置标签的权限,则主账号需要为子账号分配的权限有:ks3:ListBucketsks3:ListBucketks3:GetObjectks3:GetBucketLocationks3:ListBucketMultipartUploadsks3:ListMultipartUploadPartsks3:GetBucketAclks3:GetObjectAclks3:PutObjectks3:DeleteObjectks3:PutObjectTagging

  • 如果子账号仅使用API访问,则无需为子账号配置以上最小权限,只需要配置相应操作对应的权限即可。

用户不同的操作需要拥有不同的权限,有关用户操作以及对应需要的权限说明如下所示:

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的跨域资源共享规则

PUT Bucket Inventory

ks3:PutBucketInventory

配置Bucket的清单规则

GET Bucket Inventory

ks3:GetBucketInventory

查看Bucket中指定的清单任务

List Bucket Inventory

ks3:ListBucketInventory

查看Bucket中所有清单任务

DELETE Bucket Inventory

ks3:DeleteBucketInventory

删除Bucket中指定的清单任务

List Multipart Uploads

ks3:ListBucketMultipartUploads

列出所有正在进行的分块上传任务,控制台读权限必须配置该策略

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的标签

注意:

  • 不同级别的操作需要指定与之对等的资源。

  • 如果您想授予ks3:ListBucket权限则其对应的资源必须为bucket, 例如:krn:ksc:ks3:::bucket01代表名为bucket01的存储空间。

  • 如果您想授予ks3:PutObject权限,则需要指定文件资源,例如:krn:ksc:ks3:::bucket01/*,代表bucket01中的所有文件。

  • 需要同时授权Bucket与Object级别权限需要同时指定两种对应的资源。

条件(Condition)

访问策略语言支持在授予权限时指定该策略生效的条件。在Condition元素(或 Condition 块)中,可以指定策略生效的条件,Condition元素是可选的。如果在策略中指定了条件,那么用户的请求必须满足条件,策略才可以生效。

KS3支持的Condition如下:

Condition

功能

ksc:SourceIp

指定IP地址

ksc:RequestHeader

指定请求中带有的请求头

ksc:SubnetID

指定请求来自SubnetID对应的VPC子网

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

条件运算符

value取值范围

说明

IpAddress

严格的IP地址格式和CIDR格式,只支持IPV4

客户请求的源IP地址等于某个IP地址或IP地址段,策略生效。多个IP地址间用半角逗号(,)分隔

NotIpAddress

严格的IP地址格式和CIDR格式,只支持IPV4

客户请求的源IP地址不等于某个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:*"

客户请求中带有指定header,并且请求头的value值可模糊匹配(区分大小写),策略生效

StringNotLike

键值对形式的字符串,可包括字符串中任何一个多字符匹配的通配符 (*) 或单字符匹配的通配符 (?),如"x-kss-cdn:*"

客户请求中带有指定header,并且请求头的value值不模糊匹配(不区分大小写),策略生效

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

条件运算符

value取值范围

说明

StringEquals

严格的AccountID格式和SubnetID格式

客户的请求来自value中指定的SubnetID对应的VPC子网,策略生效

StringNotEquals

严格的AccountID格式和SubnetID格式

客户的请求不是来自value中指定的VPC子网,策略生效

操作方式

支持控制台和API两种操作方式:

操作方式

参考文档

控制台

空间策略

API

SDK

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

纯净模式

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