對全域資料表使用 IAM - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對全域資料表使用 IAM

重要

本文件適用於全域資料表 2017.11.29 版 (舊版),新的全域資料表應避免使用此文件。客戶應盡可能使用 Global Tables 2019.11.21 版 (目前),因為它提供比 2017.11.29 (舊版) 更高的彈性、更高的效率和較少的寫入容量。

若要判斷您使用的是哪個版本,請參閱 判斷您正在使用的 DynamoDB 全域資料表版本。若要將現有全域資料表從 2017.11.29 版更新至 2019.11.21 版 (目前),請參閱 升級全域資料表

當您第一次建立全域資料表時,Amazon DynamoDB 會自動為您建立 AWS Identity and Access Management (IAM) 服務連結角色。此角色名為 AWSServiceRoleForDynamoDBReplication,可讓 DynamoDB 代您管理全域資料表的跨區域複寫。請勿刪除此服務連結角色。若您刪除,則所有全域資料表將無法再運作。

如需服務連結角色的詳細資訊,請參閱 IAM 使用者指南中的使用服務連結角色

若要在 DynamoDB 中建立和維護全域資料表,您必須具備 dynamodb:CreateGlobalTable 許可才能存取下列各項:

  • 您要新增的複本列表。

  • 已經屬於全域資料表的每個現有複本。

  • 全域資料表本身。

若要更新 DynamoDB 中全域資料表的設定 (UpdateGlobalTableSettings),您必須擁有 dynamodb:UpdateGlobalTabledynamodb:DescribeLimitsapplication-autoscaling:DeleteScalingPolicy 以及 application-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 動作

若要更新 DynamoDB 中全域資料表的設定 (UpdateGlobalTableSettings),您必須擁有 dynamodb:UpdateGlobalTabledynamodb:DescribeLimitsapplication-autoscaling:DeleteScalingPolicy 以及 application-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" ] } ] }