대용량 파일을 Amazon Simple Storage Service(Amazon S3) 버킷에 업로드하고 싶습니다. 업로드 요청에는AWS Key Management Service (AWS KMS) 키를 사용한 암호화 정보가 포함되어 있습니다. 하지만 액세스 거부 오류가 발생합니다.
간략한 설명
객체를 암호화하는 데 사용하는 AWS KMS 키에 대해 kms:Decrypt작업을 수행할 권한이 있는지 확인합니다.
대용량 파일의 경우 AWS Command Line Interface (AWS CLI)을 사용하는 상위 수준 aws s3 명령, AWS SDK 및 많은 타사 프로그램이 멀티파트 업로드를 자동으로 수행합니다. AWS KMS 키를 사용하여 멀티파트 업로드를 암호화하려면 kms:GenerateDataKey 및 kms:Decrypt 권한이 있어야 합니다. kms:GenerateDataKey 권한을 통해 업로드를 시작할 수 있습니다. KMS:Decrypt 권한을 사용하면 동일한 객체의 이전 부분에 사용한 키를 사용하여 새로 업로드한 부분을 암호화할 수 있습니다.
참고: AWS KMS 키를 사용하여 암호화를 통해 멀티파트 업로드를 수행하려면 다음이 있어야 합니다.
- 키에 대한 kms:Decrypt 및 kms:GenerateDataKey 작업에 대한 권한입니다.
- CreateMultipartUpload API에 대한 kms:GenerateDataKey 작업에 대한 권한.
- UploadPart 및 UploadPartCopy API에 대한 kms:Decrypt 작업에 대한 권한. Amazon S3는 멀티파트 업로드가 완료되기 전에 암호화된 파일 파트에서 데이터를 해독하고 읽어야 하기 때문에 이러한 권한이 필요합니다.
AWS Identity and Access Management(IAM) 사용자 또는 역할이 KMS 키와 동일한 AWS 계정에 있는 경우 키 정책에 대한 이러한 권한이 있어야 합니다. IAM 사용자 또는 역할이 KMS 키와 다른 계정에 속하는 경우 키 정책과 IAM 사용자 또는 역할 모두에 대한 권한이 있어야 합니다.
해결 방법
키 정책
AWS 관리 콘솔 정책 보기에서 AWS KMS 키 정책을 검토합니다.
키 정책에서 IAM 사용자 또는 역할의 Amazon 리소스 이름(ARN)이 AWS 보안 주체로 나열된 문을 검색합니다. ARN의 형식은 다음과 같습니다. arn:aws:iam::111122223333:user/john.
그런 다음 IAM 사용자 또는 역할 문이 허용하는 작업 목록을 확인합니다. 멀티파트 업로드의 경우 허용되는 작업 목록에는 SSE-KMS를 사용한 kms:Decrypt이 포함되어야 합니다.
예를 들어 키 정책의 다음 문을 사용하면 사용자 John이 kms:Decrypt 및 kms: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 작업을 수행할 수 있게 하는 정책이 적용되었는지 확인합니다.
{
"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 사용자에게 키 arn:Aws:kms:example-region-1:123456789098:key/111a2bb-333c-4d44-5555-a111bb2c33ddd에 대한 kms:Decrypt 및 kms:GenerateDataKey를 수행할 수 있는 액세스 권한을 부여합니다.
IAM 권한을 업데이트하는 방법에 대한 지침은 IAM 사용자의 권한 변경을 참조하세요.
관련 정보
AWS 정책 생성기
아마존 S3의 데이터 암호화