AWS Key Management Service (AWS KMS) 키를 사용하여 Amazon Simple Storage Service (Amazon S3) 버킷의 특정 폴더를 암호화하고 싶습니다.
해결 방법
Amazon S3 콘솔을 엽니다
- Amazon S3 콘솔을 엽니다.
- 암호화하려는 폴더로 이동합니다.
**경고:**폴더에 많은 수의 객체가 포함된 경우 제한 오류가 발생할 수 있습니다. 제한 오류를 방지하려면 Amazon S3 버킷의 Amazon S3 요청 한도를 늘립니다. 제한 오류에 대한 자세한 문제 해결 팁은 AWS KMS에 요청할 때 ThrottlingExceptions 오류가 발생하는 이유는 무엇입니까?를 참조하세요.
- 폴더를 선택한 다음 작업을 선택합니다.
- 서버측암호화 편집을 선택합니다.
- 서버측 암호화를 활성화하려면 활성화를 선택합니다.
- AWS Key Management Service key (SSE-KMS)의 경우 암호화 키 유형을 선택합니다.
- 폴더 암호화에 사용할 AWS KMS 키를 선택합니다.
참고:****aws/s3라는 이름의 키는 AWS KMS가 관리하는 기본 키입니다. 기본 키 또는 사용자 지정 키를 사용하여 폴더를 암호화할 수 있습니다.
- 변경 사항 저장을 선택합니다.
AWS CLI 사용
AWS Command Line Interface (AWS CLI) 명령에서는 기존 폴더의 암호화를 변경할 수 없습니다. 대신 AWS KMS 암호화가 활성화된 상태에서 폴더를 자체적으로 복사하는 명령을 실행합니다.
**참고:**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에 대한 액세스를 거부합니다.
관련 정보
AWS KMS 키 (SSE-KMS) 를 사용한 서버 측 암호화 사용