

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

# 在 DynamoDB 資料表與索引中使用 ABAC
<a name="abac-implementation-ddb-tables"></a>

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

**Topics**
+ [步驟 1：將標籤新增至 DynamoDB 資料表](#abac-add-table-tags)
+ [步驟 2：建立包含標籤式條件的 IAM 角色與政策](#abac-create-iam-role)
+ [步驟 3：測試允許的權限](#abac-test-permissions)

## 步驟 1：將標籤新增至 DynamoDB 資料表
<a name="abac-add-table-tags"></a>

您可以使用、 AWS API AWS 管理主控台、 AWS Command Line Interface (AWS CLI)、 AWS SDK 或 將標籤新增至新的或現有的 DynamoDB 資料表 AWS CloudFormation。例如，下列 [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) CLI 指令會將標籤新增至名為 `MusicTable` 的資料表。

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

## 步驟 2：建立包含標籤式條件的 IAM 角色與政策
<a name="abac-create-iam-role"></a>

使用 [aws：ResourceTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) 條件金鑰[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor)，以比較政策中指定的標籤鍵值對與附加至資料表的鍵值對。下列範例政策允許使用者在資料表中放入或更新項目，前提是該資料表包含下列標籤鍵值對：`"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：測試允許的權限
<a name="abac-test-permissions"></a>

1. 將 IAM 政策附加至 AWS 帳戶中的測試使用者或角色。確認您使用的 IAM 主體未經由其他政策擁有對 DynamoDB 資料表的存取權限。

1. 確認您的 DynamoDB 資料表包含值為 `"staging"` 的 `"environment"` 標籤鍵。

1. 在已標記的資料表上執行 `dynamodb:PutItem` 和 `dynamodb:UpdateItem` 動作。若 `"environment": "staging"` 標籤鍵值對存在，這些動作應可成功執行。

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

您也可以檢閱下一節中說明的其他[範例使用案例](abac-example-use-cases.md)，以實作 ABAC 並進行更多測試。