You need to enable JavaScript to run this app.
导航

桶策略模板及参数说明

最近更新时间2024.02.01 18:53:19

首次发布时间2022.03.17 10:33:29

本文列举了桶策略支持的授权动作、授权模板及授权参数说明。

支持动作

通用动作

动作

说明

*

通配符,表示该资源能进行的所有动作。

Get*

表示该资源能进行的所有获取动作。

Put*

表示该资源能进行的所有设置动作。

注意

该动作为风险操作,请您谨慎配置。

List*

表示该资源能进行的所有列举动作。

桶动作

类别

动作

说明

桶操作

ListBucket

列举桶内对象。

HeadBucket

判断桶是否存在,获取桶元数据。

DeleteBucket

删除桶。

注意

该动作为风险操作,请您谨慎配置。

桶 ACL

GetBucketACL

获取桶 ACL 的相关信息。

PutBucketACL

设置桶 ACL。

注意

该动作为风险操作,请您谨慎配置。

桶策略

GetBucketPolicy

获取桶策略。

PutBucketPolicy

设置桶策略,拥有此权限的用户可以任意更改桶策略,并可以通过此权限获取其他权限。

注意

该动作为风险操作,请您谨慎配置。

DeleteBucketPolicy

删除桶策略。

注意

该动作为风险操作,请您谨慎配置。

生命周期规则

GetLifecycleConfiguration

获取桶生命周期规则。

PutLifecycleConfiguration

设置桶生命周期规则。

桶版本

GetBucketVersioning

获取桶多版本的相关信息。

PutBucketVersioning

设置多版本。

ListBucketVersions

列举桶内多版本对象。

跨域访问 CORS 规则

GetBucketCORS

获取桶 CORS 配置的相关信息。

PutBucketCORS

设置桶 CORS。

消息通知

PutBucketNotification

设置桶事件通知。

GetBucketNotification

获取桶事件通知。

图片样式

PutBucketImageStyle

设置桶图片样式。

GetBucketImageStyle

获取桶图片样式。

ListBucketImageStyle

列举桶图片样式。

DeleteBucketImageStyle

删除桶图片样式。

注意

该动作为风险操作,请您谨慎配置。

桶存储策略

PutBucketStoragePolicy

设置桶默认存储类别。

其他

ListBucketMultipartUploads

列举多段上传任务。

对象动作

类别

动作

说明

对象操作

GetObject

可用作于获取对象内容,获取对象元数据。

PutObject

可用作于 PUT 上传,上传段,初始化上传段任务,合并段。

DeleteObject

删除对象。

注意

该动作为风险操作,请您谨慎配置。

RestoreObject

恢复归档、冷归档和深度冷归档存储对象。

对象 ACL

GetObjectAcl

获取对象 ACL 的相关信息。

PutObjectAcl

设置对象 ACL。

注意

该动作为风险操作,请您谨慎配置。

对象版本

GetObjectVersion

可用作于获取指定版本对象内容,获取指定版本对象元数据。

DeleteObjectVersion

删除对象(针对特定版本的对象)。

注意

该动作为风险操作,请您谨慎配置。

对象标签

GetObjectTagging

获取对象标签。

PutObjectTagging

设置对象标签。

DeleteObjectTagging

删除对象标签。

注意

该动作为风险操作,请您谨慎配置。

其他

AbortMultipartUpload

取消多段上传任务。

ListMultipartUploadParts

列举已上传段。

桶策略模板

TOS 控制台预置了七种常用典型场景的桶策略模板,您可以使用模板创建桶策略,快速完成桶策略配置。
选择使用模板创建时,部分模板需要指定被授权用户或资源范围,您也可以在原模板基础上修改被授权用户、资源范围、模板动作以及增加桶策略执行的条件。

注意

公共只读和公共读写权限的存储桶直接暴露在公网,任何人均可对桶内文件进行读取,同时产生流量费用,存在财产损失和数据泄露风险。

模板名称

被授权用户

资源范围

模板动作

桶只读

待指定:需指定授权用户

包含当前桶和桶内所有对象

允许指定用户对当前桶和桶内所有对象执行以下动作:

  • Get*:所有获取操作。
  • List*:所有列举操作。
  • HeadBucket:判断桶是否存在,获取桶元数据。

桶读写

待指定:需指定授权用户

包含当前桶和桶内所有对象

