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

최종 업데이트 날짜: 2019년 6월 20일

AWS Key Management Service(AWS KMS) 키를 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷의 특정 폴더를 암호화하려고 합니다. 어떻게 해야 합니까? 

​해결 방법

Amazon S3 콘솔을 사용하여 폴더 암호화

  1. Amazon S3 콘솔을 여십시오.
  2. 암호화하려는 폴더로 이동하십시오.
  3. 폴더를 선택한 다음, 작업을 선택하십시오.
  4. 암호화 변경을 선택하십시오.
  5. 암호화 변경에서 AWS-KMS를 선택하십시오.
  6. 키 선택에서 폴더의 암호화에 사용할 AWS KMS 키를 선택하십시오.
    참고: aws/s3라는 이름의 키는 AWS KMS에서 관리하는 기본 키입니다. 기본 키 또는 사용자 지정 키를 사용하여 폴더를 암호화할 수 있습니다.
  7. 저장을 선택하십시오.

AWS 명령줄 인터페이스(CLI)를 사용하여 폴더 암호화

참고: AWS CLI 명령을 사용하여 기존 폴더의 암호화를 변경할 수 없습니다. 대신 AWS KMS 암호화를 사용하여 폴더 자체를 복사하는 AWS CLI 명령을 실행할 수 있습니다.

기본 AWS KMS 키([aws/s3])를 사용하여 파일을 암호화하려면 이 명령을 실행하여 AWS KMS 암호화로 폴더 자체를 복사하십시오.

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms

사용자 지정 AWS KMS 키를 사용하여 파일을 암호화하려면 다음 명령을 실행하십시오. 다음과 같이 키의 ID를 -sse-kms-key-id에 대한 값으로 지정하십시오.

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms --sse-kms-key-id a1b2c3d4-e5f6-7890-g1h2-123456789abc

향후 업로드에 AWS KMS로 객체 암호화 필요

암호화를 변경하면 이미 폴더에 있는 객체만 암호화됩니다. 암호화 변경 후에 폴더에 추가된 객체는 암호화 없이 업로드할 수 있습니다. 버킷 정책을 사용하여 향후 업로드가 AWS KMS로 객체를 암호화하도록 요구할 수 있습니다.

예를 들어, 요청에 AWS KMS를 통한 서버 측 암호화가 포함되지 않은 경우 다음의 버킷 정책은 awsexamplebucket/awsexamplefolder/*에서 s3:PutObject에 대한 액세스를 거부합니다.

{
  "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에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?