DynamoDB グローバルテーブルのセキュリティ - Amazon DynamoDB

DynamoDB グローバルテーブルのセキュリティ

グローバルテーブルレプリカは DynamoDB テーブルであるため、AWS Identity and Access Management (IAM) ID ポリシーやリソースベースのポリシーなど、単一リージョンテーブルに対して行うレプリカへのアクセスを制御するのと同じ方法を使用します。

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

レプリケーションサービスにリンクされたロール

グローバルテーブルを初めて作成する場合は、Amazon DynamoDB によって、AWS Identity and Access Management (IAM) サービスにリンクされたロール (SLR) が自動的に作成されます。SLR の名前は AWSServiceRoleForDynamoDBReplication です。このロールを使用して、お客様に代わって DynamoDB でグローバルテーブルのクロスリージョンレプリケーションを管理できます。

リソースベースのポリシーをレプリカに適用する際は、AWSServiceRoleForDynamoDBReplication ポリシーで定義されている SLR プリンシパルへのアクセス許可を拒否しないでください。拒否すると、レプリケーションが中断されます。必要な SLR アクセス許可を拒否すると、影響を受けるレプリカとの間のレプリケーションは停止し、レプリカテーブルのステータスは「REPLICATION_NOT_AUTHORIZED」に変わります。

  • マルチリージョンの結果整合性 (MREC) 用に設定されたグローバルテーブルのレプリカが 20 時間以上「REPLICATION_NOT_AUTHORIZED」ステータスのままである場合、レプリカは 1 つのリージョンの DynamoDB テーブルに変換され、元に戻せなくなります。

  • マルチリージョンの強力な整合性 (MRSC) 用に設定されたグローバルテーブルレプリカは、書き込みオペレーションと強力な整合性のある読み込みオペレーションに対して AccessDeniedException を返します。MRSC グローバルテーブルのレプリカが 7 日以上「REPLICATION_NOT_AUTHORIZED」ステータスのままである場合、レプリカは永続的にアクセスできなくなり、書き込みオペレーションと強力な整合性のある読み込みオペレーションはエラーで失敗し続けます。レプリカの削除などの一部の管理オペレーションは成功します。

自動スケーリングサービスにリンクされたロール

プロビジョンドキャパシティモードのグローバルテーブルを設定する場合は、グローバルテーブルの自動スケーリングも設定する必要があります。DynamoDB 自動スケーリングは、AWS Application Auto Scaling Service を使用して、グローバルテーブルレプリカのプロビジョニングされたスループットキャパシティを動的に調整します。Application Auto Scaling サービスは、プロビジョニングされたテーブル容量を管理し、CloudWatch アラームを作成するために、AWSServiceRoleForApplicationAutoScaling_DynamoDBTable という名前のサービスにリンクされたロール (SLR) を作成します。リソースベースのポリシーをレプリカに適用する際は、AWSServiceRoleForApplicationAutoScaling_DynamoDBTable ポリシーで定義されている Application Auto Scaling Service SLR プリンシパルへのアクセス許可を拒否しないでください。拒否すると、自動スケーリング機能が中断されます。

サービスリンクロールの詳細については、「IAM ユーザーガイド」の「サービスリンクロールの使用」を参照してください。

グローバルテーブルに必要なアクセス許可

レプリカを作成するには、新しいレプリカを追加するテーブルまたはレプリカに対して次のアクセス許可が必要です。

  • dynamodb:UpdateTable

レプリカを作成するには、新しいレプリカが作成される各リージョンで次のアクセス許可が必要です。

  • dynamodb:CreateTable

  • dynamodb:CreateTableReplica

監視を作成するには、新しい監視を作成するリージョンで次のアクセス許可が必要です。

  • dynamodb:CreateGlobalTableWitness

レプリカテを削除するには、そのレプリカに対して、次のアクセス許可が必要です。

  • dynamodb:DeleteTable

  • dynamodb:DeleteTableReplica

