DynamoDB 全域資料表安全性 - Amazon DynamoDB

DynamoDB 全域資料表安全性

全域資料表複本是 DynamoDB 資料表,因此您可以使用與單一區域資料表相同的方法來控制存取複本,包括 AWS Identity and Access Management (IAM) 身分政策和資源型政策。

全域資料表如何使用 AWS IAM

複寫服務連結角色

您第一次建立全域資料表時,Amazon DynamoDB 會自動為您建立 AWS Identity and Access Management (IAM) 服務連結角色 (SLR)。此 SLR 名為 AWSServiceRoleForDynamoDBReplication,可讓 DynamoDB 代您管理全域資料表的跨區域複寫。

將資源型政策套用至複本時,請確保不會拒絕 AWSServiceRoleForDynamoDBReplication 政策中定義的任何許可權限給 SLR 主體,因為這會中斷複寫。如果您拒絕必要的 SLR 許可權限,將停止與受影響複本之間的複寫,而複本資料表狀態將變更為 REPLICATION_NOT_AUTHORIZED

  • 如果複本在設定為多區域最終一致性 (MREC) 的全域資料表中保持 REPLICATION_NOT_AUTHORIZED 狀態超過 20 小時,則複本會不可復原地轉換為單一區域 DynamoDB 資料表。

  • 設定為多區域強一致性 (MRSC) 的全域資料表複本會傳回 AccessDeniedException,以進行寫入和高度一致性讀取操作。如果 MRSC 全域資料表中的複本保持 REPLICATION_NOT_AUTHORIZED 狀態超過七天,複本會永久無法存取,且寫入和高度一致性讀取操作會繼續失敗並發生錯誤。複本刪除等部分管理操作將會成功。

自動擴展服務連結角色

您設定佈建容量模式的全域資料表時,也必須為全域資料表設定自動擴展。DynamoDB 自動擴展會使用 AWS Application Auto Scaling Service 動態調整在全域資料表複本佈建的輸送容量。Application Auto Scaling 服務會建立名為 AWSServiceRoleForApplicationAutoScaling_DynamoDBTable 的服務連結角色 (SLR),以管理佈建的資料表容量並建立 CloudWatch 警示。將資源型政策套用至複本時,請確保不會拒絕 AWSServiceRoleForApplicationAutoScaling_DynamoDBTable 政策中定義的任何許可權限給 Application Auto Scaling Service SLR 主體,因為這會中斷自動擴展功能。

如需服務連結角色的詳細資訊,請參閱《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 政策

範例:管理全域資料表

下列 IAM 政策授予許可權限,以建立和刪除三個區域中「使用者」資料表的全域資料表複本和見證:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "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" ] }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

範例:從萬用字元拒絕政策排除必要 SLR 的許可權限

具有下列條件的 IAM 政策不會影響 DynamoDB 複寫 SLR 和 AWS 自動擴展 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" ] } }

全域資料表如何使用 AWS KMS

與所有 DynamoDB 資料表一樣,全域資料表複本一律使用存放在 AWS Key Management Service (AWS KMS) 中的加密金鑰來加密靜態資料。

全域資料表的所有複本都必須設定為相同類型的 KMS 金鑰 (AWS 擁有的金鑰、AWS 受管金鑰或客戶自管金鑰)。

重要

DynamoDB 需要存取複本的加密金鑰才能刪除複本。如果您因為需要刪除複本而想停用或刪除用於加密複本的客戶自管金鑰,您應該先刪除複本,等待其中一個剩餘複本的資料表狀態變更為 ACTIVE,然後再停用或刪除金鑰。

對於設定為多區域最終一致性 (MREC) 的全域資料表,如果您停用或撤銷 DynamoDB 對用於加密複本之客戶自管金鑰的存取權,則將停止與複本之間的複寫,複本狀態將變更為 INACCESSIBLE_ENCRYPTION_CREDENTIALS。如果複本在 MREC 全域資料表中保持 INACCESSIBLE_ENCRYPTION_CREDENTIALS 狀態超過 20 小時,則複本會不可復原地轉換為單一區域 DynamoDB 資料表。

對於設定為多區域強一致性 (MRSC) 的全域資料表,如果您停用或撤銷 DynamoDB 對用於加密複本之客戶自管金鑰的存取權,則將停止與複本之間的複寫,嘗試對複本執行寫入或高度一致性讀取將傳回錯誤,且複本狀態將變更為 INACCESSIBLE_ENCRYPTION_CREDENTIALS。如果 MRSC 全域資料表的複本保持 INACCESSIBLE_ENCRYPTION_CREDENTIALS 狀態超過七天,則視撤銷的特定許可權限而定,複本將封存或永久無法存取。