AWS Key Management Service(AWS KMS) 키를 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷의 특정 폴더를 암호화하고 싶습니다.
해결 방법
Amazon S3 콘솔 사용
- Amazon S3 콘솔을 엽니다.
- 암호화하려는 폴더로 이동합니다.
참고: 폴더에 많은 수의 객체가 포함된 경우 스로틀링 오류가 발생할 수 있습니다. 스로틀링 오류를 방지하려면 Amazon S3 버킷의 요청 비율을 관리하십시오. 스로틀링 오류에 대한 추가 문제 해결 팁은 AWS KMS에 대한 API 요청에서 ThrottlingExceptions 오류가 발생한 이유는 무엇입니까?를 참조하십시오.
- 폴더를 선택한 다음 Actions(작업)을 선택합니다.
- Edit server-side encryption(서버 측 암호화 편집)을 선택합니다.
- Enabling Server-side encryption(서버 측 암호화 활성화)에서 Enable(활성화)를 선택합니다.
- AWS Key Management Service key (SSE-KMS)의 경우 Encryption key type(암호화 키 유형)을 선택합니다.
- 폴더 암호화에 사용할 AWS KMS 키를 선택합니다.
참고: aws/s3라는 이름의 키는 AWS KMS가 관리하는 기본 키입니다. 기본 키 또는 사용자 지정 키를 사용하여 폴더를 암호화할 수 있습니다.
- Save changes(변경 사항 저장)를 선택합니다.
AWS CLI 사용
AWS Command Line Interface(AWS CLI) 명령에서는 기존 폴더의 암호화를 변경할 수 없습니다. 대신 AWS KMS 암호화가 활성화된 상태에서 폴더를 자체적으로 복사하는 명령을 실행합니다.
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
기본 AWS KMS 키(aws/s3)로 파일을 암호화하려면 다음 명령을 실행합니다.
aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms
이 명령 구문은 AWS KMS 암호화를 사용하여 폴더를 자체적으로 복사합니다.
사용자 지정 AWS KMS 키를 사용하여 파일을 암호화하려면 다음 명령을 실행합니다.
aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms --sse-kms-key-id a1b2c3d4-e5f6-7890-g1h2-123456789abc
참고: --sse-kms-key-id를 자체 키 ID로 바꿉니다.
향후 업로드 시 AWS KMS를 사용하여 객체를 암호화하도록 요구
암호화 설정을 변경하면 폴더에 이미 있는 객체만 암호화됩니다. 이 변경 후 객체를 암호화하지 않고 업로드할 수 있습니다. 향후 업로드 시 AWS KMS로 객체를 암호화하도록 요구하려면 다음 예와 같은 버킷 정책을 사용합니다.
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": true
}
}
}
]
}
이 버킷 정책은 요청에 AWS KMS를 사용한 서버 측 암호화가 포함되어 있지 않는 한 docexamplebucket/docexamplefolder/*의 s3:PutObject에 대한 액세스를 거부합니다.
기존 객체의 암호화 유형 변경
일반 목적 버킷에서 암호화된 객체의 서버 측 암호화 유형을 변경하려면 UpdateObjectEncryption API 작업을 사용하십시오. 암호화 유형을 Amazon S3 관리형 암호화 키를 사용하는 서버 측 암호화(SSE-S3)에서 SSE-KMS를 사용하는 서버 측 암호화로 변경할 수 있습니다. 자세한 내용은 기존 데이터의 서버 측 암호화 업데이트를 참조하십시오.
관련 정보
AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 사용