속성 기반 액세스 제어(ABAC)는 ID 기반 정책 또는 기타 AWS 정책(예: 리소스 기반 정책 및 조직 IAM 정책)의 태그 조건을 기반으로 액세스 권한을 정의하는 권한 부여 전략입니다. DynamoDB 테이블에 태그를 연결하면 태그 기반 조건을 기준으로 평가됩니다. 테이블과 연결된 인덱스는 테이블에 추가하는 태그를 상속합니다. 각 DynamoDB 테이블에 최대 50개의 태그를 추가할 수 있습니다. 테이블의 모든 태그에 지원되는 최대 크기는 10KB입니다. DynamoDB 리소스 태그 지정 및 태그 지정 제한에 대한 자세한 내용은 DynamoDB에서 리소스 태그 지정 및 DynamoDB의 태그 지정 제한 사항을 참조하세요.
태그를 사용한 AWS 리소스에 대한 액세스 제어에 대한 자세한 내용은 IAM 사용 설명서의 다음 항목을 참조하십시오.
ABAC를 사용하면 팀과 애플리케이션에 서로 다른 액세스 수준을 적용하여 더 적은 수의 정책으로 DynamoDB 테이블에 작업을 수행할 수 있습니다. IAM 정책 조건 요소에서 태그를 지정하여 DynamoDB 테이블 또는 인덱스에 대한 액세스를 제어할 수 있습니다. 이러한 조건은 DynamoDB 테이블 및 인덱스에 대해 IAM 위탁자, 사용자 또는 역할이 가진 액세스 수준을 결정합니다. IAM 위탁자가 DynamoDB에 액세스 요청을 하면 리소스 및 ID의 태그가 IAM 정책의 태그 조건을 기준으로 평가됩니다. 그 이후에는 태그 조건이 충족되는 경우에만 정책이 적용됩니다. 이렇게 하면 다음 중 하나를 효과적으로 설명하는 IAM 정책을 만들 수 있습니다.
-
사용자가 키가
X
, 값이Y
인 태그가 있는 리소스만 관리하도록 허용합니다. -
X
키로 태그가 지정된 리소스에 대한 모든 사용자의 액세스를 거부합니다.
예를 들어 사용자가 태그 키-값 페어 "environment": "staging"
이 있는 테이블만 업데이트하도록 허용하는 정책을 생성할 수 있습니다. aws:ResourceTag 조건 키를 사용하여 해당 테이블에 연결된 태그를 기반으로 테이블에 대한 액세스를 허용하거나 거부할 수 있습니다.
AWS Management Console, AWS API, AWS Command Line Interface(AWS CLI), AWS SDK 또는 AWS CloudFormation을 사용하여 정책을 만드는 동안 속성 기반 조건을 포함할 수 있습니다.
다음 예제에서는 MusicTable
이라는 테이블에 이름이 environment
, 값이 production
인 태그 키가 포함된 경우 UpdateItem 작업을 허용합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:UpdateItem"
],
"Resource": "arn:aws:dynamodb:*:*:table/MusicTable",
"Condition": {
"StringEquals": {
"aws:ResourceTag/environment": "production"
}
}
}
]
}
주제
ABAC를 사용해야 하는 이유는 무엇입니까?
-
더 간단한 정책 관리: 각 IAM 위탁자에 대한 액세스 수준을 정의하기 위해 서로 다른 정책을 만들 필요가 없으므로 더 적은 수의 정책을 사용합니다.
-
규모 조정 가능한 액세스 제어: ABAC를 사용하면 새 DynamoDB 리소스를 만들 때 정책을 업데이트할 필요가 없으므로 액세스 제어 규모 조정이 더 쉬워집니다. 태그를 사용하여 리소스 태그와 일치하는 태그가 포함된 IAM 위탁자에 대한 액세스를 승인할 수 있습니다. 새 IAM 위탁자 또는 DynamoDB 리소스를 온보딩하고 적절한 태그를 적용하여 정책을 변경할 필요 없이 필요한 권한을 자동으로 부여할 수 있습니다.
-
세분화된 권한 관리: 정책을 만들 때 최소 권한을 부여하는 것이 가장 좋습니다. ABAC를 사용하면 IAM 위탁자용 태그를 만들고 이를 사용하여 IAM 위탁자의 태그와 일치하는 특정 작업 및 리소스에 대한 액세스를 부여할 수 있습니다.
-
회사 디렉터리와 맞춤: 태그를 회사 디렉터리의 기존 직원 속성과 매핑하여 액세스 제어 정책을 조직 구조에 맞출 수 있습니다.
DynamoDB와 함께 ABAC를 구현하기 위한 조건 키
AWS 정책에서 다음 조건 키를 사용하여 DynamoDB 테이블 및 인덱스에 대한 액세스 수준을 제어할 수 있습니다.
-
aws:ResourceTag/tag-key: DynamoDB 테이블 또는 인덱스의 태그 키-값 페어가 정책의 태그 키 및 값과 일치하는지 여부에 따라 액세스를 제어합니다. 이 조건 키는 기존 테이블 또는 인덱스에서 작동하는 모든 API와 관련이 있습니다.
dynamodb:ResourceTag
조건은 리소스에 태그를 연결하지 않은 것처럼 평가됩니다. -
aws:RequestTag/tag-key: 요청에서 전달된 태그 키-값 페어를 정책에서 지정한 태그 페어와 비교하도록 허용합니다. 이 조건 키는 요청 페이로드의 일부로 태그가 포함된 API와 관련이 있습니다. 이러한 API에는 CreateTable 및 TagResource가 포함됩니다.
-
aws:TagKeys: 요청의 태그 키를 정책에서 지정한 키와 비교합니다. 이 조건 키는 요청 페이로드의 일부로 태그가 포함된 API와 관련이 있습니다. 해당 API에는
CreateTable
,TagResource
및UntagResource
가 포함됩니다.
DynamoDB와 함께 ABAC를 사용할 때의 고려 사항
ABAC를 DynamoDB 테이블 또는 인덱스와 함께 사용하는 경우 다음 고려 사항이 적용됩니다.
-
DynamoDB 스트림에는 태그 지정 및 ABAC가 지원되지 않습니다.
-
DynamoDB 백업에는 태그 지정 및 ABAC가 지원되지 않습니다. 백업과 함께 ABAC를 사용하려면 AWS Backup을 사용하는 것이 좋습니다.
-
태그는 복원된 테이블에 보존되지 않습니다. 정책에서 태그 기반 조건을 사용하려면 복원된 테이블에 태그를 추가해야 합니다.