내용으로 건너뛰기

AWS KMS를 사용하여 Amazon S3 버킷의 특정 폴더를 암호화하려면 어떻게 해야 합니까?

3분 분량
0

AWS Key Management Service(AWS KMS) 키를 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷의 특정 폴더를 암호화하고 싶습니다.

해결 방법

Amazon S3 콘솔 사용

  1. Amazon S3 콘솔을 엽니다.
  2. 암호화하려는 폴더로 이동합니다.
    참고: 폴더에 많은 수의 객체가 포함된 경우 스로틀링 오류가 발생할 수 있습니다. 스로틀링 오류를 방지하려면 Amazon S3 버킷의 요청 비율을 관리하십시오. 스로틀링 오류에 대한 추가 문제 해결 팁은 AWS KMS에 대한 API 요청에서 ThrottlingExceptions 오류가 발생한 이유는 무엇입니까?를 참조하십시오.
  3. 폴더를 선택한 다음 Actions(작업)을 선택합니다.
  4. Edit server-side encryption(서버 측 암호화 편집)을 선택합니다.
  5. Enabling Server-side encryption(서버 측 암호화 활성화)에서 Enable(활성화)를 선택합니다.
  6. AWS Key Management Service key (SSE-KMS)의 경우 Encryption key type(암호화 키 유형)을 선택합니다.
  7. 폴더 암호화에 사용할 AWS KMS 키를 선택합니다.
    참고: aws/s3라는 이름의 키는 AWS KMS가 관리하는 기본 키입니다. 기본 키 또는 사용자 지정 키를 사용하여 폴더를 암호화할 수 있습니다.
  8. 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)를 사용한 서버 측 암호화 사용

AWS 공식업데이트됨 6달 전