내용으로 건너뛰기

DynamoDB에서 Amazon S3로 내보낼 때 액세스 거부 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon DynamoDB 테이블 데이터를 Amazon Simple Storage Service(Amazon S3)으로 내보낼 때 “액세스 거부” 오류가 발생합니다.

간략한 설명

내보낼 때 ** AccessDenied** 오류가 발생하면 AWS Identity and Access Management(IAM) 개체에 올바른 권한이 없을 수 있습니다. 시점 복구(PITR) 창의 한 지점에서 DynamoDB 테이블 데이터를 내보내려면 S3로 DynamoDB 내보내기를 사용하십시오. 다음 데이터 보호 방법 중 하나를 사용하는 AWS 계정에서 이 기능을 사용할 수 있습니다.

  • AES(Advanced Encryption Standard, 고급 암호화 표준)
  • AWS Key Management Service(AWS KMS) 고객 관리형 키

해결 방법

**참고:**DynamoDB 테이블이 있는 계정에서 모든 AWS Command Line Interface(AWS CLI) 명령을 실행합니다. AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

사전 요구 사항:

AES

DynamoDB 테이블 데이터를 동일한 계정의 Amazon S3 버킷으로 내보내려면 다음 명령을 실행합니다.

aws dynamodb export-table-to-point-in-time \
  --table-arn <Table ARN> \
  --s3-bucket <S3 bucket name> \
  --export-format <Export format> \
  --s3-sse-algorithm AES256

DynamoDB 테이블 데이터를 다른 계정의 Amazon S3 버킷으로 내보내려면 다음 명령을 실행합니다.

aws dynamodb export-table-to-point-in-time \
  --table-arn <Table ARN> \
  --s3-bucket <Cross account S3 bucket name> \
  --s3-bucket-owner <Cross account ID> \
  --export-format <Export format> \
  --s3-sse-algorithm AES256

AWS KMS 고객 관리형 키

AWS KMS 고객 관리형 키를 사용하는 계정의 경우 AWS KMS 고객 관리형 키 정책을 업데이트하십시오. 키 정책은 IAM 개체가 AWS KMS 키에 액세스할 수 있도록 허용해야 합니다.
정책 예시:

{
   "Version": "2012-10-17",
   "Id": "key-consolepolicy-3",
   "Statement": [
      {
         "Sid": "Enable IAM User Permissions",
         "Effect": "Allow",
         "Principal": {
               "AWS": "arn:aws:iam::<Account ID>:root"
         },
         "Action": "kms:*",
         "Resource": "*"
      }
   ]
}

또한 IAM 개체는 내보내기를 수행하는 데 사용되는 AWS KMS 키에 액세스할 수 있는 권한이 있어야 합니다.

AWS KMS 키 권한의 예:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "<Provide KMS key ARN>"
    }
  ]
}

AWS KMS 고객 관리형 키를 사용하여 동일한 계정 내의 S3 버킷으로 내보내려면 다음 명령을 실행합니다.

aws dynamodb export-table-to-point-in-time \
  --table-arn <Table ARN> \
  --s3-bucket <S3 bucket name> \
  --export-format <Export format> \
  --s3-sse-algorithm KMS \
  --s3-sse-kms-key-id <KMS key ARN>

AWS KMS 고객 관리형 키를 사용하여 다른 계정의 S3 버킷으로 내보내려면 다음 명령을 실행합니다.

aws dynamodb export-table-to-point-in-time \
  --table-arn <Table ARN> \
  --s3-bucket <Cross account S3 bucket name> \
  --s3-bucket-owner <Cross account ID> \
  --export-format <Export format> \
  --s3-sse-algorithm KMS \
  --s3-sse-kms-key-id <KMS key ARN>

다른 계정의 사용자를 위해 내보낸 테이블 데이터에 액세스하려면 DynamoDB 소스 계정에서 AWS KMS 키 정책을 업데이트합니다. 내보낸 객체에 액세스하려면 AWS KMS 키 정책에서 사용자에게 kms:Decrypt 명령을 사용할 권한을 부여해야 합니다.

AWS KMS 키 정책의 예:

{
  "Sid": "Enable cross account IAM User Permissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": "<Provide ARN of destination account user>"
  },
  "Action": "kms:",
  "Resource": "*"
}

추가 문제 해결

모든 권한을 확인한 후에도 AccessDenied 오류 메시지가 계속 표시되면 조직에 SCP(Service Control Policy, 서비스 제어 정책)가 있는지 확인하십시오. 조직에 SCP가 있는 경우 정책을 분리하거나 업데이트합니다.

관련 정보

DynamoDB에서 테이블 내보내기 요청

Amazon S3 버킷에 있는 객체에 교차 계정 액세스를 제공하려면 어떻게 해야 합니까?

Amazon DynamoDB를 사용한 교차 계정 복제

교차 계정 사용자가 AWS KMS 고객 관리형 키로 암호화한 내 S3 객체에 액세스하려고 할 때 액세스 거부 오류가 발생하는 이유는 무엇입니까?

AWS JSON 정책 요소: 주체

AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