View a markdown version of this page

将 ABAC 与 DynamoDB Streams 结合使用 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

将 ABAC 与 DynamoDB Streams 结合使用

以下步骤说明如何使用 ABAC 为 DynamoDB Streams 设置权限。在此示例场景中,您向 DynamoDB 流添加标签,并使用包含基于标签的条件的策略创建一个 IAM 角色。然后,您将通过匹配标签条件来测试 DynamoDB 流支持的权限。

步骤 1:向 DynamoDB 流添加标签

您可以使用 Amazon CLI 或 SDK 向 DynamoDB Streams 添加标签。以下 tag-resource CLI 命令向流添加标签。

aws dynamodb tag-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable/stream/2024-01-01T00:00:00.000 \ --tags Key=environment,Value=staging
注意

要查找您的流 ARN,请使用 describe-table 命令,然后在响应中查找 LatestStreamArn 字段。

步骤 2:使用包含基于标签的条件的策略创建 IAM 角色

使用 aws:ResourceTag/{{tag-key}} 条件键创建 IAM 策略,以便将在 IAM 策略中指定的标签键值对与附加到流的键值对进行比较。如果流包含标签键值对 "environment": "staging",则以下示例策略可让用户获取记录并描述该流。如果流没有指定的标签键值对,则这些操作将遭到拒绝。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "staging" } } } ] }

步骤 3:测试支持的权限

  1. 将 IAM 策略附加到 Amazon Web Services 账户中的 IAM 用户或角色。确保您使用的 IAM 主体尚未通过其它策略获得对 DynamoDB 流的访问权限。

  2. 确保您的 DynamoDB 流包含值为 "staging" 的 "environment" 标签键。

  3. 对带标签的流执行 dynamodb:DescribeStream 和 dynamodb:GetRecords 操作。如果 "environment": "staging" 标签键值对存在,则这些操作会成功。

    如果您对没有 "environment": "staging" 标签键值对的流执行这些操作,则请求将失败并引发 AccessDeniedException。