グローバルテーブルで IAM を使用する
グローバルテーブルを初めて作成する場合は、Amazon DynamoDB によって、AWS Identity and Access Management (IAM)
サービスにリンクされたロールが自動的に作成されます。このロールの名前は AWSServiceRoleForDynamoDBReplication
です。このロールを使用して、お客様に代わって DynamoDB でグローバルテーブルのクロスリージョンレプリケーションを管理できます。このサービスにリンクされたロールは削除しないでください。削除すると、グローバルテーブルはすべて使用できなくなります。
(サービスにリンクされたロールの詳細については、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 ポリシーは、2 つのリージョンにレプリカを持つ Customers
というグローバルテーブルを作成するアクションを許可する CreateGlobalTable
アクセス許可を付与します。
{ "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" ] } ] }