存储桶策略

最后更新时间:2020-12-29 17:13:10

    简介

    本文档提供关于存储桶策略的 API 概览以及 SDK 示例代码。

    API 操作名 操作描述
    PUT Bucket policy 设置存储桶策略 设置指定存储桶的权限策略
    GET Bucket policy 查询存储桶策略 查询指定存储桶的权限策略
    DELETE Bucket policy 删除存储桶策略 删除指定存储桶的权限策略

    设置存储桶策略

    功能说明

    PUT Bucket policy 请求可以向 Bucket 写入权限策略,当存储桶已存在权限策略时,该请求上传的策略将覆盖原有的权限策略。

    方法原型

    func (s *BucketService) PutPolicy(ctx context.Context, opt *BucketPutPolicyOptions) (*Response, error)

    请求示例

    opt := &cos.BucketPutPolicyOptions{
        Version: "2.0",
        Statement: []cos.BucketStatement{
        {
            Principal: map[string][]string{
                "qcs": []string{
                    "qcs::cam::uin/100000000001:uin/100000000011", //替换成您想授予权限的账户uin
                },
            },
            Action: []string{
                "name/cos:GetObject",
            },
            Effect: "allow",
            Resource: []string{
                //这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径,例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
                "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/exampleobject",
            },
            Condition: map[string]map[string]interface{}{
                "ip_not_equal": map[string]interface{}{
                    "qcs:ip": []string{
                        "192.168.1.1",
                    },
                },
            },
        },
        },
    }
    _, err := c.Bucket.PutPolicy(context.Background(), opt)

    参数说明

    type BucketStatement struct {
        Principal map[string][]string
        Action    []string
        Effect    string
        Resource  []string
        Condition map[string]map[string]interface{}
    }
    
    type BucketPutPolicyOptions struct {
        Statement []BucketStatement
        Version   string
        Principal map[string][]string
    }
    参数名称 描述 类型
    Statement 描述一条或多条权限的详细信息 Struct
    Version 策略语法版本 Struct
    Principal 描述策略授权的实体,详情请参见 访问策略语言概述 String
    Action 此处是指 COS API,根据需求指定一个或者一序列操作的组合或所有操作(*),例如 action 为 name/cos:GetService,请注意区分英文大小写 Array
    Effect 有 allow(允许)和 deny(显式拒绝)两种情况 String
    Resource 授权操作的具体数据,可以是任意资源、指定路径前缀的资源、指定绝对路径的资源或它们的组合 Array
    Condition 约束条件,可以不填,具体说明请参见 condition 说明 Struct

    查询存储桶策略

    功能说明

    GET Bucket policy 请求可以向 Bucket 读取权限策略。

    方法原型

    func (s *BucketService) GetPolicy(ctx context.Context) (*BucketGetPolicyResult, *Response, error)

    请求示例

    res, resp, err := c.Bucket.GetPolicy(context.Background())

    返回结果说明

    type BucketGetPolicyResult BucketPutPolicyOptions
    // 详情见BucketPutPolicyOptions

    删除存储桶策略

    功能说明

    DELETE Bucket policy 请求可以向 Bucket 删除权限策略。

    方法原型

    func (s *BucketService) DeletePolicy(ctx context.Context) (*Response, error)

    请求示例

    resp, err := c.Bucket.DeletePolicy(context.Background())