AWS KMS 기본 암호화를 사용하는 Amazon S3 버킷에 파일을 업로드할 때 액세스 거부 오류 메시지가 표시되는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 3월 25일

Amazon S3(Amazon Simple Storage Service) 버킷은 AWS KMS(AWS Key Management Service) 기본 암호화를 사용합니다. AWS Identity and Access Management(IAM) 사용자 또는 역할에는 버킷에 대한 s3:PutObject 권한이 있습니다. 버킷에 파일을 업로드하려 할 때 Amazon S3가 "액세스 거부됨" 오류 메시지를 반환합니다. 해결하려면 어떻게 해야 하나요?

해결 방법

수신한 오류 메시지를 기반으로 IAM 사용자 또는 역할의 AWS KMS 권한을 업데이트합니다.

중요: AWS KMS 키와 IAM 역할이 서로 다른 AWS 계정에 속해 있는 경우 IAM 정책과 KMS 키 정책을 업데이트해야 합니다. IAM 정책과 KMS 키 정책 모두에 KMS 권한을 추가해야 합니다.

또한 교차 계정 IAM 보안 주체가 객체를 업로드하는 경우, "aws/s3" 별칭이 있는 AWS 관리형 CMK는 기본 버킷 암호화에 사용할 수 없습니다. SSE-KMS용 S3 버킷 키를 사용하도록 구성된 모든 객체 업로드, 복사 또는 버킷은 kms:Decrypt 권한에 액세스할 수 있어야 합니다. AWS KMS CMK 및 정책 관리에 대한 자세한 내용은 AWS 관리형 CMK 및 고객 관리형 CMK를 참조하세요.

"PutObject 작업을 호출할 때 오류(AccessDenied) 발생: 액세스 거부됨"

이 오류 메시지는 IAM 사용자 또는 역할에 kms:GenerateDataKey 작업에 대한 권한이 필요함을 나타냅니다. 이 권한은 사용자 지정 AWS KMS 키로 기본 암호화를 사용하는 버킷에 필요합니다. kms:GenerateDataKey에 대해 권한을 추가하려면 다음 단계를 수행합니다.

1.    IAM 콘솔을 엽니다.

2.    콘솔에서 Amazon S3 버킷에 파일을 업로드하는 데 사용할 IAM 사용자 또는 역할을 엽니다.

3.    IAM 사용자 또는 역할의 [권한] 탭에서 각 정책을 확장하여 해당 JSON 정책 문서를 봅니다.

4.    JSON 정책 문서에서 AWS KMS 액세스와 관련된 정책을 찾습니다. "Effect": "Allow"가 있는 문을 검토하여 사용자 또는 역할에 버킷의 AWS KMS 키에 대한 kms:GenerateDataKey 작업에 대해 권한이 있는지 확인합니다. 이 권한이 없는 경우 해당 정책에 권한을 추가합니다. 자세한 지침은 사용자에게 권한 추가(콘솔) 또는 역할 권한 정책 수정(콘솔)을 참조하세요.

5.    JSON 정책 문서에서 "Effect": "Deny"가 있는 문을 찾습니다. 그런 다음 해당 문이 버킷의 s3:PutObject 작업을 거부하지 않는지 확인합니다. 또한 해당 문은 버킷의 암호화에 사용되는 키의 kms:GenerateDataKey 작업에 대한 IAM 사용자 또는 역할 액세스를 거부하지 않는지 확인합니다. 또한 VPC 종단점 정책, 서비스 제어 정책, 권한 경계 또는 세션 정책을 사용하여 필요한 KMS 및 S3 권한이 제한되지 않도록 해야 합니다.

"CreateMultipartUpload 작업을 호출할 때 오류(AccessDenied) 발생: 액세스 거부됨"

이 오류 메시지는 IAM 사용자 또는 역할에 kms:GenerateDataKeykms:Decrypt 작업에 대한 권한이 필요함을 나타냅니다. 이들 권한은 AWS KMS 기본 암호화를 사용하여 버킷으로 멀티파트 업로드를 수행하는 데 필요합니다. kms:GenerateDataKeykms:Decrypt에 대한 권한을 추가하려면 다음 단계를 수행합니다.

1.    IAM 콘솔을 엽니다.

2.    콘솔에서 Amazon S3 버킷에 파일을 업로드하는 데 사용할 IAM 사용자 또는 역할을 엽니다.

3.    IAM 사용자 또는 역할의 [권한] 탭에서 각 정책을 확장하여 해당 JSON 정책 문서를 봅니다.

4.    JSON 정책 문서에서 AWS KMS 액세스와 관련된 정책을 찾습니다. "Effect": "Allow"가 있는 문을 검토하여 역할에 버킷의 AWS KMS 키에 대한 kms:GenerateDataKeykms:Decrypt 권한이 있는지 확인합니다. 이러한 권한이 없는 경우 해당 정책에 권한을 추가합니다. 자세한 지침은 사용자에게 권한 추가(콘솔) 또는 역할 권한 정책 수정(콘솔)을 참조하세요.

5.    JSON 정책 문서에서 "Effect": "Deny"가 있는 문을 찾습니다. 그런 다음 해당 문이 버킷의 s3:PutObject 작업을 거부하지 않는지 확인합니다. 또한 해당 문은 버킷의 암호화에 사용되는 키의 kms:GenerateDataKeykms:Decrypt 작업에 대한 IAM 사용자 또는 역할 액세스를 거부하지 않아야 합니다. 또한 VPC 종단점 정책, 서비스 제어 정책, 권한 경계 또는 세션 정책을 사용하여 필요한 KMS 및 S3 권한이 제한되지 않도록 해야 합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?