AWS 키 관리 서비스 관리 키(SSE-KMS)로 서버 측 암호화를 사용하는 Amazon Simple Storage Service(S3)에서 저장된 개체를 다운로드하고 싶습니다.
해결 방법
S3 버킷에서 SSE-KMS로 암호화된 개체를 다운로드할 때 AWS KMS(AWS 키 관리 서비스) 키 ID를 지정할 필요가 없습니다. 대신 AWS KMS 키 암호를 해독할 수 있는 권한이 필요합니다.
사용자가 GET 요청을 보내면 Amazon S3에서는 적절한 권한이 있는지 확인해야 합니다. Amazon S3에서 요청을 전송한 AWS ID 및 액세스 관리(IAM) 사용자 또는 역할이 개체 키의 암호를 해독할 권한이 있는지 확인합니다. IAM 사용자 또는 역할과 키가 동일한 AWS 계정에 속하는 경우 키 정책에 암호 해독 권한이 부여되어야 합니다.
참고: IAM 사용자 또는 역할과 KMS 키가 동일한 계정에 있는 경우 IAM 정책을 사용해 키에 대한 액세스를 제어할 수 있습니다. 그러나 명시적으로 IAM 정책을 통해 키에 액세스할 수 있도록 키 정책을 수정해야 합니다. 자세한 내용은 AWS KMS로 IAM 정책 사용하기를 참고하세요.
IAM 사용자 또는 역할과 키가 서로 다른 계정에 속하는 경우 IAM 사용자의 정책과 키 정책에 암호 해독 권한을 부여해야 합니다.
다음은 사용자가 AWS KMS 키를 해독하고 S3 버킷에서 다운로드할 수 있도록 허용하는 IAM 정책의 예입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"s3:GetObject"
],
"Resource": [
"arn:aws:kms:example-region-1:123456789012:key/example-key-id",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
다음은 사용자가 키의 암호를 해독할 수 있도록 허용하는 예제 키 정책 문입니다.
{
"Sid": "Allow decryption of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/Bob"
]
},
"Action": [
"kms:Decrypt"
],
"Resource": "*"
}
참고: 버킷과 다른 계정에 속하는 IAM 사용자 또는 역할의 경우, 버킷 정책도 사용자에게 개체에 대한 액세스 권한을 부여해야 합니다. 예를 들어 사용자가 버킷에서 다운로드해야 하는 경우, 사용자에게 버킷 정책에서 s3:GetObject 작업에 대한 권한이 있어야 합니다.
키 암호 해독 권한이 있으면 AWS Command Line Interface(AWS CLI)를 사용해 키로 암호화된 S3 개체를 다운로드할 수 있습니다. 다음과 같은 명령을 실행하세요.
aws s3api get-object --bucket DOC-EXAMPLE-BUCKET --key dir/example-object-name example-object-name
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
관련 정보
GetObject
get-object
SSE-KMS(AWS 키 관리 서비스)에 저장된 CMK로 서버 측 암호화를 사용해 데이터 보호