次の手順は、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: 許可されたアクセス許可をテスト
-
IAM ポリシーを AWS アカウントのテストユーザーまたはロールにアタッチします。使用する IAM プリンシパルが、別のポリシーで DynamoDB テーブルに既にアクセスしていないことを確認します。
-
DynamoDB テーブルに、値が
"staging"
の"environment"
タグキーが含まれていることを確認します。 -
タグ付きテーブルで
dynamodb:PutItem
およびdynamodb:UpdateItem
アクションを実行します。"environment": "staging"
タグのキーと値のペアが存在する場合、これらのアクションは成功します。"environment": "staging"
タグのキーと値のペアがないテーブルでこれらのアクションを実行すると、リクエストはAccessDeniedException
で失敗します。
次のセクションで説明する他のサンプルユースケースを確認して、ABAC を実装し、さらにテストを実行することもできます。