将标签与目录存储桶的 S3 接入点结合使用 - Amazon Simple Storage Service

将标签与目录存储桶的 S3 接入点结合使用

AWS 标签是保存有关资源的元数据的键值对,在本例中为目录存储桶的 Amazon S3 接入点。可以在创建接入点时为其添加标签,也可以管理现有接入点上的标签。有关标签的一般信息,请参阅添加标签以进行成本分配或基于属性的访问权限控制(ABAC)

注意

在超过标准 S3 API 请求速率的目录存储桶的接入点上使用标签无需额外付费。有关更多信息,请参阅 Amazon S3 定价

将标签与目录存储桶的接入点结合使用的常用方法

基于属性的访问权限控制(ABAC)支持您根据标签扩展访问权限并授予对目录存储桶的接入点的访问权限。有关 Amazon S3 中的 ABAC 的更多信息,请参阅 Using tags for ABAC

适用于 S3 接入点的 ABAC

Amazon S3 接入点支持使用标签进行基于属性的访问权限控制(ABAC)。在您的 AWS 组织、IAM 和接入点策略中使用基于标签的条件键。对于企业,Amazon S3 中的 ABAC 支持跨多个 AWS 账户进行授权。

在 IAM 策略中,可以使用以下全局条件键,根据目录存储桶的标签来控制对存储桶的接入点的访问权限:

  • aws:ResourceTag/key-name

    • 使用此键可将您在策略中指定的标签键/值对与附加到资源的键/值对进行比较。例如,您可能会要求只有在资源具有附加的标签键 Dept 和值 Marketing 时才允许访问该资源。有关更多信息,请参阅控制对 AWS 资源的访问

  • aws:RequestTag/key-name

    • 使用此键可将请求中传递的标签键/值对与您在策略中指定的标签对进行比较。例如,您可以检查请求是否包含标签键 Dept 并具有 Accounting 值。有关更多信息,请参阅在 AWS 请求期间控制访问。您可以使用此条件键来限制可以在 TagResourceCreateAccessPoint API 操作期间传递哪些标签键值对。

  • aws:TagKeys

    • 使用此键可将请求中的标签键与您在策略中指定的键进行比较。我们建议当使用策略来通过标签控制访问时,请使用 aws:TagKeys 条件键来定义允许的标签键。有关示例策略和更多信息,请参阅根据标签键控制访问。可以创建目录存储桶的带有标签的接入点。要在 CreateAccessPoint API 操作期间支持添加标签,您必须创建同时包含 s3express:TagResources3express:CreateAccessPoint 操作的策略。然后,您可以使用 aws:TagKeys 条件键来强制在 CreateAccessPoint 请求中使用特定的标签。

  • s3express:AccessPointTag/tag-key

    • 使用此条件键,可通过使用标签的接入点授予对特定数据的权限。在 IAM 策略中使用 aws:ResourceTag/tag-key 时,接入点以及该接入点指向的存储桶都需要具有与在授权期间考虑这两者时相同的标签。如果想特意通过接入点标签来控制对数据的访问权限,可以使用 s3express:AccessPointTag/tag-key 条件键。

目录存储桶的接入点的 ABAC 策略示例

请参阅以下适用于目录存储桶的接入点的 ABAC 策略示例。

1.1 - 用于创建或修改具有特定标签的接入点的 IAM 策略

在此 IAM 策略中,拥有此策略的用户或角色只有在接入点创建请求中使用标签键 project 和标签值 Trinity 来为接入点添加标签时,才会创建接入点。这些用户或角色还可以在目录存储桶的现有接入点上添加或修改标签,只要 TagResource 请求包含标签键值对 project:Trinity 即可。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateAccessPointWithTags", "Effect": "Allow", "Action": [ "s3express:CreateAccessPoint", "s3express:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/project": [ "Trinity" ] } } } ] }

1.2 - 使用标签限制对存储桶的操作的接入点策略

在此接入点策略中,IAM 主体(用户和角色)只有在接入点的 project 标签的值与主体的 project 标签的值匹配时,才会使用 CreateSession 操作对接入点执行操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowObjectOperations", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "s3express:CreateSession", "Resource": "arn:aws::s3express:region:111122223333:access-point/my-access-point", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" } } } ] }

1.3 - 修改现有资源上的标签以维护标签治理的 IAM 策略

在此 IAM 策略中,IAM 主体(用户或角色)只有在接入点的 project 标签的值与主体的 project 标签的值匹配时,才会修改接入点上的标签。这些接入点只允许使用在 aws:TagKeys 条件键中指定的四个标签 projectenvironmentownercost-center。这有助于强制执行标签治理,防止未经授权修改标签,并使标签架构跨接入点保持一致。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceTaggingRulesOnModification", "Effect": "Allow", "Action": [ "s3express:TagResource" ], "Resource": "arn:aws::s3express:region:111122223333:accesspoint/my-access-point", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "project", "environment", "owner", "cost-center" ] } } } ] }

1.4 - 使用 s3express:AccessPointTag 条件键

在此 IAM 策略中,条件语句仅在用于访问存储桶的接入点具有标签键 Environment 和标签值 Production 时,才支持访问存储桶的数据。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToSpecificAccessPoint", "Effect": "Allow", "Action": "*", "Resource": "arn:aws::s3express:region:111122223333:accesspoint/my-access-point", "Condition": { "StringEquals": { "s3express:AccessPointTag/Environment": "Production" } } } ] }

将标签用于目录存储桶的接入点

可以使用 Amazon S3 控制台、AWS 命令行界面(CLI)、AWS SDK 或以下 S3 API 为目录存储桶的接入点添加或管理标签:TagResourceUntagResourceListTagsForResource。有关更多信息,请参阅: