DynamoDB 全局表安全性 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

DynamoDB 全局表安全性

全局表副本是 DynamoDB 表,因此,您可以使用与控制单区域表的访问权限相同的方法来控制副本的访问权限,包括使用 Amazon Identity and Access Management(IAM)身份策略和基于资源的策略。

全局表如何使用 Amazon IAM

复制服务相关角色

当您首次创建全局表时,Amazon DynamoDB 会自动创建一个 Amazon Identity and Access Management(IAM)服务相关角色(SLR)。SLR 名为 AWSServiceRoleForDynamoDBReplication,它支持 DynamoDB 代表您管理全局表的跨区域复制。

在将基于资源的策略应用于副本时,请确保不要拒绝向 SLR 主体授予在 AWSServiceRoleForDynamoDBReplication 策略中定义的任何权限,因为这将中断复制。如果您拒绝所需的 SLR 权限,则与受影响副本之间的复制将停止,副本表的状态将更改为 REPLICATION_NOT_AUTHORIZED

  • 如果配置为多区域最终一致性(MREC)的全局表中的副本保持 REPLICATION_NOT_AUTHORIZED 状态的时间超过 20 小时,则该副本将不可逆地转换为单区域 DynamoDB 表。

  • 对于写入和强一致性读取操作,配置为多区域强一致性(MRSC)的全局表副本将返回 AccessDeniedException。如果 MRSC 全局表中的副本保持 REPLICATION_NOT_AUTHORIZED 状态的时间超过七天,则该副本将变为永久无法访问,并且写入和强一致性读取操作将继续失败并出现错误。某些管理操作(例如副本删除)将获得成功。

自动扩缩服务相关角色

在将全局表配置为预置容量模式时,还必须为全局表配置自动扩缩。DynamoDB 自动扩缩功能使用 Amazon Application Auto Scaling 服务来动态调整全局表副本上的预置吞吐能力。Application Auto Scaling 服务创建一个名为 AWSServiceRoleForApplicationAutoScaling_DynamoDBTable 的服务相关角色(SLR),用于管理预置表容量并创建 CloudWatch 警报。在将基于资源的策略应用于副本时,请确保不要拒绝向 Application Auto Scaling 服务 SLR 主体授予在 AWSServiceRoleForApplicationAutoScaling_DynamoDBTable 策略中定义的任何权限,因为这将中断自动扩缩功能。

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

全局表所需的权限

要创建副本,您必须对要向其中添加新副本的表或副本具有以下权限:

  • dynamodb:UpdateTable

要创建副本,您必须在将要创建新副本的每个区域中拥有以下权限:

  • dynamodb:CreateTable

  • dynamodb:CreateTableReplica

要创建见证者,您必须在将要创建新见证者的区域中拥有以下权限:

  • dynamodb:CreateGlobalTableWitness

要删除副本,您必须对副本具有以下权限:

  • dynamodb:DeleteTable

  • dynamodb:DeleteTableReplica

要删除见证者,您必须对见证者拥有以下权限:

  • dynamodb:DeleteGlobalTableWitness

要通过 UpdateTableReplicaAutoScaling API 更新副本自动扩缩策略,您必须在所有包含副本的区域中拥有以下权限:

  • application-autoscaling:DeleteScalingPolicy

  • application-autoscaling:DeleteScheduledAction

  • application-autoscaling:DeregisterScalableTarget

  • application-autoscaling:DescribeScalableTargets

  • application-autoscaling:DescribeScalingActivities

  • application-autoscaling:DescribeScalingPolicies

  • application-autoscaling:DescribeScheduledActions

  • application-autoscaling:PutScalingPolicy

  • application-autoscaling:PutScheduledAction

  • application-autoscaling:RegisterScalableTarget

要使用 UpdateTimeToLive API 更新生存时间设置,您必须对所有副本具有以下权限:

  • dynamodb:UpdateTimeToLive

示例 IAM policies

示例:管理全局表

以下 IAM 策略授予在三个区域中为“users”表创建和删除全局表副本和见证者的权限:

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowManagingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:CreateGlobalTableWitness", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DeleteGlobalTableWitness", "dynamodb:UpdateTable", "dynamodb:UpdateTimeToLive" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] } ] }

示例:从通配符拒绝策略中排除所需的 SLR 权限

符合以下条件的 IAM 策略不会影响对 DynamoDB 复制 SLR 和 Amazon 自动扩缩 SLR 所需的权限。可以将此条件添加到原本限制性宽泛的其它策略中,以避免无意间中断复制或自动扩缩:

"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }

全局表如何使用 Amazon KMS

与所有 DynamoDB 表一样,全局表副本始终使用存储在 Amazon Key Management Service(Amazon KMS)中的加密密钥对静态数据进行加密。

全局表中的所有副本都必须配置为使用相同类型的 KMS 密钥(Amazon 拥有的密钥、Amazon 托管式密钥或客户自主管理型密钥)。

重要

DynamoDB 需要访问副本的加密密钥才能删除副本。如果您因删除副本而想要禁用或删除用于加密该副本的客户自主管理型密钥,则应先删除该副本,等待剩余副本之一的表状态更改为 ACTIVE,然后再禁用或删除该密钥。

对于配置为多区域最终一致性(MREC)的全局表,如果您禁用或撤销 DynamoDB 对用于加密副本的客户自主管理型密钥的访问权限,则复制到副本和从副本进行复制的过程将停止,而副本状态将更改为 INACCESSIBLE_ENCRYPTION_CREDENTIALS。如果 MREC 全局表中的副本保持 INACCESSIBLE_ENCRYPTION_CREDENTIALS 状态的时间超过 20 小时,则该副本将不可逆地转换为单区域 DynamoDB 表。

对于配置为多区域强一致性(MRSC)的全局表,如果您禁用或撤销 DynamoDB 对用于加密副本的客户自主管理型密钥的访问权限,则复制到副本和从副本进行复制的过程将停止,尝试对副本执行写入或强一致性读取操作将返回错误,而副本状态将更改为 INACCESSIBLE_ENCRYPTION_CREDENTIALS。如果 MRSC 全局表中的副本保持 INACCESSIBLE_ENCRYPTION_CREDENTIALS 状态的时间超过七天,则根据撤销的特定权限,该副本将归档或变得永久无法访问。