允许指定用户对当前桶和桶内所有对象执行以下动作:

  • Get*:所有获取操作。
  • List*:所有列举操作。
  • HeadBucket:判断桶是否存在,获取桶元数据。
  • PutLifecycleConfiguration:设置桶生命周期规则。
  • PutBucketVersioning:设置多版本。
  • PutBucketCORS:设置桶 CORS。
  • PutObject:PUT 上传,POST 上传,上传段,初始化上传段任务,合并段。
  • DeleteObject:删除对象。
  • PutObjectAcl:设置对象 ACL。
  • DeleteObjectVersion:删除指定版本的对象。
  • AbortMultipartUpload:取消多段上传任务。

文件夹只读

待指定:需指定授权用户

待指定:需指定对象前缀

允许指定用户对当前桶和桶内指定资源执行以下动作:

  • ListBucket:列举桶内对象。
  • HeadBucket:判断桶是否存在,获取桶元数据。
  • ListBucketVersions:列举桶内多版本对象。
  • GetObject:获取对象内容、获取对象元数据。
  • GetObjectAcl:获取对象 ACL。
  • GetObjectVersion:获取指定版本对象内容、获取指定版本对象元数据。

文件夹读写

待指定:需指定授权用户

待指定:需指定对象前缀

允许指定用户对当前桶和桶内指定资源执行以下动作:

  • ListBucket:列举桶内对象。
  • HeadBucket:判断桶是否存在,获取桶元数据。
  • ListBucketVersions:列举桶内多版本对象。
  • ListBucketMultipartUploads:列举多段上传任务。
  • GetObject:获取对象内容、获取对象元数据。
  • PutObject:PUT 上传,POST 上传,上传段,初始化上传段任务,合并段。
  • GetObjectAcl:获取对象 ACL。
  • PutObjectAcl:设置对象 ACL。
  • GetObjectVersion:获取指定版本对象内容、获取指定版本对象元数据。
  • AbortMultipartUpload:取消多段上传任务。
  • ListMultipartUploadParts:列举已上传段。

公共只读(包含 ListBucket 操作)

所有用户:表示所有互联网用户

包含当前桶和桶内所有对象

允许所有用户:所有互联网用户对当前桶和桶内所有对象执行以下动作:

  • ListBucket:列举桶内对象。
  • HeadBucket:判断桶是否存在,获取桶元数据。
  • ListBucketVersions:列举桶内多版本对象。
  • GetObject:获取对象内容、获取对象元数据。
  • GetObjectVersion:获取指定版本对象内容、获取指定版本对象元数据。

公共只读(不包含 ListBucket 操作)

所有用户:表示所有互联网用户

包含当前桶和桶内所有对象

允许所有用户:所有互联网用户对当前桶和桶内所有对象执行以下动作:

  • HeadBucket:判断桶是否存在,获取桶元数据。
  • GetObject:获取对象内容、获取对象元数据。
  • GetObjectVersion:获取指定版本对象内容、获取指定版本对象元数据。

公共读写

所有用户:表示所有互联网用户

包含当前桶和桶内所有对象

允许所有用户:所有互联网用户对当前桶和桶内所有对象执行以下动作:

  • ListBucket:列举桶内对象。
  • HeadBucket:判断桶是否存在,获取桶元数据。
  • ListBucketVersions:列举桶内多版本对象。
  • GetObject:获取对象内容、获取对象元数据。
  • PutObject:PUT 上传,POST 上传,上传段,初始化上传段任务,合并段。
  • GetObjectAcl:获取对象 ACL。
  • PutObjectAcl:设置对象 ACL。
  • GetObjectVersion:获取指定版本对象内容、获取指定版本对象元数据。
  • AbortMultipartUpload:取消多段上传任务。
  • ListMultipartUploadParts:列举已上传段。

桶策略参数说明

Statement 是主要策略元素的容器,可以在一个策略中包含多个语句,每个 Statement 包含以下参数。

参数
是否必选
说明
示例

Sid

可选

策略名称,以区分不同的策略。

说明

在同一个桶内,策略名称不能重复。

"Sid": "test"

Effect

必填

指示策略是允许还是拒绝访问,取值范围为:

  • Allow:允许
  • Deny:拒绝
"Effect": "Allow"

Principal

可选

说明

EffectAllow 时,Principal 参数为必选参数。

指定需要授权的用户。

  • 指定用户:设置需要授权的账号 ID,如果需要给该账号下的 IAM 用户授权,可用/
  • 所有用户:使用通配符 *
  • 指定用户
"Principal":["200000****/IAMUserName"]
  • 所有用户
"Principal":["*"]

NotPrincipal

可选

