민감한 S3 데이터 보호: 문제와 해결책
Source: Dev.to

문제: 민감한 데이터와 세분화된 접근 권한
귀사의 회사가 고객 통화 로그를 Amazon S3 버킷에 저장한다고 가정해 보세요. 이 데이터에는 개인 식별 정보(PII)가 포함되어 있으므로 저장 시 암호화가 필요합니다.
표준 암호화만으로는 충분하지 않습니다. 특정 직원(예: 컴플라이언스 팀)만이 이 로그를 복호화하고 읽을 수 있어야 합니다. 시스템 관리자가 S3 버킷 자체에 접근 권한이 있더라도, 이 민감한 데이터를 읽을 수 없어야 합니다.
도전 과제
암호화를 적용하면서 복호화 키를 사용할 수 있는 사람을 최소한의 운영 노력으로 엄격히 제한하려면 어떻게 해야 할까요?
해결책: IAM 정책과 함께 사용하는 SSE‑KMS
가장 효과적인 해결책은 **AWS KMS 키를 이용한 서버 측 암호화(SSE‑KMS)**와 제한적인 IAM 정책을 결합하는 것입니다.

작동 방식
- SSE‑KMS: S3가 키를 투명하게 관리하는 SSE‑S3 대신 AWS Key Management Service(KMS)를 사용합니다. 이를 통해 해당 통화 로그 전용으로 **고객 관리형 키(CMK)**를 생성할 수 있습니다.
- 키 정책: 키 정책을 설정하거나(또는 사용자에게 IAM 정책을 연결하여) 지정된 직원(예: 컴플라이언스 팀)만이 해당 키에 대해
kms:Decrypt를 사용할 수 있도록 명시적으로 허용합니다.
결과
일반 관리자가 객체를 다운로드하려고 하면 S3는 파일을 가져오도록 허용할 수 있지만, KMS 키 사용 권한이 없기 때문에 데이터는 여전히 암호화된 난잡한 형태로 남아 있습니다.
왜 이 방법이 우수한가
- 스토리지 접근과 데이터 접근을 분리합니다.
- 최소 권한 원칙을 만족합니다.
- 추가 하드웨어가 필요 없으며(CloudHSM 없음) 자체 서버에서 키를 수동으로 관리할 필요도 없습니다(SSE‑C 없음).