監視を削除するには、その監視に対して、次のアクセス許可が必要です。

  • dynamodb:DeleteGlobalTableWitness

UpdateTableReplicaAutoScaling API を使用して自動スケーリングポリシーを更新するには、レプリカを含むすべてのリージョンで、次のアクセス許可が必要です。

  • application-autoscaling:DeleteScalingPolicy

  • application-autoscaling:DeleteScheduledAction

  • application-autoscaling:DeregisterScalableTarget

  • application-autoscaling:DescribeScalableTargets

  • application-autoscaling:DescribeScalingActivities

  • application-autoscaling:DescribeScalingPolicies

  • application-autoscaling:DescribeScheduledActions

  • application-autoscaling:PutScalingPolicy

  • application-autoscaling:PutScheduledAction

  • application-autoscaling:RegisterScalableTarget

UpdateTimeToLive API を使用して有効期限設定を更新するには、すべてのレプリカに対して次のアクセス許可が必要です。

  • dynamodb:UpdateTimeToLive

IAM ポリシーの例

例: グローバルテーブルを管理する

次の IAM ポリシーは、3 つのリージョンの「ユーザー」テーブルのグローバルテーブルレプリカと監視を作成および削除するアクセス許可を付与します。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowManagingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:CreateGlobalTableWitness", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DeleteGlobalTableWitness", "dynamodb:UpdateTable", "dynamodb:UpdateTimeToLive" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] } ] }

例: ワイルドカード拒否ポリシーから必要な SLR アクセス許可を除外する

以下の条件の IAM ポリシーは、DynamoDB レプリケーション SLR および AWS 自動スケーリング SLR に必要なアクセス許可には影響しません。この条件は、レプリケーションや自動スケーリングが意図せずに中断されないように、制限の広いポリシーに追加できます。

"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }

グローバルテーブルで AWS KMS を使用する方法

すべての DynamoDB テーブルと同様に、グローバルテーブルレプリカは常に AWS Key Management Service (AWS KMS) に保存されている暗号化キーを使用して保管中のデータを暗号化します。

グローバルテーブル内のすべてのレプリカは、同じタイプの KMS キー (AWS 所有キー、AWS マネージドキー、またはカスタマーマネージドキー) で設定する必要があります。

重要

DynamoDB では、レプリカを削除するには、レプリカの暗号化キーにアクセスする必要があります。レプリカの暗号化に使用されるカスタマーマネージドキーを無効化または削除する場合、まずレプリカを削除し、残りのレプリカのいずれかのテーブルステータスが「ACTIVE」に変わるのを待ってから、キーを無効化または削除する必要があります。

マルチリージョンの結果整合性 (MREC) 用に設定されたグローバルテーブルの場合、レプリカの暗号化に使用されるカスタマーマネージドキーへの DynamoDB のアクセスを無効化または取り消すと、レプリカとの間のレプリケーションは停止し、レプリカのステータスは「INACCESSIBLE_ENCRYPTION_CREDENTIALS」に変わります。MREC グローバルテーブルのレプリカが 20 時間以上「INACCESSIBLE_ENCRYPTION_CREDENTIALS」ステータスのままである場合、レプリカは単一リージョンの DynamoDB テーブルに変換され、元に戻せなくなります。

マルチリージョンの強力な整合性 (MRSC) 用に設定されたグローバルテーブルの場合、レプリカの暗号化に使用されるカスタマーマネージドキーへの DynamoDB のアクセスを無効化または取り消すと、レプリカとの間のレプリケーションは停止し、レプリカへの書き込みまたは強力な整合性のある読み込みを実行しようとするとエラーが返され、レプリカのステータスは「INACCESSIBLE_ENCRYPTION_CREDENTIALS」に変わります。MRSC グローバルテーブルのレプリカが 7 日以上「INACCESSIBLE_ENCRYPTION_CREDENTIALS」ステータスのままである場合、取り消された特定のアクセス許可に応じて、レプリカはアーカイブされるか、永続的にアクセスできなくなります。