标签和访问控制策略 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

标签和访问控制策略

您还可以使用权限策略(桶和用户策略)管理对象标签相关权限。有关策略操作,请参阅以下主题:

对象标签支持用于管理权限的精细访问控制。您可以基于对象标签授予条件权限。Amazon S3 支持以下条件键,这些键可用于授予基于对象标签的条件权限:

  • s3:ExistingObjectTag/<tag-key> - 使用此条件键可验证现有对象标签是否有特定标签键和值。

    注意

    当授予 PUT ObjectDELETE Object 操作的权限时,此条件键不受支持。也就是说,您无法创建这样一个策略:允许或拒绝用户基于对象的现有标签删除或覆盖该对象。

  • s3:RequestObjectTagKeys - 使用此条件键可限制要在对象上允许的标签键。当使用 PutObjectTagging 和 PutObject 以及 POST 对象请求将标签添加到对象时,这很有用。

  • s3:RequestObjectTag/<tag-key> - 使用此条件键可限制要在对象上允许的标签键和值。当使用 PutObjectTagging 和 PutObject 以及 POST 桶请求将标签添加到对象时,这很有用。

有关特定于 Amazon S3 服务的条件键的完整列表,请参阅 使用条件键的存储桶策略示例。以下权限策略说明了对象标签如何支持精细访问权限管理。

例 1:允许用户仅读取具有特定标签和键值的对象

以下权限策略限制用户只能读取具有 environment: production 标签键和值的对象。请注意,该策略使用 s3:ExistingObjectTag 条件键来指定标签键和值。

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/JohnDoe" ] }, "Effect": "Allow", "Action": ["s3:GetObject", "s3:GetObjectVersion"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": {"s3:ExistingObjectTag/environment": "production"} } } ] }
例 2:限制用户可以添加哪些对象标签键

以下权限策略将向用户授予执行 s3:PutObjectTagging 操作的权限,这使用户可以将标签添加到现有对象。条件使用 s3:RequestObjectTagKeys 条件键指定允许的标签键,例如 OwnerCreationDate。有关更多信息,请参阅《IAM 用户指南》中的创建测试多个键值的条件

该策略确保在请求中指定的每个标签键都是授权的标签键。条件中的 ForAnyValue 限定符确保请求中必须至少存在指定的值之一。

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:role/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
例 3:在允许用户添加对象标签时需要特定的标签键和值

以下示例策略将向用户授予执行 s3:PutObjectTagging 操作的权限,这使用户可以将标签添加到现有对象。条件要求用户包含值设置为 X 的特定标签键(如 Project)。

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X" } } } ] }