Amazon DynamoDB
开发人员指南 (API 版本 2012-08-10)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 IAM 用于全局表

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

有关服务相关角色的更多信息,请参阅 IAM 用户指南 中的使用服务相关角色

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

  • 要添加的副本表。

  • 已经是全局表一部分的各个现有副本表。

  • 全局表本身。

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

更新现有扩展策略时需要 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 操作

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

以下 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" ] } ] }