[AWS Official Document](https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html)
- AWS S3에서 제공하는 **서버 측 암호화(Server-Side Encryption) 방식 중 하나**
- 즉, 데이터를 S3에 저장할 때 **사용자가 직접 제공한 암호화 키로 S3가 암호화를 수행하는 방식**
### 특징
- **고객 제공 키 (Customer-Provided Key)**
- 암호화 키를 AWS가 아닌 사용자가 직접 관리
- 요청 시마다 키를 함께 전달해야 함
- **서버 측 암호화**
- 데이터는 S3 서버에서 암호화/복호화 수행
- 저장 시 암호화, 다운로드 시 자동 복호화
- **키 미저장**
- S3는 암호화 키를 저장하지 않음
- 요청 처리 후 즉시 폐기
- **HTTPS 필수**
- 키를 요청에 포함하므로 반드시 HTTPS로 전송해야 함
- **표준 암호화 알고리즘 사용**
- AES-256 기반 암호화 적용
- **헤더 기반 전달**
- 요청 시 헤더에 암호화 키 포함
- 예: `x-amz-server-side-encryption-customer-key`
### 사용 예시
- 조직에서 **암호화 키를 외부(AWS)에 맡기지 않고 직접 관리해야 하는 경우**
- 내부 보안 정책상 **키 완전 통제권이 필요한 환경**
- 특정 데이터에 대해 **커스텀 키 적용이 필요한 경우**
### 한계
- **키 관리 책임 전적으로 사용자에게 있음**
- 키 분실 시 데이터 복구 불가
- **매 요청마다 키 필요**
- 업로드/다운로드 시 항상 키를 포함해야 함
- **운영 복잡도 높음**
- 키 관리, 보안, 전송까지 모두 직접 처리 필요
- **KMS 기능 사용 불가**
- 감사 로그, 키 정책 등 KMS 기능 활용 불가능