Notice
Recent Posts
Recent Comments
관리 메뉴

즐겁게, 코드

S3 버킷 데이터 암호화 방법 본문

☁️ 클라우드/AWS

S3 버킷 데이터 암호화 방법

Chamming2 2022. 4. 10. 00:46

S3 버킷에 담긴 데이터(객체)의 암호화는 크게 "서버에서 암호화하느냐, 클라이언트에서 암호화하느냐" 로 나뉩니다.

서버 사이드 암호화 (SSE)

서버 사이드 암호화 방식에는 크게 SSE-S3, SSE-KMS, SSE-C 의 3종류가 존재합니다.

SSE-S3

SSE-S3는 AWS에서 제공 / 관리되는 키를 통해 데이터를 암호화하는 방법입니다.

암호화 방법은 정말 간단한데요, 버킷에 객체를 업로드할 때 헤더에 "x-amz-server-side-encryption": "AES256" 키-값 쌍을 추가해 업로드하면 자동으로 S3에서 제공되는 키를 통해 암호화됩니다.

✅ 헤더에 추가하는 값을 보면 추측할 수 있듯, SSE-S3는 AES256 암호화 알고리즘을 사용합니다.

SSE-KMS

SSE-KMS는 AWS KMS(Key Management Service)를 통해 암호화용 키를 적용하는 방법입니다.

SSE-S3와 유사하게 헤더에 "x-amz-server-side-encryption": "aws:kms" 키-값 쌍을 추가해 적용할 수 있으며, KMS에서 관리하는 키는 사용자가 설정할 수 있고 누가 키를 사용했는지 등 기록 조회가 가능하다는 장점이 존재합니다.

SSE-C

SSE-C는 회사 또는 개인이 온프레미스 환경에서 자체적으로 관리하는 키를 통해 암호화하는 방법입니다.

특이한 점으로는 SSE-KMS나 SSE-S3와는 다르게 반드시 HTTPS 프로토콜을 통해 요청을 보내야 하며, 요청에는 사용자가 사용할 임의의 데이터 키를 포함해야 합니다.

클라이언트 사이드 암호화

위에서 다룬 내용들이 서버 사이드에서 암호화를 적용하는 방법이었다면, 클라이언트 사이드 암호화는 클라이언트에서 암호화한 데이터를 버킷에 업로드하는 방법입니다.

 

클라이언트 단에서 암호화를 위해 Amazon Encryption SDK 등 다양한 방법 을 적용할 수 있으며, 암호화한 데이터를 버킷에서 내려받을 때도 동일한 방법으로 복호화를 수행해야 합니다.

반응형
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