Amazon S3 신규 객체 암호화 기본 설정
AWS에서는 보안을 가장 중요시 합니다.오늘부터 Amazon Simple Storage Service(S3)는 기본적으로 모든 새 객체를 암호화합니다. 이제 S3는 다른 암호화 옵션을 지정하지 않는 한 새 객체마다 서버 측 암호화(SSE-S3)를 자동으로 적용합니다. SSE-S3 은 2011년에 처음 출시되었습니다.
당시 Jeff는 “Amazon S3 서버 측 암호화는 모든 암호화, 해독 및 키 관리를 완전히 투명한 방식으로 처리합니다. 객체를 PUT하면 고유한 키가 생성되고 해당 키로 데이터를 암호화한 다음 [root] 키로 키를 암호화합니다.”라고 소개하였습니다.
이번 변경으로 또 다른 보안 모범 사례가 자동으로 적용되므로 성능에 영향을 미치지 않고 사용자가 별도로 조치를 취할 필요가 없습니다. 기본 암호화를 사용하지 않는 S3 버킷은 이제 자동으로 SSE-S3 설정을 기본 설정으로 적용합니다. 현재 S3 기본 암호화를 사용하는 기존 버킷은 변경되지 않습니다.
항상 그러하듯 AWS에서 제공하는 세 가지 암호화 옵션, 즉 S3 기본 암호화 (SSE-S3, 새로운 기본값), 고객 제공 암호화 키(SSE-C) 또는 AWS 키 관리 서비스 키(SSE-KMS) 중 하나를 사용하여 객체를 암호화하도록 선택할 수 있습니다. 추가 암호화 계층을 확보하려면 Amazon S3 암호화 클라이언트와 같은 클라이언트 라이브러리를 사용하여 클라이언트 측에서 객체를 암호화할 수도 있습니다.
활성화는 간단했지만 SSE-S3 옵트인 특성으로 인해 항상 새 버킷에 구성되었는지 확인하고 시간이 지나도 제대로 구성된 상태를 유지했는지 확인해야 했습니다. 모든 객체를 SSE-S3 암호화 상태로 유지해야 하는 조직의 경우 이 업데이트를 통해 추가 도구나 클라이언트 구성 변경 없이 암호화 규정 준수 요구 사항을 충족할 수 있습니다.
오늘 발표를 통해 이제 모든 S3 버킷에 이 기본 수준의 암호화를 적용할 수 있는 “제로 클릭”을 설정했습니다.
신규 S3 객체 암호화 여부 확인하기
변경 사항은 오늘 AWS CloudTrail 데이터 이벤트 로그에서 확인할 수 있습니다. 향후 몇 주 동안 AWS Management Console의 S3 섹션, Amazon S3 Inventory, Amazon S3 스토리지 렌즈, AWS CLI 및 AWS SDK의 추가 헤더에서 변경 사항을 확인할 수 있습니다. 모든 AWS 리전의 이러한 도구에서 암호화 상태를 사용할 수 있게 되면 이 블로그 게시물과 설명서를 업데이트할 예정입니다.
변경 사항이 현재 버킷에 적용되는지 확인하려면 데이터 이벤트를 기록하도록 CloudTrail을 구성할 수 있습니다. 기본적으로 트레일은 데이터 이벤트를 기록하지 않으며 활성화하는 데 추가 비용이 소요됩니다. 데이터 이벤트는 사용자가 S3 버킷에 파일을 업로드할 때와 같이 리소스에서 또는 리소스 내에서 수행한 리소스 작업을 보여줍니다. Amazon S3 버킷, AWS Lambda 함수, Amazon DynamoDB 테이블 또는 이들의 조합에 대한 데이터 이벤트를 기록할 수 있습니다.
활성화되면 파일 업로드를 위한 PutObject
API 또는 멀티파트 업로드를 위한 InitiateMultipartUpload
를 검색합니다. Amazon S3에서 기본 암호화 설정을 사용해 객체를 자동으로 암호화하면 해당 로그는 다음 "SSEApplied":"Default_SSE_S3"
영역을 이름-값 쌍으로 포함합니다. 다음은 AWS CLI 명령 aws s3 cp backup.sh s3://private-sst
를 사용하여 버킷 중 하나에 파일을 업로드했을 때 CloudTrail 로그(데이터 이벤트 로깅이 활성화된 상태)의 예시입니다.
Amazon S3 암호화 옵션
앞서 쓴 것처럼 다른 암호화 유형을 지정하지 않은 경우 이제 SSE-S3 암호화가 새로운 기본 암호화 수준이 됩니다. SSE-S3은 AWS에서 관리하는 256비트 키를 사용하는 고급 암호화 표준(AES) 암호화를 사용합니다.
SSE-C 또는 SSE-KMS를 SSE-S3 대신 사용하여 버킷의 “원 클릭” 기본 암호화 설정으로 이용하거나 PUT 요청의 개별 객체에 대해 객체를 암호화하도록 선택할 수 있습니다.
SSE-C를 사용하면 Amazon S3에서 객체 암호화 및 암호 해독을 수행하는 동시에 객체 암호화에 사용되는 키의 제어를 유지할 수 있습니다. SSE-C를 사용하면 Amazon S3에 저장한 객체의 암호화 및 암호 해독을 수행하기 위해 클라이언트 측 라이브러리를 구현하거나 사용할 필요가 없으나 객체를 암호화하고 해독하기 위해 Amazon S3로 보내는 키를 관리해야 합니다.
SSE-KMS를 사용하면 AWS Key Management Service(AWS KMS)가 암호화 키를 관리합니다. AWS KMS를 사용하여 키를 관리하면 몇 가지 추가 이점을 얻을 수 있습니다. AWS KMS에는 KMS 키를 사용할 수 있는 별도의 권한이 있어 Amazon S3에 저장한 객체에 대한 무단 액세스로부터 보호할 뿐만 아니라 추가 제어 계층을 제공합니다. AWS KMS는 감사 추적을 제공하므로 누가 언제 어떤 객체에 액세스하기 위해 키를 사용했는지 확인할 수 있을 뿐만 아니라 데이터 암호 해독 권한을 부여받지 않은 사용자의 데이터 액세스 시도가 실패했는지 확인할 수 있습니다.
Amazon S3 암호화 클라이언트와 같은 암호화 클라이언트 라이브러리를 사용하면 키의 제어를 유지하고, 선택한 암호화 라이브러리를 사용하여 클라이언트 측에서 객체 암호화 및 해독을 완료할 수 있습니다. Amazon S3로 전송하여 저장하기 전에 객체를 암호화합니다. Java, .Net, Ruby, PHP, Go 및 C++ AWS SDK는 클라이언트측 암호화를 지원합니다.
버킷의 기존 객체를 소급하여 암호화하려는 경우 이 블로그 게시물의 지침을 따를 수 있습니다.
정식 출시
신규 S3 설정은 모든 AWS 리전에 적용되며 AWS GovCloud(미국) 및 AWS 중국 리전에도 적용됩니다. 기본 객체 수준 암호화에는 추가 비용이 들지 않습니다.
Source: Amazon S3 신규 객체 암호화 기본 설정