该参数必须和 "Effect":"Deny" 一起使用。搭配 "Effect":"Deny" 使用后,除了 NotPrincipal 指定的用户以外,将拒绝其他用户的访问。关于 NotPrincipal 的典型授权场景的介绍,请参见使用 NotPrincipal 和 NotResource 拒绝访问

说明

  • 不支持单独使用通配符 * 拒绝所有用户,即不支持使用 "NotPrincipal":["*"]
  • 如果需要给该账号下的 IAM 用户授权,可用/
"NotPrincipal":["200000****/IAMUserName"]

Action

可选

说明

EffectAllow 时,Action 参数为必选参数。

指定策略允许或拒绝的操作列表,TOS 支持的操作列表请参见动作说明

  • 以字符串形式表示,动作格式为 tos:ActionName,不区分大小写。
  • 支持通配符 *,表示该资源能进行的所有操作。例如:"Action":["tos:List*" ]
"Action": [
        "tos:Get*",
        "tos:List*",
        "tos:HeadBucket"
      ]

NotAction

可选

该参数必须和 "Effect":"Deny" 一起使用。搭配 "Effect":"Deny" 使用后,除了 NotAction 指定的操作以外,将拒绝其他操作。
该参数值以字符串形式表示,动作格式为 tos:ActionName,不区分大小写。

说明

  • 不支持单独使用通配符 * 拒绝所有操作,即不支持使用 "NotAction":["*"]
  • TOS 支持的操作列表,请参见动作说明
"NotAction": ["tos:Get*","tos:List*","tos:HeadBucket"]

Resource

可选

说明

EffectAllow 时,Resource 参数为必选参数。

指定策略作用的资源范围,设置规则说明如下:

  • 如果您只需要对桶执行相应操作,则资源只设置桶名,例如 trn:tos:::bucketname
  • 如果您只需要对桶中对象执行相应操作,则需要设置桶内资源,例如trn:tos:::bucketname/objectname。桶内对象支持通配符*,表示桶内所有资源。
"Resource": [
        "trn:tos:::bucketname",
        "trn:tos:::bucketname/*"
      ]

NotResource

可选

该参数必须和"Effect":"Deny" 一起使用。搭配"Effect":"Deny"使用后,除了NotResource 指定的资源以外,将拒绝访问其他资源。设置规则说明如下:

  • 如果您只需要对桶执行相应操作,则资源只设置桶名,例如 trn:tos:::bucketname
  • 如果您只需要对桶中对象执行相应操作,则需要设置桶内资源,例如trn:tos:::bucketname/objectname。桶内对象支持通配符*,表示桶内所有资源。
    关于 NotResource 的典型授权场景的介绍,请参见使用 NotPrincipal 和 NotResource 拒绝访问

说明

不支持单独使用通配符 * 拒绝所有资源,即不支持使用 "NotResource":["*"]

"NotResource": "trn:tos:::bucketname/*"

Condition

可选

指定策略在哪些情况下授予权限。关于条件的详细说明,请参见条件说明

"Condition": {
         "IpAddress": {"SourceIp": "192.168.0.0"}
      }

示例

{
  "Statement": [
    {
      "Sid": "IPtest",
      "Effect": "Allow",
      "Principal":["*"],
      "Action": [
        "tos:Get*",
        "tos:List*",
        "tos:HeadBucket"
      ],
      "Resource": [
        "trn:tos:::bucketname",
        "trn:tos:::bucketname/*"
      ],
      "Condition": {
         "IpAddress": {"SourceIp": "192.168.0.0"}
      } 
    } 
  ]
}

条件说明

支持条件

桶策略支持指定相应条件,条件由键、条件运算符及值组成,决定桶策略生效的要求。条件运算符、键及支持的动作之间存在限制关系。TOS 支持的条件及说明如下所示。

类型

是否通用

键说明

值说明

prefix

String

列举对象时,用于指定前缀,仅以下动作支持设置:

  • List*
  • ListBucket
  • ListBucketVersions

