标签和访问控制策略
您还可以使用权限策略(存储桶和用户策略)管理对象标签相关权限。有关策略操作,请参阅以下主题:
对象标签支持用于管理权限的精细访问控制。您可以基于对象标签授予条件权限。Amazon S3 支持以下条件键,这些键可用于授予基于对象标签的条件权限:
-
s3:ExistingObjectTag/- 使用此条件键可验证现有对象标签是否有特定标签键和值。<tag-key>注意
当授予
PUT Object和DELETE Object操作的权限时,此条件键不受支持。也就是说,您无法创建这样一个策略:允许或拒绝用户基于对象的现有标签删除或覆盖该对象。 -
s3:RequestObjectTagKeys- 使用此条件键可限制要在对象上允许的标签键。当使用 PutObjectTagging 和 PutObject 以及 POST 对象请求将标签添加到对象时,这很有用。 -
s3:RequestObjectTag/- 使用此条件键可限制要在对象上允许的标签键和值。当使用 PutObjectTagging 和 PutObject 以及 POST 存储桶请求将标签添加到对象时,这很有用。<tag-key>
有关特定于 Amazon S3 服务的条件键的完整列表,请参阅 Amazon S3 条件键示例。以下权限策略说明了对象标签如何支持精细访问权限管理。
例 1: 允许用户仅读取具有特定标签的对象
以下权限策略将向用户授予读取对象的权限,但条件将读取权限限制为只有具有以下特定标签键和值的对象。
security : public
请注意,该策略使用 Amazon S3 条件键 s3:ExistingObjectTag/ 来指定键和值。<tag-key>
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Principal": "*", "Condition": { "StringEquals": {"s3:ExistingObjectTag/security": "public" } } } ] }
例 2: 允许用户添加对允许的标签键有限制的对象标签
以下权限策略将向用户授予执行 s3:PutObjectTagging 操作的权限,这使用户可以将标签添加到现有对象。条件限制了用户可使用的标签键。条件使用 s3:RequestObjectTagKeys 条件键指定一组标签键。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "CanonicalUser":[ "64-digit-alphanumeric-value" ] }, "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
该策略确保了标签集 (如果已在请求中指定) 包含指定的键。用户可以在 PutObjectTagging 中发送空标签集,这是该策略允许的 (请求中的空标签集将删除对象上的任何现有标签)。如果您要阻止用户删除标签集,则可以添加另一个条件来确保用户至少提供一个值。条件中的 ForAnyValue 确保了请求中必须至少存在一个值。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "AWS":[ "arn:aws:iam::account-number-without-hyphens:user/username" ] }, "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] }, "ForAnyValue:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
有关更多信息,请参阅《IAM 用户指南》中的创建测试多个键值的条件(集合运算)。
例 3: 允许用户添加包含特定标签键和值的对象标签
以下用户策略将向用户授予执行 s3:PutObjectTagging 操作的权限,这使用户可以在现有对象上添加标签。条件要求用户包含值设置为 Project 的特定标签 (X)。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "AWS":[ "arn:aws:iam::account-number-without-hyphens:user/username" ] }, "Condition": { "StringEquals": { "s3:RequestObjectTag/Project": "X" } } } ] }