

# 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 Management Console, AWS API, AWS Command Line Interface(AWS CLI), AWS SDK 또는 AWS CloudFormation을 사용하여 새 DynamoDB 테이블 또는 기존 DynamoDB 테이블에 태그를 추가할 수 있습니다. 예를 들어 다음 [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) 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단계: 허용된 권한 테스트
<a name="abac-test-permissions"></a>

1. AWS 계정의 테스트 사용자 또는 역할에 IAM 정책을 연결합니다. 사용하는 IAM 위탁자가 다른 정책을 통해 DynamoDB 테이블에 이미 액세스할 수 없는지 확인합니다.

1. DynamoDB 테이블에 값이 `"staging"`인 `"environment"` 태그 키가 포함되어 있는지 확인합니다.

1. 태그가 지정된 테이블에서 `dynamodb:PutItem` 및 `dynamodb:UpdateItem` 작업을 수행합니다. `"environment": "staging"` 태그 키-값 페어가 있는 경우 이러한 작업이 성공합니다.

   `"environment": "staging"` 태그 키-값 페어가 없는 테이블에서 이러한 작업을 수행하면 `AccessDeniedException`과 함께 요청이 실패합니다.

다음 섹션에 설명된 다른 [샘플 사용 사례](abac-example-use-cases.md)를 검토하여 ABAC를 구현하고 추가 테스트를 수행할 수도 있습니다.