

# DynamoDB의 속성 기반 액세스 제어 사용
<a name="attribute-based-access-control"></a>

[속성 기반 액세스 제어(ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)는 ID 기반 정책 또는 기타 AWS 정책(예: 리소스 기반 정책 및 조직 IAM 정책)의 [태그 조건](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)을 기반으로 액세스 권한을 정의하는 권한 부여 전략입니다. DynamoDB 테이블에 태그를 연결하면 태그 기반 조건을 기준으로 평가됩니다. 테이블과 연결된 인덱스는 테이블에 추가하는 태그를 상속합니다. 각 DynamoDB 테이블에 최대 50개의 태그를 추가할 수 있습니다. 테이블의 모든 태그에 지원되는 최대 크기는 10KB입니다. DynamoDB 리소스 태그 지정 및 태그 지정 제한에 대한 자세한 내용은 [DynamoDB에서 리소스 태그 지정](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.Operations.html) 및 [DynamoDB의 태그 지정 제한 사항](Tagging.md#TaggingRestrictions) 섹션을 참조하세요.

태그를 사용한 AWS 리소스에 대한 액세스 제어에 대한 자세한 내용은 IAM 사용 설명서의 다음 항목을 참조하세요.
+ [용 ABAC란 무엇인가요?AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)
+ [태그를 사용한 AWS 리소스 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)

ABAC를 사용하면 팀과 애플리케이션에 서로 다른 액세스 수준을 적용하여 더 적은 수의 정책으로 DynamoDB 테이블에 작업을 수행할 수 있습니다. IAM 정책 [조건 요소](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)에서 태그를 지정하여 DynamoDB 테이블 또는 인덱스에 대한 액세스를 제어할 수 있습니다. 이러한 조건은 DynamoDB 테이블 및 인덱스에 대해 IAM 위탁자, 사용자 또는 역할이 가진 액세스 수준을 결정합니다. IAM 위탁자가 DynamoDB에 액세스 요청을 하면 리소스 및 ID의 태그가 IAM 정책의 태그 조건을 기준으로 평가됩니다. 그 이후에는 태그 조건이 충족되는 경우에만 정책이 적용됩니다. 이렇게 하면 다음 중 하나를 효과적으로 설명하는 IAM 정책을 만들 수 있습니다.
+ *사용자가 키가 `X`, 값이 `Y`인 태그가 있는 리소스만 관리하도록 허용합니다*.
+ * 키로 태그가 지정된 리소스에 대한 모든 사용자의 액세스를 거부합니다.`X`*

예를 들어 사용자가 태그 키-값 페어 `"environment": "staging"`이 있는 테이블만 업데이트하도록 허용하는 정책을 생성할 수 있습니다. [aws:ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) 조건 키를 사용하여 해당 테이블에 연결된 태그를 기반으로 테이블에 대한 액세스를 허용하거나 거부할 수 있습니다.

AWS Management Console, AWS API, AWS Command Line Interface(AWS CLI), AWS SDK 또는 AWS CloudFormation을 사용하여 정책을 만드는 동안 속성 기반 조건을 포함할 수 있습니다.

다음 예제에서는 `MusicTable`이라는 테이블에 이름이 `environment`, 값이 `production`인 태그 키가 포함된 경우 [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) 작업을 허용합니다.

------
#### [ JSON ]

****  

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

------

**Topics**
+ [ABAC를 사용해야 하는 이유는 무엇입니까?](#why-use-abac)
+ [DynamoDB와 함께 ABAC를 구현하기 위한 조건 키](#condition-keys-implement-abac)
+ [DynamoDB와 함께 ABAC를 사용할 때의 고려 사항](#abac-considerations)
+ [DynamoDB에서 ABAC 활성화](abac-enable-ddb.md)
+ [DynamoDB 테이블 및 인덱스와 함께 ABAC 사용](abac-implementation-ddb-tables.md)
+ [DynamoDB 테이블 및 인덱스와 함께 ABAC를 사용하는 예제](abac-example-use-cases.md)
+ [DynamoDB 테이블 및 인덱스의 일반적인 ABAC 오류 해결](abac-troubleshooting.md)

## ABAC를 사용해야 하는 이유는 무엇입니까?
<a name="why-use-abac"></a>
+ **더 간단한 정책 관리:** 각 IAM 위탁자에 대한 액세스 수준을 정의하기 위해 서로 다른 정책을 만들 필요가 없으므로 더 적은 수의 정책을 사용합니다.
+ **규모 조정 가능한 액세스 제어:** ABAC를 사용하면 새 DynamoDB 리소스를 만들 때 정책을 업데이트할 필요가 없으므로 액세스 제어 규모 조정이 더 쉬워집니다. 태그를 사용하여 리소스 태그와 일치하는 태그가 포함된 IAM 위탁자에 대한 액세스를 승인할 수 있습니다. 새 IAM 위탁자 또는 DynamoDB 리소스를 온보딩하고 적절한 태그를 적용하여 정책을 변경할 필요 없이 필요한 권한을 자동으로 부여할 수 있습니다.
+ **세분화된 권한 관리:** 정책을 만들 때 [최소 권한을 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)하는 것이 가장 좋습니다. ABAC를 사용하면 IAM 위탁자용 태그를 만들고 이를 사용하여 IAM 위탁자의 태그와 일치하는 특정 작업 및 리소스에 대한 액세스를 부여할 수 있습니다.
+ **회사 디렉터리와 맞춤:** 태그를 회사 디렉터리의 기존 직원 속성과 매핑하여 액세스 제어 정책을 조직 구조에 맞출 수 있습니다.

## DynamoDB와 함께 ABAC를 구현하기 위한 조건 키
<a name="condition-keys-implement-abac"></a>

AWS 정책에서 다음 조건 키를 사용하여 DynamoDB 테이블 및 인덱스에 대한 액세스 수준을 제어할 수 있습니다.
+ [aws:ResourceTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): DynamoDB 테이블 또는 인덱스의 태그 키-값 페어가 정책의 태그 키 및 값과 일치하는지 여부에 따라 액세스를 제어합니다. 이 조건 키는 기존 테이블 또는 인덱스에서 작동하는 모든 API와 관련이 있습니다.

  `dynamodb:ResourceTag` 조건은 리소스에 태그를 연결하지 않은 것처럼 평가됩니다.
+ [aws:RequestTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): 요청에서 전달된 태그 키-값 페어를 정책에서 지정한 태그 페어와 비교하도록 허용합니다. 이 조건 키는 요청 페이로드의 일부로 태그가 포함된 API와 관련이 있습니다. 이러한 API에는 [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) 및 [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)가 포함됩니다.
+ [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys): 요청의 태그 키를 정책에서 지정한 키와 비교합니다. 이 조건 키는 요청 페이로드의 일부로 태그가 포함된 API와 관련이 있습니다. 해당 API에는 `CreateTable`, `TagResource` 및 `UntagResource`가 포함됩니다.

## DynamoDB와 함께 ABAC를 사용할 때의 고려 사항
<a name="abac-considerations"></a>

ABAC를 DynamoDB 테이블 또는 인덱스와 함께 사용하는 경우 다음 고려 사항이 적용됩니다.
+ DynamoDB 스트림에는 태그 지정 및 ABAC가 지원되지 않습니다.
+ DynamoDB 백업에는 태그 지정 및 ABAC가 지원되지 않습니다. 백업과 함께 ABAC를 사용하려면 [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html)을 사용하는 것이 좋습니다.
+ 태그는 복원된 테이블에 보존되지 않습니다. 정책에서 태그 기반 조건을 사용하려면 복원된 테이블에 태그를 추가해야 합니다.