グローバルテーブルで IAM を使用します - Amazon DynamoDB

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

重要

このドキュメントはグローバルテーブルのバージョン 2017.11.29 (レガシー) を対象としています。新しいグローバルテーブルでは使用しないでください。可能な限り、グローバルテーブルバージョン 2019.11.21 (現行) を使用してください。2017.11.29 (レガシー) よりも柔軟性と効率が高く、消費する書き込みキャパシティが少ないためです。

ご使用のバージョンを確認するには、「使用しているグローバルテーブルのバージョンを確認する」を参照してください。既存のグローバルテーブルを 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: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 ポリシーは、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" ] } ] }