标签和访问控制策略
您还可以使用权限策略(存储桶和用户策略)管理对象标签相关权限。有关策略操作,请参阅以下主题:
对象标签支持用于管理权限的精细访问控制。您可以基于对象标签授予条件权限。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
" } } } ] }