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

최종 업데이트 날짜: 2022년 5월 12일

Amazon S3(Amazon Simple Storage Service) 버킷은 AWS KMS(AWS Key Management Service) 기본 암호화를 사용합니다. 버킷에 파일을 업로드하려 할 때 Amazon S3가 "액세스 거부됨" 오류 메시지를 반환합니다. 해결하려면 어떻게 해야 하나요?

해결 방법

먼저 다음을 확인합니다.

  • AWS Identity and Access Management(IAM) 사용자 또는 역할에는 버킷에 대한 s3:PutObject 권한이 있습니다.
  • AWS KMS 키에 “aws/s3" 별칭이 없습니다. 교차 계정 IAM principal이 개체를 업로드하는 경우 기본 버킷 암호화에 이 별칭을 사용할 수 없습니다. AWS KMS 키 및 정책 관리에 대한 자세한 내용은 AWS Key Management Service(SSE-KMS)를 사용하는 서버 측 암호화로 데이터 보호를 참조하십시오.

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

중요:

  • AWS KMS 키와 IAM 역할이 서로 다른 AWS 계정에 속해 있는 경우 IAM 정책과 KMS 키 정책을 업데이트해야 합니다. IAM 정책과 KMS 키 정책 모두에 KMS 권한을 추가해야 합니다.
  • IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어하려면 KMS 키의 키 정책이 계정에 IAM 정책을 사용할 수 있는 권한을 부여해야 합니다.

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

이 오류 메시지는 IAM 사용자 또는 역할에 kms:GenerateDataKey 작업에 대한 권한이 필요함을 나타냅니다.

kms:GenerateDataKey에 대해 권한을 추가하려면 다음 단계를 수행합니다.

1.    IAM 콘솔을 엽니다.

2.    Amazon S3 버킷에 파일을 업로드하는 데 사용할 IAM 사용자 또는 역할을 선택합니다.

3.    권한 탭에서 각 정책을 확장하여 해당 JSON 정책 문서를 봅니다.

4.    JSON 정책 문서에서 AWS KMS 액세스와 관련된 정책을 찾습니다. "Effect": "Allow"가 있는 문을 검토하여 사용자 또는 역할에 버킷의 AWS KMS 키에 대한 kms:GenerateDataKey 작업에 대해 권한이 있는지 확인합니다.

5.    이 권한이 없는 경우 해당 정책에 권한을 추가합니다. 자세한 지침은 사용자에게 권한 추가(콘솔) 또는 역할 권한 정책 수정(콘솔)을 참조하세요.

6.    JSON 정책 문서에서 "Effect": "Deny"가 있는 문을 찾습니다. 해당 문이 버킷의 s3:PutObject 작업을 거부하지 않는지 확인합니다. 해당 문은 버킷의 암호화에 사용되는 키의 kms:GenerateDataKey 작업에 대한 IAM 사용자 또는 역할 액세스를 거부하지 않아야 합니다. 또한 VPC 엔드포인트 정책, 서비스 제어 정책, 권한 경계 또는 세션 정책을 사용할 때 요구되는 KMS 및 S3 권한이 제한되지 않아야 합니다.

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

이 오류 메시지는 IAM 사용자 또는 역할에 kms:GenerateDataKeykms:Decrypt 작업에 대한 권한이 필요함을 나타냅니다.

kms:GenerateDataKeykms:Decrypt에 대한 권한을 추가하려면 다음 단계를 수행합니다.

1.    IAM 콘솔을 엽니다.

2.    Amazon S3 버킷에 파일을 업로드하는 데 사용할 IAM 사용자 또는 역할을 선택합니다.

3.    권한 탭에서 각 정책을 확장하여 해당 JSON 정책 문서를 봅니다.

4.    JSON 정책 문서에서 AWS KMS 액세스와 관련된 정책을 찾습니다. "Effect": "Allow"가 있는 문을 검토하여 역할에 버킷의 AWS KMS 키에 대한 kms:GenerateDataKeykms:Decrypt 권한이 있는지 확인합니다.

5.    이러한 권한이 없는 경우 해당 정책에 권한을 추가합니다. 자세한 지침은 사용자에게 권한 추가(콘솔) 또는 역할 권한 정책 수정(콘솔)을 참조하세요.

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


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


결제 또는 기술 지원이 필요합니까?