グローバルテーブルで IAM を使用します
重要
このドキュメントはグローバルテーブルのバージョン 2017.11.29 (レガシー) を対象としています。新しいグローバルテーブルでは使用しないでください。可能な限り、グローバルテーブルバージョン 2019.11.21 (現行) を使用してください。2017.11.29 (レガシー) よりも柔軟性と効率が高く、消費する書き込みキャパシティが少ないためです。
ご使用のバージョンを確認するには、「使用している DynamoDB グローバルテーブルのバージョンを確認する」を参照してください。既存のグローバルテーブルを 2017.11.29 (レガシー) からバージョン 2019.11.21 (現行) に更新する方法については、「グローバルテーブルのアップグレード」を参照してください。
グローバルテーブルを初めて作成する場合は、Amazon DynamoDB によって、AWS Identity and Access Management (IAM) サービスにリンクされたロールが自動的に作成されます。このロールの名前は AWSServiceRoleForDynamoDBReplication
サービスリンクロールの詳細については、「IAM ユーザーガイド」の「サービスリンクロールの使用」を参照してください。
DynamoDB でグローバルテーブルを作成および管理するには、次のそれぞれにアクセスするための dynamodb:CreateGlobalTable
許可が必要です。
-
追加するレプリカテーブル。
-
すでにグローバルテーブルの一部になっている既存の各レプリカ。
-
グローバルテーブル自体。
DynamoDB のグローバルテーブルの設定 (UpdateGlobalTableSettings
) を更新するには、dynamodb:UpdateGlobalTable
、dynamodb:DescribeLimits
、application-autoscaling:DeleteScalingPolicy
および application-autoscaling:DeregisterScalableTarget
の許可が必要です。
application-autoscaling:DeleteScalingPolicy
および application-autoscaling:DeregisterScalableTarget
許可は、既存のスケーリングポリシーを更新するときに必要です。これは、新しいポリシーをテーブルまたはセカンダリインデックスに添付する前に、グローバルテーブルサービスが古いスケーリングポリシーを削除できるようにするためです。
IAM ポリシーを使用して 1 つのレプリカテーブルへのアクセスを管理する場合は、そのグローバルテーブル内の他のすべてのレプリカに同じポリシーを適用する必要があります。この方法により、すべてのレプリカテーブルで一貫した許可モデルを維持できます。
グローバルテーブル内のすべてのレプリカで同じ IAM ポリシーを使用することにより、グローバルテーブルデータに対する意図しない読み込みおよび書き込みアクセスを許可しないようにすることもできます。たとえば、グローバルテーブル内の 1 つのレプリカにのみアクセスできるユーザーについて考えてみます。そのユーザーがこのレプリカに書き込むことができる場合、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:UpdateGlobalTable
、dynamodb:DescribeLimits
、application-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
アクションが 2 つのリージョンにレプリカを持つ 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" ] } ] }