将 IAM 用于全局表 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 IAM 用于全局表

DynamoDB 全局表有两种版本:版本 2019.11.21(当前)版本 2017.11.29。要了解您正在使用的版本,请参阅确定版本

当您首次创建全局表时,Amazon DynamoDB 会自动为您创建一个 AWS Identity and Access Management (IAM) 服务相关角色。该角色名为 AWSServiceRoleForDynamoDBReplication,它允许 DynamoDB 代表您管理全局表的跨区域复制。不要删除该服务相关角色。如果您这样做,则您的所有全局表将不再有效。

有关服务相关角色的更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html 中的使用服务相关角色IAM 用户指南。

要在 DynamoDB 中创建和维护全局表,您必须具有访问以下各项的 dynamodb:CreateGlobalTable 权限:

  • 要添加的副本表。

  • 全局表的每个现有副本。

  • 全局表本身。

要在 UpdateGlobalTableSettings 中更新全局表的设置 (DynamoDB),您必须具有 dynamodb:UpdateGlobalTabledynamodb:DescribeLimitsapplication-autoscaling:DeleteScalingPolicyapplication-autoscaling:DeregisterScalableTarget 权限。

在更新现有扩展策略时,需要 application-autoscaling:DeleteScalingPolicyapplication-autoscaling:DeregisterScalableTarget 权限。这样,全局表服务可以在将新策略附加到表或二级索引之前删除旧扩展策略。

如果您使用 IAM 策略管理对一个副本表的访问,则应将相同策略应用于该全局表中的所有其他副本。此实践可帮助您在所有副本表中保持一致的权限模型。

通过在全局表中的所有副本上使用相同的 IAM 策略,您还可以避免授予对全局表数据的意外读写访问权限。例如,假设一个用户只对全局表中的一个副本具有访问权限。如果该用户可以向此副本写入数据,则 DynamoDB 会将写入数据传播到所有其他副本表。实际上,用户可以(直接)对全局表中的所有其他副本进行写入。通过对所有副本表使用一致的 IAM 策略可以避免此情况。

例如:允许 CreateGlobalTable 操作

在将副本添加到全局表之前,您必须具有全局表及其每个副本表的 dynamodb:CreateGlobalTable 权限。

以下 IAM 策略授予允许对所有表执行 CreateGlobalTable 操作的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:CreateGlobalTable"], "Resource": "*" } ] }

例如:允许 UpdateGlobalTable、DescribeLimits、application-autoscaling:DeleteScalingPolicy 和 application-autoscaling:DeregisterScalableTarget 操作

要在 UpdateGlobalTableSettings 中更新全局表的设置 (DynamoDB),您必须具有 dynamodb:UpdateGlobalTabledynamodb:DescribeLimitsapplication-autoscaling:DeleteScalingPolicyapplication-autoscaling:DeregisterScalableTarget 权限。

以下 IAM 策略授予允许对所有表执行 UpdateGlobalTableSettings 操作的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateGlobalTable", "dynamodb:DescribeLimits", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeregisterScalableTarget" ], "Resource": "*" } ] }

例如:允许仅对特定区域中允许具有副本的特定全局表名称执行 CreateGlobalTable 操作

以下 IAM 策略授予权限以允许 CreateGlobalTable 操作创建名为 Customers 的全局表,该表具有两个区域中的副本。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:CreateGlobalTable", "Resource": [ "arn:aws:dynamodb::123456789012:global-table/Customers", "arn:aws:dynamodb:us-east-1:123456789012:table/Customers", "arn:aws:dynamodb:us-west-1:123456789012:table/Customers" ] } ] }