View a markdown version of this page

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

将基于属性的访问权限控制与 DynamoDB Streams 结合使用

DynamoDB Streams 支持基于属性的访问权限控制(ABAC),即使用 DynamoDB 的基于资源的策略中所述的相同授权策略。使用 DynamoDB Streams ABAC,您可以将标签附加到流,并在 IAM 策略中使用基于标签的条件来控制对流的访问。

流资源不会从其父表继承标签,您可以独立管理各个流上的标签。最多可以为每个 DynamoDB 流添加 50 个标签。流上的所有标签支持的最大大小为 10 KB。有关为 DynamoDB 资源添加标签和为限制添加标签的更多信息,请参阅在 DynamoDB 中向资源添加标记和标签和DynamoDB 中的标签限制。

可以使用 aws:ResourceTag 条件键,以便基于附加到流的标签来支持或拒绝访问该流。例如,以下策略支持对包含标签键 environment、值为 production 的任何流执行 GetRecords 操作。

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

使用 DynamoDB Streams 实施 ABAC 的条件键

DynamoDB Streams ABAC 使用与 DynamoDB 表相同的条件键:aws:ResourceTag/tag-key、aws:RequestTag/tag-key 和 aws:TagKeys。有关每个条件键的描述,请参阅 使用 DynamoDB 实施 ABAC 的条件键。以下行为特定于 DynamoDB Streams:

  • 条件键适用于在流上运行的 DynamoDB Streams API,包括 TagResource、UntagResource 以及读取 API(例如 GetRecords)。

  • 如果您的账户未启用 DynamoDB Streams ABAC,则 aws:ResourceTag 条件的评估方式就如同没有任何标签附加到流资源一样。

将 ABAC 与 DynamoDB Streams 结合使用的注意事项

在将 ABAC 与 DynamoDB Streams 结合使用时,以下注意事项适用:

  • 适用于 DynamoDB Streams 的 ABAC 与适用于 DynamoDB 表的 ABAC 是分开的。为表启用 ABAC 不会自动为账户中的流启用 ABAC。您必须单独为每个流启用 ABAC。

  • 删除流的父表后,您可以使用 CLI 或 SDK 的 tag-resource、untag-resource 和 list-tags-of-resource 命令对流 ARN 添加标签或取消标签。删除表后,流会持续存在 24 小时,然后才会被移除。删除表后,无法通过控制台或 CloudFormation 使用此功能。

  • 如果您使用 CloudFormation 来管理 DynamoDB 资源,请确保您的服务角色对流资源拥有 dynamodb:TagResource、dynamodb:UntagResource 和 dynamodb:ListTagsOfResource 权限。