DynamoDB 글로벌 테이블 보안 - Amazon DynamoDB

DynamoDB 글로벌 테이블 보안

글로벌 테이블 복제본은 DynamoDB 테이블이므로 AWS Identity and Access Management(IAM) ID 정책 및 리소스 기반 정책을 포함하여 단일 리전 테이블에 대해 수행하는 복제본 액세스 제어와 동일한 방법을 사용합니다.

글로벌 테이블이 AWS IAM을 사용하는 방법

복제 서비스 연결 역할

글로벌 테이블을 처음으로 만드는 경우, Amazon DynamoDB는 AWS Identity and Access Management(IAM) 서비스 연결 역할(SLR)을 자동으로 만듭니다. 이름이 AWSServiceRoleForDynamoDBReplication인 SLR은 DynamoDB가 사용자를 대신하여 글로벌 테이블에 대한 교차 리전 복제를 관리하도록 허용합니다.

복제본에 리소스 기반 정책을 적용할 때는 AWSServiceRoleForDynamoDBReplication 정책에 정의된 SLR 위탁자에 대한 권한을 거부하지 마세요. 이렇게 하면 복제가 중단됩니다. 필요한 SLR 권한을 거부하면 영향을 받는 복제본과의 복제가 중지되고 복제본 테이블 상태가 REPLICATION_NOT_AUTHORIZED로 변경됩니다.

  • 다중 리전 최종 일관성(MREC)으로 구성된 글로벌 테이블의 복제본이 20시간 이상 REPLICATION_NOT_AUTHORIZED 상태로 유지되는 경우 복제본은 단일 리전 DynamoDB 테이블로 되돌릴 수 없이 변환됩니다.

  • 다중 리전 강력한 일관성(MRSC)을 위해 구성된 글로벌 테이블 복제본은 쓰기 및 강력하게 일관된 읽기 작업을 위해 AccessDeniedException을 반환합니다. MRSC 글로벌 테이블의 복제본이 7일 이상 REPLICATION_NOT_AUTHORIZED 상태를 유지하면 복제본에 영구적으로 액세스할 수 없게 되고, 쓰기 및 강력하게 일관된 읽기 작업이 오류와 함께 계속 실패합니다. 복제본 삭제와 같은 일부 관리 작업은 성공합니다.

IAM 서비스 연결 역할 오토 스케일링

프로비저닝된 용량 모드에 대한 글로벌 테이블을 구성할 때 글로벌 테이블에 대한 오토 스케일링도 구성해야 합니다. DynamoDB 오토 스케일링은 AWS Application Auto Scaling Service를 사용하여 글로벌 테이블 복제본에서 프로비저닝된 처리량 용량을 동적으로 조정합니다. Application Auto Scaling 서비스는 AWSServiceRoleForApplicationAutoScaling_DynamoDBTable이라는 서비스 연결 역할(SLR)을 만들어 프로비저닝된 테이블 용량을 관리하고 CloudWatch 경보를 만듭니다. 복제본에 리소스 기반 정책을 적용할 때는 AWSServiceRoleForApplicationAutoScaling_DynamoDBTable 정책에 정의된 Application Auto Scaling Service SLR 위탁자에 대한 권한을 거부하지 마세요. 이렇게 하면 오토 스케일링 기능이 중단됩니다.

서비스 연결 역할에 대한 자세한 내용은 IAM 사용 설명서서비스 연결 역할 사용을 참조하세요

글로벌 테이블 업그레이드에 필요한 권한

복제본을 만들려면 새 복제본을 추가할 테이블 또는 복제본에 대해 다음 권한이 있어야 합니다.

  • dynamodb:UpdateTable

복제본을 만들려면 새 복제본이 만들어질 각 리전에서 다음 권한이 있어야 합니다.

  • dynamodb:CreateTable

  • dynamodb:CreateTableReplica

감시자를 만들려면 새 감시자가 만들어질 리전에서 다음 권한이 있어야 합니다.

  • dynamodb:CreateGlobalTableWitness

복제본을 삭제하려면 복제본에 대해 다음 권한이 있어야 합니다.

  • dynamodb:DeleteTable

  • dynamodb:DeleteTableReplica

감시자를 삭제하려면 감시자에 대해 다음 권한이 있어야 합니다.

  • dynamodb:DeleteGlobalTableWitness

UpdateTableReplicaAutoScaling API를 사용하여 복제본 오토 스케일링 정책을 업데이트하려면 복제본이 포함된 모든 리전에서 다음 권한이 있어야 합니다.

  • 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

UpdateTimeToLive API를 사용하여 Time to Live(TTL) 설정을 업데이트하려면 모든 복제본에 대해 다음 권한이 있어야 합니다.

  • dynamodb:UpdateTimeToLive

예제 IAM 정책

예: 글로벌 테이블 관리

다음 IAM 정책은 세 리전의 ‘users’ 테이블에 대한 글로벌 테이블 복제본 및 감시자를 만들고 삭제할 수 있는 권한을 부여합니다.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowManagingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:CreateGlobalTableWitness", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DeleteGlobalTableWitness", "dynamodb:UpdateTable", "dynamodb:UpdateTimeToLive" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] } ] }

예: 와일드카드 거부 정책에서 필수 SLR 권한 제외

다음 조건의 IAM 정책은 DynamoDB 복제 SLR 및 AWS Auto Scaling SLR에 필요한 권한에 영향을 주지 않습니다. 이 조건은 의도치 않게 복제 또는 오토 스케일링을 중단하지 않도록 광범위하게 제한적인 정책에 추가할 수 있습니다.

"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }

글로벌 테이블이 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 상태로 유지되는 경우 취소된 특정 권한에 따라 복제본이 아카이브되거나 영구적으로 액세스할 수 없게 됩니다.