AWS KMS 키를 사용한 암호화를 포함하는 대형 파일을 Amazon S3에 업로드하려고 합니다. 업로드가 실패하는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 6월 18일

Amazon S3(Amazon Simple Storage Service) 버킷에 대형 파일을 업로드하려고 합니다. 내 업로드 요청에는 AWS Key Management Service(AWS KMS) 키를 사용한 암호화 정보가 포함됩니다. 그러나 이렇게 하면 액세스 거부 오류가 발생합니다. 한편, 더 작은 파일에 암호화 정보를 포함하여 업로드하면 업로드가 성공합니다. 이 문제를 어떻게 해결해야 합니까?

간략한 설명

객체 암호화에 사용되는 AWS KMS 키에 kms:Decrypt 작업을 수행할 수 있는 권한이 있는지 확인합니다.

AWS CLI(aws s3 명령), AWS SDK 및 다양한 타사 프로그램은 파일이 큰 경우 멀티파트 업로드를 자동으로 수행합니다. AWS KMS 키를 사용하여 암호화된 멀티파트 업로드를 수행하려면 요청자에게 업로드를 시작할 수 있는 kms:GenerateDataKey 권한과 객체 파트를 업로드할 수 있는 kms:Decrypt 권한이 있어야 합니다. 새로 업로드된 파트를 동일한 객체의 이전 파트에 사용된 것과 동일한 키로 암호화할 수 있도록 요청자에게 kms:Decrypt 권한이 있어야 합니다. 

해결 방법

AWS Identity and Access Management(IAM) 사용자 또는 역할이 AWS KMS 키와 동일한 AWS 계정에 있는 경우에는 키 정책에 kms:Decrypt를 수행할 수 있는 권한이 있어야 합니다. IAM 사용자 또는 역할이 키와 다른 계정에 속해 있는 경우에는 키 정책과 IAM 권한 모두에 대해 kms:Decrypt를 수행할 수 있는 권한이 있어야 합니다.

키 정책

AWS Management Console 정책 뷰를 사용하여 AWS KMS 키 정책을 검토합니다.

키 정책에서 IAM 사용자 또는 역할의 Amazon 리소스 이름(ARN)이 AWS 보안 주체로 나열된 문을 검색합니다. ARN은 arn:aws:iam::111122223333:user/john과 같은 형식을 가지고 있습니다.

그런 다음 IAM 사용자 또는 역할과 연관된 문이 허용하는 작업 목록을 확인합니다. 멀티파트 업로드가 작동하려면 허용된 작업의 목록에 kms:Decrypt가 포함되어 있어야 합니다.

예를 들어, 키 정책에서 다음 문은 사용자 John이 kms:Decryptkms:GenerateDataKey 작업을 수행하도록 허용합니다.

  {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/john"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "*"
        },

IAM 권한

IAM 권한을 검토하려면 IAM 콘솔을 연 다음 IAM 사용자 또는 역할을 엽니다.

IAM 사용자 또는 역할에 적용된 권한 정책의 목록을 검토합니다. 객체 암호화에 사용되는 키에 kms:Decrypt 작업을 수행하도록 허용하는 정책이 적용되어 있는지 확인하십시오.

예를 들어 이 문은 IAM 사용자에게 키(arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd)에 대해 kms:Decryptkms:GenerateDataKey 작업을 수행할 수 있는 액세스 권한을 부여합니다.

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey"
    ],
    "Resource": [
      "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    ]
  }
}

IAM 정책을 업데이트하는 방법에 대한 지침은 IAM 사용자의 권한 변경을 참조하십시오.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?