输入具体的前缀和通配符(*),例如 dir1/*dir2/*

delimiter

String

列举对象时,对 Object 名字进行分组的字符,仅以下动作支持设置:

  • List*
  • ListBucket
  • ListBucketVersions

输入常见的分隔符,例如 :/

max-keys

String

列举对象时,返回对象的最大数量,仅以下动作支持设置:

  • List*
  • ListBucket
  • ListBucketVersions

输入数字,有效范围为 [1-1000]。

versionid

String

指定对象版本,仅以下动作支持设置:

  • Delete*
  • Get*
  • DeleteObjectVersion
  • GetObjectVersion

输入对象的具体版本号。

x-tos-acl

String

上传对象或者设置 ACL 时,用于在头域中声明对象的 ACL,仅以下动作支持设置:

  • Put*
  • PutBucketAcl
  • PutObject
  • PutObjectAcl

输入有效的 ACL,取值范围为:

  • private
  • public-read
  • public-read-write
  • bucket-owner-read
  • bucket-owner-full-control
  • authenticated-read
  • bucket-owner-entrusted

x-tos-copy-source

String

复制对象时,用来指定源桶名和源对象名,仅以下动作支持设置:

  • Put*
  • PutObject

输入有效的源对象的路径,例如 /bucket/object

x-tos-metadata-directive

String

指定是从源对象复制元数据还是使用请求中提供的元数据替换元数据,仅以下动作支持设置:

  • Put*
  • PutObject

输入元数据复制策略,取值 COPYREPLACE,说明如下:

  • COPY:从源对象复制元数据。
  • REPLACE:使用请求中提供的元数据替换对象元数据。

x-tos-server-side-encryption-kms-key-id

String

指定 SSE-KMS 加密对象使用的主密钥 ID,仅 PutObject 动作支持设置该键。

输入 KMS 的密钥 ID,例如 trn:kms:cn-beijing:200000****:keyrings/ring-test/keys/key-test

CurrentTime

Date

服务器接收请求的时间,UTC 时间,格式必须为 ISO 8601,基本格式为 yyyy-MM-ddTHH:mmZ(UTC 时间)。

输入 ISO 8601 格式的日期,例如 2023-10-13T15:00:00Z

EpochTime

Numeric

自 1970 年 1 月 1 日(UTC/GMT 午夜)来经过的秒数,不包括闰秒。

输入秒数,例如 1697187692

SecureTransport

Boolean

请求是否使用 SSL 加密。

输入 truefalse,取值说明如下:

  • true:使用 SSL 加密。
  • false:不使用 SSL 加密。

SourceIp

String

请求发起的源 IP。

输入 IP 地址或者 IP 段,如有多个 IP 请以英文逗号分隔。例如 192.168.0.1,192.168.0.0/24

UserAgent

String

请求的客户端代理程序。

输入 Agent 详细信息和通配符(*),例如 tos go sdk v2.6.0

Referer

String

请求发起的链接。

输入 URL,例如 http://console.volcengine.com

SourceVpc

String

请求所在的 VPC。

输入 VPC ID,例如 vpc-2d****ez0n

rolename

String

角色名称,用于指定其他云服务或 TOS 内部请求。

输入角色名称,例如 ServiceRoleforReplicationAccessTOS

NetPlane

String

请求来源的网络平面。

仅支持配置 public,表示请求来源为公网。

运算符说明

授权策略中不同的条件对应了不同的运算符,详细说明如下所示。

适用条件

运算符说明

  • prefix
  • delimiter
  • versionid
  • x-tos-acl
  • x-tos-copy-source
  • x-tos-metadata-directive
  • UserAgent
  • Referer
  • x-tos-server-side-encryption-kms-key-id
  • SourceVPC
  • rolename
  • 等于:与设置的条件值完全匹配。
  • 不等于:与设置的条件值不匹配。
  • 等于(不区分大小写):忽略大小写后,与设置的条件值完全匹配。
  • 不等于(不区分大小写):忽略大小写后,与设置的条件值不完全匹配。
  • Like:支持通配符(*)的正则匹配,例如 like abc*,就是以 abc 开头的所有字符,区分大小写。
  • Not Like:支持通配符(*)的正则匹配,例如 Not like abc*,就是除以 abc 开头的所有字符,区分大小写。
  • max-keys
  • CurrentTime
  • EpochTime
  • 等于:与设置的条件值相等。
  • 不等于:与设置的条件值不相等。
  • 小于:小于设置的条件值。
  • 小于等于:小于等于设置的条件值。
  • 大于:大于设置的条件值。
  • 大于等于:大于等于设置的条件值。

SourceIp

  • 等于:指定的 IP 或者 IP 范围。
  • 不等于:除了指定的 IP 或者 IP 范围之外的所有 IP。

SecureTransport

布尔值,取值说明如下:

  • true:使用 SSL 加密。
  • false:不使用 SSL 加密。

注意

  • 配置 prefix、delimiter、max-keys 后,执行 List 操作时需要带上符合条件的键值对信息,桶策略才生效。
  • 当您需要设置多个值时,您可以用英文逗号(,)分隔。
  • 如果您的值中含有英文逗号(,),您可以用/转义。