DynamoDB 글로벌 테이블 보안
글로벌 테이블 복제본은 DynamoDB 테이블이므로 AWS Identity and Access Management(IAM) ID 정책 및 리소스 기반 정책을 포함하여 단일 리전 테이블에 대해 수행하는 복제본 액세스 제어와 동일한 방법을 사용합니다.
이 주제에서는 IAM 권한 및 AWS Key Management Service(AWS KMS) 암호화를 사용하여 DynamoDB 글로벌 테이블을 보호하는 방법을 다룹니다. 교차 리전 복제 및 자동 크기 조정을 허용하는 서비스 연결 역할(SLR), 글로벌 테이블을 생성, 업데이트 및 삭제하는 데 필요한 IAM 권한, 다중 리전 최종 일관성(MREC) 및 다중 리전 강력한 일관성(MRSC) 테이블 간의 차이점에 대해 알아봅니다. 또한 교차 리전 복제를 안전하게 관리하기 위한 AWS KMS 암호화 키에 대해서도 알아봅니다.
글로벌 테이블에 대한 서비스 연결 역할
DynamoDB 글로벌 테이블은 서비스 연결 역할(SLR)을 사용하여 교차 리전 복제 및 자동 크기 조정 기능을 관리합니다.
이러한 역할은 AWS 계정당 한 번만 설정하면 됩니다. 생성되면 동일한 역할이 계정의 모든 글로벌 테이블을 처리합니다. 서비스 연결 역할에 대한 자세한 내용은 IAM 사용 설명서의 서비스 연결 역할 사용을 참조하세요
복제 서비스 연결 역할
전역 테이블을 처음으로 생성하는 경우, Amazon DynamoDB는 AWSServiceRoleForDynamoDBReplication 서비스 연결 역할(SLR)을 자동으로 생성합니다. 이 역할은 교차 리전 복제를 관리합니다.
복제본에 리소스 기반 정책을 적용할 때는 AWSServiceRoleForDynamoDBReplicationPolicy에 정의된 SLR 위탁자에 대한 권한을 거부하지 마세요. 이렇게 하면 복제가 중단됩니다. 필요한 SLR 권한을 거부하면 영향을 받는 복제본과의 복제가 중지되고 복제본 테이블 상태가 REPLICATION_NOT_AUTHORIZED로 변경됩니다.
-
다중 리전 최종 일관성(MREC)으로 구성된 글로벌 테이블의 경우, 복제본이 20시간 이상
REPLICATION_NOT_AUTHORIZED상태로 유지되는 경우 복제본은 단일 리전 DynamoDB 테이블로 되돌릴 수 없이 변환됩니다. -
다중 리전 강력한 일관성(MRSC) 글로벌 테이블의 경우
AccessDeniedException에 필요한 권한을 거부하면 쓰기 작업과 강력하게 일관된 읽기 작업이 발생합니다. 복제본이 7일 이상REPLICATION_NOT_AUTHORIZED상태를 유지하면 복제본에 영구적으로 액세스할 수 없게 되고, 쓰기 및 강력하게 일관된 읽기 작업이 오류와 함께 계속 실패합니다. 복제본 삭제와 같은 일부 관리 작업은 성공합니다.
IAM 서비스 연결 역할 오토 스케일링
프로비저닝된 용량 모드에 대한 글로벌 테이블을 구성할 때 글로벌 테이블에 대한 오토 스케일링도 구성해야 합니다. DynamoDB 오토 스케일링은 AWS Application Auto Scaling 서비스를 사용하여 글로벌 테이블 복제본에서 프로비저닝된 처리량 용량을 동적으로 조정합니다. Application Auto Scaling 서비스는 AWSServiceRoleForApplicationAutoScaling_DynamoDBTable라는 서비스 연결 역할(SLR)을 생성합니다. 이 서비스 연결 역할은 DynamoDB 테이블에 대한 오토 스케일링을 처음 구성할 때 AWS 계정에 자동으로 생성됩니다. 이를 통해 Application Auto Scaling은 관리형 프로비저닝된 테이블 용량을 사용하고 CloudWatch 경보를 생성할 수 있습니다.
복제본에 리소스 기반 정책을 적용할 때는 AWSApplicationAutoscalingDynamoDBTablePolicy에 정의된 Application Auto Scaling SLR 위탁자에 대한 권한을 거부하지 마세요. 이렇게 하면 오토 스케일링 기능이 중단됩니다.
서비스 연결 역할에 대한 IAM 정책 예제
다음 조건의 IAM 정책은 DynamoDB 복제 SLR 및 AWS Auto Scaling SLR에 필요한 권한에 영향을 주지 않습니다. 이 조건은 의도치 않게 복제 또는 오토 스케일링을 중단하지 않도록 광범위하게 제한적인 정책에 추가할 수 있습니다.
다음 예제에서는 거부 문에서 서비스 연결 역할 보안 주체를 제외하는 방법을 보여줍니다.
"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws::iam::111122223333:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws::iam::111122223333:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }
글로벌 테이블이 AWS IAM을 사용하는 방법
다음 섹션에서는 다양한 글로벌 테이블 작업에 필요한 권한을 설명하고 사용자 및 애플리케이션에 대한 적절한 액세스를 구성하는 데 도움이 되는 정책 예제를 제공합니다.
참고
설명된 모든 권한은 영향을 받는 리전의 특정 테이블 리소스 ARN에 적용되어야 합니다. 테이블 리소스 ARN은 arn:aws:dynamodb:region:account-id:table/table-name 형식을 따르며, 여기서 실제 리전, 계정 ID 및 테이블 이름 값을 지정해야 합니다.
글로벌 테이블 생성 및 복제본 추가
DynamoDB 글로벌 테이블은 다중 리전 최종 일관성(MREC)과 다중 리전 강력한 일관성(MRSC)이라는 두 가지 일관성 모드를 지원합니다. MREC 글로벌 테이블은 여러 리전에 걸쳐 여러 복제본을 가질 수 있으며 최종 일관성을 제공할 수 있습니다. MRSC 글로벌 테이블에는 정확히 3개의 리전(복제본 3개 또는 복제본 2개와 감시자 1개)이 필요하며 제로 목표 복구 시점(RPO)과 강력한 일관성을 제공합니다.
글로벌 테이블을 생성하는 데 필요한 권한은 감시자가 있는 글로벌 테이블을 생성하는지 여부에 따라 달라집니다.
글로벌 테이블 생성 권한
초기 전역 테이블 생성 및 나중에 복제본을 추가하려면 다음 권한이 필요합니다. 이러한 권한은 다중 리전 최종 일관성(MREC) 및 다중 리전 강력한 일관성(MRSC) 글로벌 테이블 모두에 적용됩니다.
-
글로벌 테이블에는 DynamoDB가 AWSServiceRoleForDynamoDBReplication 서비스 연결 역할(SLR)을 통해 관리하는 교차 리전 복제가 필요합니다. 다음 권한을 통해 DynamoDB는 글로벌 테이블을 처음 생성할 때 이 역할을 자동으로 생성할 수 있습니다.
-
iam:CreateServiceLinkedRole
-
-
UpdateTableAPI를 사용하여 글로벌 테이블을 생성하거나 복제본을 추가하려면 소스 테이블 리소스에 대해 다음 권한이 있어야 합니다.-
dynamodb:UpdateTable
-
-
복제본을 추가하려면 리전의 테이블 리소스에 대해 다음 권한이 있어야 합니다.
-
dynamodb:CreateTable -
dynamodb:CreateTableReplica -
dynamodb:Query -
dynamodb:Scan -
dynamodb:UpdateItem -
dynamodb:PutItem -
dynamodb:GetItem -
dynamodb:DeleteItem -
dynamodb:BatchWriteItem
-
감시를 사용하는 MRSC 글로벌 테이블에 대한 추가 권한
감시 리전을 사용하여 다중 리전 강력한 일관성(MRSC) 글로벌 테이블을 생성할 때는 모든 참여 리전(복제 리전 및 감시 리전 모두 포함)의 테이블 리소스에 대해 다음 권한이 있어야 합니다.
-
dynamodb:CreateGlobalTableWitness
글로벌 테이블 생성을 위한 IAM 정책 예제
다음 자격 증명 기반 정책을 사용하면 필요한 DynamoDB 복제 서비스 연결 역할 생성을 포함하여 세 리전에서 ‘사용자’라는 MREC 또는 MRSC 글로벌 테이블을 생성할 수 있습니다.
다음 자격 증명 기반 정책을 사용하면 필요한 DynamoDB 복제 서비스 연결 역할 생성을 포함하여 aws:RequestedRegion 조건 키를 사용하여 특정 리전에서 DynamoDB 글로벌 테이블 복제본을 생성할 수 있습니다.
다음 자격 증명 기반 정책을 사용하면 필수 DynamoDB 복제 서비스 연결 역할 생성을 포함하여 us-east-1 및 us-east-2의 복제본과 us-west-2의 감시를 사용하여 ‘사용자’라는 DynamoDB MRSC 글로벌 테이블을 생성할 수 있습니다.
이 자격 증명 기반 정책을 사용하면 필요한 DynamoDB 복제 서비스 연결 역할 생성을 포함하여 모든 리전에서 aws:RequestedRegion 조건 키 및 무제한 감시 생성을 사용하여 특정 리전으로 제한된 복제본이 있는 MRSC 글로벌 테이블을 생성할 수 있습니다.
글로벌 테이블 업데이트
UpdateTable API를 사용하여 기존 글로벌 테이블에 대한 복제본 설정을 수정하려면 API 직접 호출을 수행하는 리전의 테이블 리소스에 대해 다음 권한이 필요합니다.
-
dynamodb:UpdateTable
오토 스케일링 정책 및 TTL(Time To Live) 설정과 같은 다른 글로벌 테이블 구성을 추가로 업데이트할 수 있습니다. 이러한 추가 업데이트 작업에는 다음 권한이 필요합니다.
-
UpdateTableReplicaAutoScalingAPI를 사용하여 복제본 오토 스케일링 정책을 업데이트하려면 복제본이 포함된 모든 리전의 테이블 리소스에서 다음 권한이 있어야 합니다.-
application-autoscaling:DeleteScalingPolicy -
application-autoscaling:DeleteScheduledAction -
application-autoscaling:DeregisterScalableTarget -
application-autoscaling:DescribeScalableTargets -
application-autoscaling:DescribeScalingActivities -
application-autoscaling:DescribeScalingPolicies -
application-autoscaling:DescribeScheduledActions -
application-autoscaling:PutScalingPolicy -
application-autoscaling:PutScheduledAction -
application-autoscaling:RegisterScalableTarget
-
-
UpdateTimeToLiveAPI를 사용하여 TTL(Time to Live) 설정을 업데이트하려면 복제본이 포함된 모든 리전의 테이블 리소스에서 다음 권한이 있어야 합니다.-
dynamodb:UpdateTimeToLive
TTL(Time To Live)은 다중 리전 최종 일관성(MREC)으로 구성된 글로벌 테이블에 대해서만 지원됩니다. 글로벌 테이블에 TTL을 사용하는 방법에 대한 자세한 내용은 DynamoDB 글로벌 테이블 작동 방식을 참조하세요.
-
글로벌 테이블 삭제 및 복제본 제거
글로벌 테이블을 삭제하려면 모든 복제본을 제거해야 합니다. 이 작업에 필요한 권한은 감시 리전이 있는 글로벌 테이블을 삭제하는지 여부에 따라 달라집니다.
글로벌 테이블 삭제 및 복제본 제거 권한
개별 복제본을 제거하고 글로벌 테이블을 완전히 삭제하려면 다음 권한이 필요합니다. 글로벌 테이블 구성을 삭제하면 다른 리전의 테이블 간 복제 관계만 제거됩니다. 마지막 남은 리전의 기본 DynamoDB 테이블은 삭제되지 않습니다. 마지막 리전의 테이블은 동일한 데이터 및 설정을 가진 표준 DynamoDB 테이블로 계속 존재합니다. 이러한 권한은 다중 리전 최종 일관성(MREC) 및 다중 리전 강력한 일관성(MRSC) 글로벌 테이블 모두에 적용됩니다.
-
UpdateTableAPI를 사용하여 글로벌 테이블에서 복제본을 제거하려면 API 직접 호출을 수행하는 리전의 테이블 리소스에 대해 다음 권한이 필요합니다.-
dynamodb:UpdateTable
-
-
복제본을 제거하는 각 리전의 테이블 리소스에 대해 다음 권한이 필요합니다.
-
dynamodb:DeleteTable -
dynamodb:DeleteTableReplica
-
감시를 사용하는 MRSC 글로벌 테이블에 대한 추가 권한
감시가 있는 다중 리전 강력한 일관성(MRSC) 글로벌 테이블을 삭제하려면 모든 참여 리전(복제본 리전과 감시 리전 모두 포함)의 테이블 리소스에 대해 다음 권한이 있어야 합니다.
-
dynamodb:DeleteGlobalTableWitness
글로벌 테이블 복제본을 삭제하는 IAM 정책 예제
이 자격 증명 기반 정책을 사용하면 다음 세 리전에서 ‘사용자’라는 DynamoDB 글로벌 테이블과 해당 복제본을 삭제할 수 있습니다.
이 자격 증명 기반 정책을 사용하면 복제본과 ‘사용자’라는 MRSC 글로벌 테이블의 감시자를 삭제할 수 있습니다.
글로벌 테이블이 AWS KMS를 사용하는 방법
모든 DynamoDB 테이블과 마찬가지로 글로벌 테이블 복제본은 항상 AWS Key Management Service(AWS KMS)에 저장된 암호화 키를 사용하여 저장 데이터를 암호화합니다.
글로벌 테이블의 모든 복제본은 동일한 유형의 KMS 키(AWS 소유 키, AWS 관리형 키 또는 고객 관리형 키)로 구성되어야 합니다.
중요
복제본을 삭제하려면 DynamoDB에서 복제본의 암호화 키에 액세스해야 합니다. 복제본을 삭제하기 때문에 복제본을 암호화하는 데 사용되는 고객 관리형 키를 비활성화하거나 삭제하려면 먼저 복제본을 삭제하고, 나머지 복제본 중 하나의 테이블 상태가 ACTIVE로 변경될 때까지 기다린 다음, 키를 비활성화하거나 삭제해야 합니다.
다중 리전 최종 일관성(MREC)을 위해 구성된 글로벌 테이블의 경우 복제본을 암호화하는 데 사용되는 고객 관리형 키에 대한 DynamoDB의 액세스를 비활성화하거나 취소하면 복제본과의 복제가 중지되고 복제본 상태가 INACCESSIBLE_ENCRYPTION_CREDENTIALS로 변경됩니다. MREC 글로벌 테이블의 복제본이 20시간 이상 INACCESSIBLE_ENCRYPTION_CREDENTIALS 상태로 유지되는 경우 복제본은 단일 리전 DynamoDB 테이블로 되돌릴 수 없이 변환됩니다.
다중 리전 강력한 일관성(MRSC)으로 구성된 글로벌 테이블의 경우 복제본을 암호화하는 데 사용되는 고객 관리형 키에 대한 DynamoDB의 액세스를 비활성화하거나 취소하면 복제본과의 복제가 중지되고, 복제본에 대한 쓰기 또는 강력하게 일관된 읽기 수행을 시도했을 때 오류가 반환되며, 복제본 상태가 INACCESSIBLE_ENCRYPTION_CREDENTIALS로 변경됩니다. MRSC 글로벌 테이블의 복제본이 7일 이상 INACCESSIBLE_ENCRYPTION_CREDENTIALS 상태로 유지되는 경우 취소된 특정 권한에 따라 복제본이 아카이브되거나 영구적으로 액세스할 수 없게 됩니다.