내 AWS 계정에서 AWS KMS(AWS Key Management Service) 키로 암호화된 객체만 내 Amazon S3(Amazon Simple Storage Service) 버킷에 저장하도록 하고 싶습니다. 이렇게 암호화된 객체만 내 버킷에 업로드할 수 있도록 하려면 어떻게 해야 합니까?
간략한 설명
Amazon S3 기본 암호화(Amazon S3 default encryption)를 사용하여 암호화 헤더(예: x-amz-server-side-encryption 및 x-amz-server-side-encryption-aws-kms-key-id) 없이 업로드된 객체가 AWS KMS로 암호화되었는지 확인한 후 S3 버킷에 저장합니다. 암호화 헤더는 x-amz-server-side-encryption 및 x-amz-server-side-encryption-aws-kms-key-id와 같은 헤더입니다. 그런 다음 버킷 정책을 사용하여 업로드된 객체가 AWS 계정의 AWS KMS 키 ID와 AWS KMS를 사용하여 암호화되었는지 확인합니다.
참고: AWS KMS 키로 암호화된 개체를 업로드하려면 키와 S3 버킷이 동일한 AWS 영역에 있어야 합니다.
해결 방법
Amazon S3 기본 암호화
다음 단계에 따라 Amazon S3 콘솔을 사용하여 버킷의 Amazon S3 기본 암호화를 AWS KMS로 설정합니다.
- Amazon S3 콘솔을 엽니다.
- AWS KMS로 암호화된 객체에 대해 사용할 버킷을 선택합니다.
- 속성(Properties) 보기를 선택합니다.
- **기본 암호화(Default encryption)**를 선택한 다음 AWS-KMS를 선택합니다.
- AWS KMS 키에서 AWS KMS 키를 선택합니다.
- 버킷 키에서 활성화를 선택합니다. 이 설정을 사용하면 Amazon S3 버킷 키를 사용할 수 있습니다.
- 저장을 선택합니다.
참고: REST API, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 Amazon S3 기본 암호화를 활성화하려면 Amazon S3 기본 버킷 암호화 활성화를 참조하세요.
버킷 정책
다음 단계에 따라 다른 암호화 설정(AES-256)을 사용하는 업로드 요청을 거부하도록 버킷 정책을 구성합니다. 또는 AWS KMS 암호화를 사용하지만 AWS 계정에서 발급한 키 ID가 포함된 요청입니다.
- Amazon S3 콘솔을 엽니다.
- AWS KMS로 암호화된 객체에 대해 사용할 버킷을 선택합니다.
- 권한(Permissions) 보기를 선택합니다.
- **버킷 정책(Bucket Policy)**을 선택합니다.
- 다음과 유사한 버킷 정책을 입력합니다.
참고: bucketname을 버킷 이름으로 바꿉니다. us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab를 AWS 리전, AWS 계정 ID 및 AWS KMS 키 ID로 바꿉니다.
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
{
"Sid": "RequireKMSEncryption",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucketname/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
},
{
"Sid": "RequireSpecificKMSKey",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::samplebucketname/*",
"Condition": {
"StringNotLikeIfExists": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
}
}
]
}
이 버킷 정책을 S3 버킷에 추가한 후에는 객체를 S3 버킷에 업로드할 때 x-amz-server-side-encryption 및 x-amz-server-side-encryption-aws-kms-key-id 헤더를 포함해야 합니다. 자세한 내용은 요청 구문을 참조하세요.
관련 정보
Amazon Simple Storage Service(Amazon S3)에서 AWS KMS를 사용하는 방법
Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감