tencent cloud

文档反馈

存储桶策略

最后更新时间:2024-11-21 15:26:24
    存储桶策略作用于配置的存储桶和存储桶内对象,您可以通过存储桶策略为 CAM 子账号、其他主账号、甚至匿名用户授权存储桶及存储桶内对象的操作权限。

    概述

    注意:
    腾讯云主账号具备对其名下资源(包括存储桶)的最大权限,您虽然可以在存储桶策略中限制几乎所有操作,但主账号始终具备 PUT Bucket Policy 操作的权限,主账号调用该操作不检查存储桶策略。
    存储桶策略(Bucket Policy)使用 JSON 语言描述,支持向匿名身份或腾讯云任何 CAM 账户授予对存储桶、存储桶操作、对象或对象操作的权限,在腾讯云 COS 中存储桶策略可以用于管理该存储桶内的几乎所有操作,推荐您使用存储桶策略来管理通过 ACL 无法表述的访问策略。

    适用场景

    注意:
    创建存储桶和获取存储桶列表这两个服务级的操作权限,需要通过 访问管理控制台 配置。
    当您关心谁能访问这个 COS 桶时,推荐使用存储桶策略。可通过查找存储桶,并检查存储桶策略来了解谁能访问。推荐场景有:
    针对某个存储桶进行授权。
    相比 ACL,存储桶策略更加灵活。
    相比用户策略,存储桶策略支持跨账号授权及匿名用户授权。

    存储桶策略组成

    存储桶策略使用 JSON 语言描述,语法遵循 访问策略语言 的统一规范,包括委托人(principal)、效力(effect)、操作(action)、资源(resource)、条件(condition)等基本元素。详情请参考 访问策略语言概述。 其中,存储桶策略的资源范围被限制在该存储桶之内,可以针对整个存储桶、指定目录、指定对象授权。
    注意:
    添加存储桶策略时,请务必根据业务需要,按照最小权限原则进行授权。如果您直接授予其他用户所有资源(resource:*),或者所有操作(action:*)权限,则存在由于权限范围过大导致数据安全风险。

    控制台配置示例

    说明:
    使用对象存储控制台配置存储桶策略时,您需要授予用户拥有存储桶的相关权限,例如获取存储桶标签和列出存储桶的权限。
    存储桶策略的大小限制为20KB。
    示例:授予子账号拥有存储桶特定目录的所有权限。配置信息如下:
    配置项
    配置值
    效力
    允许
    委托人
    子账号,子账号的 UIN,该子账号必须为当前主账号下的子账号,例如100000000011
    资源
    特定目录前缀,例如folder/sub-folder/*
    操作
    所有操作
    条件
    控制台支持 图形化配置策略配置 两种方式添加、管理存储桶策略。

    图形化配置

    进入目标存储桶的权限管理,选择 Policy 权限设置 > 图形设置,单击添加策略,在弹窗中进行策略配置。

    步骤1:选择模板(可选)

    通过选择不同的被授权用户、资源范围组合,COS 为您提供了多种策略模板,帮助您快速配置存储桶策略。若模板不符合您的需要,可以跳过此步,或在 步骤2:配置策略 中添加或删除授权操作。

    步骤2:配置策略

    针对您在步骤1选择的被授权用户、指定目录和模板组合,COS 为您在配置策略中自动添加了对应的操作、被授权用户、资源等。其中,当您选择指定用户、指定目录时,需要在配置策略时指定具体的用户 UIN 和目录。
    说明:
    需要注意,对目录授权,输入的资源路径需要在后面加 /*。例如,对目录 test 授权,则需输入 test/*
    当 COS 提供的推荐模板不符合您的需要时,您也可以在这一步对策略内容进行调整,添加、删除被授权用户、资源和操作。如下图所示:
    配置项说明如下:
    效力:支持选择允许拒绝,对应策略语法中的 “allow” 和 “deny”。
    用户:支持添加、删除被授权用户,包括所有用户(*)、主账户、子账户和云服务。
    资源:支持添加整个存储桶或指定目录资源。
    操作:添加、删除您需要授权的操作。
    条件:授予权限时指定条件,例如限制用户来访 IP。

    策略语法

    除了使用图形化配置,熟悉存储桶策略的用户可以在目标存储桶的权限管理 > Policy权限设置 > 策略配置中直接使用 JSON 语言编写策略。
    编写好存储桶策略后,您也可以通过 APISDK 添加存储桶策略。如下图所示:

    JSON 策略示例

    以下策略示例描述为:允许属于主账号 ID 为100000000001(APPID 为1250000000)下的子账号 ID 100000000011, 对北京地域的存储桶 examplebucket-bj 下的目录 folder/sub-folder 中的对象,授权所有操作。
    {
    "Statement": [
    {
    "Principal": {
    "qcs": [
    "qcs::cam::uin/100000000001:uin/100000000011"
    ]
    },
    "Effect": "Allow",
    "Action": [
    "name/cos:*"
    ],
    "Resource": [
    "qcs::cos:ap-beijing:uid/1250000000:examplebucket-bj-1250000000/folder/sub-folder/*"
    ]
    }
    ],
    "version": "2.0"
    }

    操作方式

    COS 支持使用控制台、API、SDK 等多种方式添加存储桶策略。控制台支持图形化配置和常用的授权模板,方便不熟悉策略语言的用户快速添加策略。
    操作方式
    说明
    Web 页面,直观易用
    RESTful API,直接请求 COS
    SDK
    丰富的 SDK demo,支持各类开发语言。
    

    更多存储桶策略示例

    注意:
    添加存储桶策略时,请务必根据业务需要,按照最小权限原则进行授权。如果您直接授予其他用户所有资源 (resource:*),或者所有操作 (action:*) 权限,则存在由于权限范围过大导致数据安全风险。
    下面介绍限制子网、委托人和 VPC ID 的存储桶策略示例。

    示例1

    限制来自子网 10.1.1.0/24 网段 和 vpcid 为 aqp5jrc1 的请求。语法示例如下:
    {
    "Statement": [
    {
    "Action": [
    "name/cos:*"
    ],
    "Condition": {
    "ip_equal": {
    "qcs:ip": [
    "10.1.1.0/24"
    ]
    },
    "string_equal": {
    "vpc:requester_vpc": [
    "vpc-aqp5jrc1"
    ]
    }
    },
    "Effect": "deny",
    "Principal": {
    "qcs": [
    "qcs::cam::anyone:anyone"
    ]
    },
    "Resource": [
    "qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
    ]
    }
    ],
    "version": "2.0"
    }

    示例2

    限制 vpcid 为 aqp5jrc1 、特定委托人和特定存储桶的请求。语法示例如下:
    {
    "Statement": [
    {
    "Action": [
    "name/cos:*"
    ],
    "Condition": {
    "string_equal": {
    "vpc:requester_vpc": [
    "vpc-aqp5jrc1"
    ]
    }
    },
    "Effect": "allow",
    "Principal": {
    "qcs": [
    "qcs::cam::uin/100000000001:uin/100000000002"
    ]
    },
    "Resource": [
    "qcs::cos:ap-beijing:uid/1250000000:examplebucket-1250000000/*"
    ]
    }
    ],
    "version": "2.0"
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持