Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

グローバルテーブルで IAM を使用する

グローバルテーブルを初めて作成する場合は、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: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: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 ポリシーは、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" ] } ] }