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

최종 업데이트 날짜: 2021년 1월 5일

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

해결 방법

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

1.    Amazon S3 콘솔을 엽니다.

2.    암호화하려는 폴더로 이동합니다.

3.    폴더를 선택한 다음, [작업(Actions)]을 선택합니다.

4.    [서버 측 암호화 편집(Edit server-side encryption)]을 선택합니다.

5.    [서버 측 암호화 활성화(Enabling Server-side encryption)]에 대해 [활성화(Enable)]를 선택합니다.

6.    AWS Key Management Service 키(SSE-KMS)에 대해 [암호화 키 유형(Encryption key type)]을 선택합니다.

7.    폴더 암호화에 사용할 AWS KMS 키를 선택합니다.

참고: aws/s3라는 이름의 키는 AWS KMS에서 관리하는 기본 키입니다. 기본 키 또는 사용자 지정 키를 사용하여 폴더를 암호화할 수 있습니다.

8.    [변경 내용 저장(Save changes)]을 선택합니다.

AWS CLI를 사용하여 폴더 암호화

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

기본 AWS KMS 키(aws/s3)를 사용하여 파일을 암호화하려면 다음 명령을 실행합니다.

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

이 명령 구문은 AWS KMS 암호화를 사용하여 폴더를 복사합니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다.

사용자 지정 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에 대한 액세스를 거부합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?