[AWS] S3 암호화, 종류

나른한 개발자·2023년 1월 27일
0

S3 암호화

s3에서는 보안을 위해 데이터 저장 및 전송 시 암호화할 수 있는 방식을 제공한다. 암호화를 하는 주체에 따라 서버측 암호화, 클라이언트 측 암호화로 나뉜다.

(1) 서버측 암호화

이 방식은 데이터가 S3서버에 의해 암호화된다. 데이터가 저장될 때 암호화되어 저장되고, 데이터 인출시에는 복호화되어 반환된다. AWS에서는 아래 세가지 방식을 지원하고 있다.

  • SSE-S3 : AWS 회사 자체에서 관리 되는 keys를 이용해 암호화.
  • SSE-KMS : KMS(아마존 키 매니저 서비스 - AWS의 암호를 관리해주는 서비스)를 이용해 암호화 
  • SSE-C : 사용자에 의해 직접 정의된 keys를 이용해 암호화 

SSE-S3

Amazon S3에서 관리되는 키로 데이터를 암호화하는 방식이다. Amazon S3에 의해 주기적으로 키가 교체되며 AES-256 알고리즘으로 암호화된다. 암호화에 대한 추가적인 비용이 발생하지 않으며 버킷 정책을 추가하여 객체 업로드 시 암호화 요청이 포함되지 않은 경우 업로드를 거부하도록 설정할 수 있다.

SSE-KMS (Key Manager Service)

SSE-KMS는 중앙에서 키를 관리할 수 있도록 하는 AWS의 키 관리 서비스이다. 이 방식을 이용하면 사용자 단위로 권한을 부여할 수 있고 사용률 감사 등 세부적인 키 관리가 가능하다. 키 관리 및 추적이 용이한 대신 요청 당 비용이 부담된다.

헤더에 "x-amz-server-side-encryption": "aws:kms"를 추가하면 S3는 AWS KMS keys를 사용하여 데이터를 암호화한다.

SSE-C

위 두 방식은 서버에서 키를 가져와 암호화를 하는 반면 SSE-C는 고객 제공 키로 암호화를 한다. 데이터 인출 시에는 S3는 고객으로부터 제공받은 키가 일치하는지 확인 후 복호화하여 전송한다. S3는 키를 별도로 저장하지 않아 사용자가 키 관리를 해야하며 S3로 키를 함께 전송해야하기 때문에 반드시 HTTPS 프로토콜을 통해야한다.



(2) 클라이언트측 암호화

데이터 저장 시에 s3에 의해 암호화가 되는 서버측 암호화와는 달리, 클라이언트 측 암호화 방식은 데이터 업로드 전에 암호화를 한 후 전송하는 방식이다. 데이터 인출 시에도 클라이언트 측에서 복호화를 해야한다. 따라서 클라이언트가 키 관리와 암호화/복호화를 모두 맡게 되며, S3는 암호화에 전혀 관여하지 않는다.




참고
암호화를 사용하여 데이터 보호
[AWS] 📚 S3 객체 암호화 기능 종류 및 사용하기

profile
Start fast to fail fast

0개의 댓글