시크릿(secret)은 "노출되면 곧바로 침해로 이어지는 자격증명"이다. DB 비밀번호, API 키, OAuth 토큰, TLS 개인키가 여기에 속한다. 보안 시험의 관점에서 시크릿 관리의 본질은 단순한 "암호화 저장"이 아니라 수명주기 전체의 통제다. 저장 시 암호화, 접근 시 IAM 인가, 사용 후 회전(rotation), 폐기 시 삭제 유예 — 이 네 단계를 모두 관리해야 한다. AWS Secrets Manager는 이 수명주기를 자동화하기 위해 설계된 서비스다.
시크릿을 소스 코드, Git 저장소, EC2 사용자 데이터, 컨테이너 환경변수에 하드코딩하면 세 가지 문제가 발생한다. 첫째, 코드 접근 권한을 가진 모두가 시크릿을 본다(최소 권한 위반). 둘째, 회전이 불가능하다 — 바꾸려면 재배포해야 한다. 셋째, 감사가 안 된다 — 누가 언제 시크릿을 읽었는지 추적할 수 없다. Secrets Manager는 이 세 가지를 모두 해결한다: KMS로 봉투 암호화하고, IAM/리소스 정책으로 접근을 제어하며, CloudTrail로 GetSecretValue 호출을 기록한다.
💡 관련 이론: 시크릿 관리는 secret zero 문제로 귀결된다. "시크릿을 안전하게 가져오려면 또 다른 자격증명이 필요한데, 그 자격증명은 어떻게 보호하나?"라는 무한 후퇴다