home
SAA-C03

[security] Secrets Manager

DB 비밀번호를 코드에 박아두는 건 이제 그만. 안전하게 보관하고 알아서 교체까지 해주는 방법.

One-Line Summary

Secrets ManagerDB 자격증명·API 키 같은 비밀을 KMS로 암호화 저장하고, 스케줄에 따라 자동 교체(rotation) 하며, 앱은 항상 최신 값을 조회해 쓰게 하는 관리형 비밀 저장소다. 시험에서는 "자격증명 자동 교체(automatic rotation)" → 곧바로 Secrets Manager 이고, RDS/Aurora와의 네이티브 연동, Parameter Store와의 비용·기능 차이가 핵심이다.

뭔지 (What / Why)

비밀번호를 코드·설정 파일·환경변수에 하드코딩하면 (1) 유출 위험, (2) 보안 정책상 요구되는 주기적 교체가 사실상 불가능하다. 수동으로 바꾸면 앱이 옛 비밀번호로 접속하다 깨진다.

Secrets Manager는 비밀을 중앙에서 암호화 보관하고, 비밀번호를 새로 만들어 대상(RDS 등)에 반영한 뒤 저장값까지 갱신하는 회전을 자동화한다. 앱은 회전 여부와 무관하게 런타임에 최신 비밀을 조회한다.

[앱/Lambda] ──런타임 조회──▶ [Secrets Manager] ──암호화──▶ (KMS)
                                    │
                               (스케줄 회전)
                                    ▼
                         [Rotation Lambda] → 새 비밀번호 생성 → RDS에 적용 → 저장값 갱신
  ⇒ 코드에 비밀 없음, 회전돼도 앱은 무중단으로 새 값 사용

자동 교체(Rotation)는 실제로 어떻게 동작하나 (핵심)

회전은 Rotation Lambda가 4단계를 수행하고, 비밀은 버전 + 스테이징 라벨로 관리된다. 이 라벨 개념이 "회전 중에도 앱이 안 깨지는" 이유다.

스테이징 라벨의미
AWSCURRENT지금 유효한 비밀(앱이 기본으로 받는 값)
AWSPENDING회전 중 새로 만든, 아직 검증 전 비밀
AWSPREVIOUS직전 비밀(롤백/유예용)

회전은 Lambda가 새 비밀 생성 → 대상에 설정 → 검증 → 승격을 자동 수행한다(새 값은 검증 전까지 AWSPENDING, 승격되면 AWSCURRENT).

참고: 두 계정을 번갈아 쓰는 alternating(multi-user) 전략을 쓰면 회전 중에도 다른 하나가 유효해 무중단 회전이 된다. 가용성이 중요할 때의 선택지.

회전 지원 수준대상
네이티브(관리형) 회전RDS, Aurora, Redshift, DocumentDB
커스텀 회전그 외(서드파티 API 키 등)는 Rotation Lambda 직접 작성

실무 활용 사례

사례 1. RDS 자격증명 자동 회전 (가장 대표적)

  • RDS 마스터/앱 계정 비밀번호를 Secrets Manager가 30/60/90일마다 회전.
  • 앱은 시작 시(또는 캐시 만료 시) 비밀을 조회 → 회전돼도 재배포·수동 개입 불필요.
  • Lambda가 프라이빗 서브넷 RDS에 접근해야 하면 Rotation Lambda도 VPC 연결 필요(단골 함정).

사례 2. 앱에서의 조회 패턴 (성능·비용 주의)

  • 매 요청마다 GetSecretValue를 부르면 지연·비용·스로틀 위험 → 클라이언트 캐싱(예: AWS Secrets Manager 캐싱 라이브러리, Lambda extension)으로 값을 캐시하고 회전 시에만 갱신.

사례 3. DR·멀티리전

  • 교차 리전 복제(replica secret) 로 다른 리전에도 비밀을 복제 → 리전 장애 시/멀티리전 앱에서 그 리전의 복제본을 조회.

사례 4. 세분화·교차 계정 접근

  • 리소스 정책으로 "이 비밀은 이 역할/계정만" 제한, 모든 접근은 CloudTrail에 기록되어 감사 가능.

비용 감각 (시험에서 "저렴" 판단에 사용)

  • 대략 비밀당 월 $0.40 + API 호출 1만 건당 $0.05. 비밀 수가 많고 회전이 필요 없다면 Parameter Store(무료 티어) 가 유리.

Secrets Manager vs Parameter Store (아주 빈출)

구분Secrets ManagerSSM Parameter Store
주 목적비밀 + 자동 회전설정값·비밀 저장(저비용)
자동 rotation내장(관리형) 지원기본 없음(직접 Lambda 구성)
비용비밀당 + 호출 과금(유료)Standard 무료
RDS 연동 회전네이티브없음
교차 리전 복제지원수동
암호화KMSSecureString이 KMS
언제회전·RDS 연동·DR회전 불필요, 비용 최소

"automatic rotation" = Secrets Manager, "그냥 저렴하게 저장" = Parameter Store. 자세히는 parameter-store.md.

Common Wrong Directions

오답 방향왜 부족한가
자동 회전이 필요한데 Parameter Store네이티브 rotation은 Secrets Manager
비밀을 환경변수/코드에 하드코딩유출·회전 불가
단순 설정값까지 전부 Secrets Manager회전 불필요·비용 민감이면 Parameter Store
매 요청마다 GetSecretValue 호출지연·스로틀 → 캐싱
프라이빗 RDS 회전 Lambda를 VPC 미연결Lambda를 VPC에 연결해야 접근
회전하면 앱이 잠깐 깨진다고 방치가용성 중요 시 다중 사용자 회전

Exam Triggers

문제에서 이런 표현이 나오면떠올릴 것
"automatically rotate database credentials"Secrets Manager
"store & rotate RDS/Aurora credentials securely"Secrets Manager(네이티브 회전)
"rotate without downtime"다중 사용자(alternating) 회전
"manage API keys with rotation & audit"Secrets Manager + CloudTrail
"replicate secrets to another region"교차 리전 복제
"cheapest storage, no rotation"Secrets Manager 아님 → Parameter Store

Memory Sentence

Secrets Manager는 비밀을 KMS로 암호화 저장하고 Rotation Lambda(create→set→test→finish)와 스테이징 라벨(AWSCURRENT/PENDING/PREVIOUS)로 자동 교체한다. RDS/Aurora는 네이티브 회전, 무중단은 다중 사용자 전략, 조회는 캐싱. "automatic rotation"이면 Secrets Manager, 회전 없이 저렴하면 Parameter Store.

References

댓글

아직 댓글이 없습니다.