空间策略(Bucket Policy)

最近更新时间:2019-01-14 10:10:53

存储空间策略


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

  • Effect:当用户请求特定操作(可以是允许或拒绝)时的效果。如果没有显式授予(允许)对资源的访问权限,则说明此条策略没有生效。也可显式拒绝对资源的访问,这样可 确保用户无法访问该资源,即使有其他策略授予了访问权限的情况下也是如此。
  • 资源:存储空间(Bucket)、对象(Object)以及相对应的子资源。
  • 操作:对于每个资源,所支持的一组操作。
  • 被授权人:被允许或拒绝访问资源的用户和账户。
  • 指定条件:在授予权限时指定的条件。访问请求只有在满足指定条件时,访问策略才可以生效。

下面是一条空间策略示例。此策略允许账户accountid下的子用户Dave对examplebucket存储桶具有 ks3:listbucket 和 ks3: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/*"]
   }
  ]
}

在策略中指定资源

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

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

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

以下为 KS3 资源KRN的示例:

  • 该KRN表示 mybucket 存储空间
krn:ksc:ks3:::mybucket

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

在策略中指定被授权人

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

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

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

在策略中指定权限

KS3在策略中指定的一组权限。每一个权限,都会映射到特定 KS3 操作

权限关键字 对应的KS3操作
ks3:ListBucket 列举bucket下的文件和查询bucket信息
ks3:DeleteBucket 删除当前Bucket
ks3:GetBucketAcl 获取Bucket的ACL信息
ks3:PutBucketAcl 设置Bucket的ACL信息
ks3:GetBucketCORS 获取bucket的CORS配置信息
ks3:PutBucketCORS 设置Bucket的CORS
ks3:PutObject 上传文件,包含post、PUT和分块上传
ks3:DeleteObject 删除文件
ks3:GetObject GET Object 和 HEAD Object
ks3:GetObjectAcl 获取文件的ACL信息
ks3:PutObjectAcl 设置文件的ACL
ks3ListBucketMultipartUploads 列出分段上传
ks3ListMultipartUploadParts 列出分段
ks3:AbortMultipartUpload 取消分块上传

在策略中指定条件

访问策略语言支持在授予权限时指定该策略生效的条件。在Condition 元素(或 Condition 块)中,可以指定策略生效的条件。Condition 元素是可选的。

如果在策略中指定了条件,那么用户的请求必须满足条件,那么策略才可以生效。

KS3支持的Condition如下:

Condition 功能
ksc:SourceIp 指定IP地址
ksc:RequestHeader 指定请求中带有的请求头

如何在控制台配置存储空间策略,详见文档空间策略

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

立即注册