本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
DynamoDB 全域資料表安全性
全域資料表複本是 DynamoDB 資料表,因此您可以使用與單一區域資料表相同的方法來控制對複本的存取,包括 AWS Identity and Access Management (IAM) 身分政策和以資源為基礎的政策。
本主題說明如何使用 IAM 許可和 AWS Key Management Service (AWS KMS) 加密來保護 DynamoDB 全域資料表。您會了解允許跨區域複寫和自動擴展的服務連結角色 (SLR)、建立、更新和刪除全域資料表 所需的 IAM 許可,以及多區域最終一致性 (MREC) 和多區域強式一致性 (MRSC) 資料表之間的差異。您也會了解 AWS KMS 加密金鑰,以安全地管理跨區域複寫。
全域資料表的服務連結角色
DynamoDB 全域資料表依賴服務連結角色 (SLRs) 來管理跨區域複寫和自動擴展功能。
您只需要為每個 AWS 帳戶設定這些角色一次。建立之後,相同的角色會為您帳戶中的所有全域資料表提供服務。如需服務連結角色的詳細資訊,請參閱《IAM 使用者指南》中的使用服務連結角色。
複寫服務連結角色
當您建立第一個全域資料表時,Amazon DynamoDB 會自動建立AWSServiceRoleForDynamoDBReplication服務連結角色 (SLR)。此角色會為您管理跨區域複寫。
將資源型政策套用至複本時,請確定您不會拒絕 中定義的任何許可AWSServiceRoleForDynamoDBReplicationPolicy給 SLR 委託人,因為這會中斷複寫。如果您拒絕必要的 SLR 許可權限,將停止與受影響複本之間的複寫,而複本資料表狀態將變更為 REPLICATION_NOT_AUTHORIZED。
-
對於多區域最終一致性 (MREC) 全域資料表,如果複本保持
REPLICATION_NOT_AUTHORIZED狀態超過 20 小時,則複本會不可復原地轉換為單一區域 DynamoDB 資料表。 -
對於多區域強式一致性 (MRSC) 全域資料表,拒絕必要的許可會導致
AccessDeniedException進行寫入和強式一致讀取操作。如果複本停留在REPLICATION_NOT_AUTHORIZED狀態超過七天,複本會永久無法存取,且寫入和強式一致性讀取操作會繼續失敗並發生錯誤。複本刪除等部分管理操作將會成功。
自動擴展服務連結角色
設定佈建容量模式的全域資料表時,必須為全域資料表設定自動擴展。DynamoDB Auto Scaling 服務會使用 AWS Application Auto Scaling 服務動態調整全域資料表複本上的佈建輸送量容量。Application Auto Scaling 服務會建立名為 的服務連結角色 (SLR)AWSServiceRoleForApplicationAutoScaling_DynamoDBTable。當您第一次設定 DynamoDB 資料表的自動擴展時,會在 AWS 您的帳戶中自動建立此服務連結角色。它允許 Application Auto Scaling 受管佈建資料表容量並建立 CloudWatch 警示。
將資源型政策套用至複本時,請確定您不會拒絕 中定義的任何許可AWSApplicationAutoscalingDynamoDBTablePolicy給 Application Auto Scaling SLR 主體,因為這會中斷自動擴展功能。
服務連結角色的 IAM 政策範例
具有下列條件的 IAM 政策不會影響 DynamoDB 複寫 SLR 和 AWS Auto Scaling SLR 的必要許可。此條件可新增至其他廣泛限制的政策,以避免意外中斷複寫或自動擴展。
下列範例顯示如何從拒絕陳述式中排除服務連結角色主體:
"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws::iam::111122223333:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws::iam::111122223333:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }
全域資料表如何使用 AWS IAM
下列各節說明不同全域資料表操作的必要許可,並提供政策範例,協助您為使用者和應用程式設定適當的存取權。
注意
所描述的所有許可都必須套用至受影響區域中的特定資料表資源 ARN ()。資料表資源 ARN 遵循格式 arn:aws:dynamodb:region:account-id:table/table-name,您需要指定實際的區域、帳戶 ID 和資料表名稱值。
建立全域資料表並新增複本
DynamoDB 全域資料表支援兩種一致性模式:多區域最終一致性 (MREC) 和多區域強式一致性 (MRSC)。MREC 全域資料表可以在任意數量的區域中擁有多個複本,並提供最終一致性。MRSC 全域資料表只需要三個區域 (三個複本或兩個複本和一個見證),並提供與零復原點目標 (RPO) 的強大一致性。
建立全域資料表所需的許可取決於您是否建立具有或沒有見證的全域資料表。
建立全域資料表的許可
初始全域資料表建立和稍後新增複本都需要下列許可。這些許可同時適用於多區域最終一致性 (MREC) 和多區域強一致性 (MRSC) 全域資料表。
-
全域資料表需要跨區域複寫,DynamoDB 會透過AWSServiceRoleForDynamoDBReplication服務連結角色 (SLR) 進行管理。下列許可允許 DynamoDB 在您第一次建立全域資料表時自動建立此角色:
-
iam:CreateServiceLinkedRole
-
-
若要使用
UpdateTableAPI 建立全域資料表或新增複本,您必須具有來源資料表資源的下列許可:-
dynamodb:UpdateTable
-
-
您必須對 區域中的資料表資源具有下列許可,才能新增複本:
-
dynamodb:CreateTable -
dynamodb:CreateTableReplica -
dynamodb:Query -
dynamodb:Scan -
dynamodb:UpdateItem -
dynamodb:PutItem -
dynamodb:GetItem -
dynamodb:DeleteItem -
dynamodb:BatchWriteItem
-
使用見證的 MRSC 全域資料表的其他許可
使用見證區域建立多區域強一致性 (MRSC) 全域資料表時,您必須對所有參與區域中的資料表資源 (包括複本區域和見證區域) 具有下列許可:
-
dynamodb:CreateGlobalTableWitness
建立全域資料表的 IAM 政策範例
下列身分型政策可讓您跨三個區域建立名為「使用者」的 MREC 或 MRSC 全域資料表,包括建立必要的 DynamoDB 複寫服務連結角色。
下列身分型政策可讓您使用 aws:RequestedRegion 條件金鑰跨特定區域建立 DynamoDB 全域資料表複本,包括建立所需的 DynamoDB 複寫服務連結角色。
下列身分型政策可讓您建立名為「使用者」的 DynamoDB MRSC 全域資料表,其中包含 us-east-1 和 us-east-2 中的複本,以及 us-west-2 中的見證,包括建立所需的 DynamoDB 複寫服務連結角色。
此身分型政策可讓您使用 aws:RequestedRegion 條件金鑰,以及跨所有區域建立不受限制的見證,來建立複本僅限於特定區域的 MRSC 全域資料表,包括建立所需的 DynamoDB 複寫服務連結角色。
更新全域資料表
若要使用 UpdateTable API 修改現有全域資料表的複本設定,您需要對進行 API 呼叫的區域中的資料表資源具有下列許可:
-
dynamodb:UpdateTable
您也可以更新其他全域資料表組態,例如自動擴展政策和存留時間設定。這些額外的更新操作需要下列許可:
-
若要使用
UpdateTableReplicaAutoScalingAPI 更新複本自動擴展政策,您必須在包含複本的所有區域中對資料表資源擁有下列許可:-
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
-
-
若要使用
UpdateTimeToLiveAPI 更新存留時間設定,您必須在包含複本的所有區域中對資料表資源擁有下列許可:-
dynamodb:UpdateTimeToLive
請注意,存留時間 (TTL) 僅支援使用多區域最終一致性 (MREC) 設定的全域資料表。如需全域資料表如何使用 TTL 的詳細資訊,請參閱 DynamoDB 全域資料表的運作方式。
-
刪除全域資料表和移除複本
若要刪除全域資料表,您必須移除所有複本。此操作所需的許可會因您是否刪除具有或沒有見證區域的全域資料表而有所不同。
刪除全域資料表和移除複本的許可
移除個別複本和完全刪除全域資料表都需要下列許可。刪除全域資料表組態只會移除不同區域中資料表之間的複寫關係。它不會刪除最後一個剩餘區域中的基礎 DynamoDB 資料表。最後一個區域中的資料表會繼續做為具有相同資料和設定的標準 DynamoDB 資料表存在。這些許可同時適用於多區域最終一致性 (MREC) 和多區域強一致性 (MRSC) 全域資料表。
-
若要使用
UpdateTableAPI 從全域資料表移除複本,您需要 區域中資料表資源的下列許可,以進行 API 呼叫:-
dynamodb:UpdateTable
-
-
您需要每個移除複本之區域中的資料表資源的下列許可:
-
dynamodb:DeleteTable -
dynamodb:DeleteTableReplica
-
使用見證的 MRSC 全域資料表的其他許可
若要使用見證刪除多區域強式一致性 (MRSC) 全域資料表,您必須對所有參與區域中的資料表資源 (包括複本區域和見證區域) 具有下列許可:
-
dynamodb:DeleteGlobalTableWitness
刪除全域資料表複本的 IAM 政策範例
此身分型政策可讓您跨三個區域刪除名為 "users" 的 DynamoDB 全域資料表及其複本:
此身分型政策可讓您刪除名為 "users" 的 MRSC 全域資料表複本和見證:
全域資料表的使用方式 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 狀態超過七天,則視撤銷的特定許可權限而定,複本將封存或永久無法存取。