DynamoDB テーブルとインデックスでの ABAC の使用 - Amazon DynamoDB

DynamoDB テーブルとインデックスでの ABAC の使用

次の手順は、ABAC を使用してアクセス許可を設定する方法を示しています。このシナリオ例では、DynamoDB テーブルにタグを追加し、タグベースの条件を含むポリシーを使用して IAM ロールを作成します。次に、タグ条件を一致させて、DynamoDB テーブルに対して許可されているアクセス許可をテストします。

ステップ 1: DynamoDB テーブルにタグを追加

AWS Management Console、AWS API、AWS Command Line Interface (AWS CLI)、AWS SDK、または AWS CloudFormation を使用して、新規または既存の DynamoDB テーブルにタグを追加できます。例えば、次の tag-resource CLI コマンドは、MusicTable という名前のテーブルにタグを追加します。

aws dynamodb tag-resource —resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable —tags Key=environment,Value=staging

ステップ 2: タグベースの条件を含むポリシーを使用して IAM ロールを作成

aws:ResourceTag/tag-key 条件キーを使用して IAM ポリシーを作成し、IAM ポリシーで指定されたタグのキーと値のペアを、テーブルにアタッチされたキーと値のペアと比較します。次のポリシー例では、これらのテーブルにタグのキーと値のペア "environment": "staging" が含まれている場合、ユーザーがテーブルに項目を配置または更新することを許可します。テーブルに指定されたタグのキーと値のペアがない場合、これらのアクションは拒否されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem" ], "Resource": "arn:aws:dynamodb:*:*:table/*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "staging" } } } ] }

ステップ 3: 許可されたアクセス許可をテスト

  1. IAM ポリシーを AWS アカウントのテストユーザーまたはロールにアタッチします。使用する IAM プリンシパルが、別のポリシーで DynamoDB テーブルに既にアクセスしていないことを確認します。

  2. DynamoDB テーブルに、値が "staging""environment" タグキーが含まれていることを確認します。

  3. タグ付きテーブルで dynamodb:PutItem および dynamodb:UpdateItem アクションを実行します。"environment": "staging" タグのキーと値のペアが存在する場合、これらのアクションは成功します。

    "environment": "staging" タグのキーと値のペアがないテーブルでこれらのアクションを実行すると、リクエストは AccessDeniedException で失敗します。

次のセクションで説明する他のサンプルユースケースを確認して、ABAC を実装し、さらにテストを実行することもできます。