在 DynamoDB 資料表與索引中使用 ABAC - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 DynamoDB 資料表與索引中使用 ABAC

以下步驟示範如何使用 ABAC 設定權限。在此範例中,您將新增標籤至 DynamoDB 資料表,並建立包含標籤式條件的 IAM 角色。接著,您將透過比對標籤條件,測試 DynamoDB 資料表上可用的權限。

步驟 1:將標籤新增至 DynamoDB 資料表

您可以使用 AWS 管理主控台、 AWS API、 AWS Command Line Interface (AWS CLI)、 AWS SDK 或 將標籤新增至新的或現有的 DynamoDB 資料表 AWS CloudFormation。例如,下列 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 政策,以比較政策中指定的標籤鍵值對與附加至資料表的鍵值對。下列範例政策允許使用者在資料表中放入或更新項目,前提是該資料表包含下列標籤鍵值對:"environment": "staging"。若資料表未具指定的標籤鍵值對,系統將拒絕執行這些操作。

JSON
{ "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:PutItemdynamodb:UpdateItem 動作。若 "environment": "staging" 標籤鍵值對存在,這些動作應可成功執行。

    若在不含 "environment": "staging" 標籤鍵值對的資料表上執行這些動作,請求將失敗並返回 AccessDeniedException

您也可以檢閱下一節中說明的其他範例使用案例,以實作 ABAC 並進行更多測試。