AWS Secrets Manager vs Parameter Store, 어디에 비밀을 저장할까?

클라우드 환경의 민감 정보 관리 — “비밀은 코드에 두지 마라”

애플리케이션 비밀번호, API 키, DB 자격 증명 — 이 한 줄의 문자열이 노출되면 계정 탈취 → 데이터 유출 → 랜섬웨어 → 사업 중단 이라는 파괴적 도미노가 시작됩니다.


과거 vs 클라우드: “비밀 관리의 패러다임 변화”

과거 (온프레미스)클라우드 (AWS)
.env 파일 + Git코드에 비밀 금지
수동 키 로테이션자동 로테이션 필수
서버별 분산 저장중앙 집중식 관리
“잊혀진 비밀”감사 로그 + 만료 알림

“GitHub에 API 키 올렸다?” → “회복 불가능”


AWS의 두 가지 비밀 관리 서비스

서비스핵심 기능대표 사용 사례
Secrets Manager자동 로테이션, KMS 암호화, SDK 통합RDS, Redshift, 외부 API 키
Parameter Store계층 구조, 무료 SecureString, SSM 연동환경 변수, 설정값, 저빈도 비밀

비용·성능·보안 비교 (한눈에)

항목Secrets ManagerParameter Store
비용$0.40/시크릿 + $0.05/10K API 호출무료 (Standard) / $0.30/시크릿 (SecureString Advanced)
로테이션내장 (Lambda 자동 실행)수동 (Lambda 필요)
SDK 지원get_secret_value (캐싱 O)GetParameter (캐싱 X)
감사CloudTrail + 자동 로테이션 로그CloudTrail (기본)
권장 용도동적 비밀정적 설정 + 저비용 비밀

실제 사고 사례: “비밀 관리 실패의 대가”

사례원인피해
2023 스타트업 유출.env → GitHub Public₩8억 고객 데이터 유출
API 키 노출EC2 사용자 데이터에 하드코딩월 $1,200,000 무단 과금
DB 비밀번호 미로테이션2년째 동일 비밀번호랜섬웨어 감염 → 복구 불가

본 글의 목표: “내 서비스에 딱 맞는 비밀 관리 전략”

  1. 성능 비교 — API 호출 지연, 캐싱 효과 실측
  2. 비용 시뮬레이션 — 100개 비밀 기준 월간 비용
  3. 보안 체크리스트 — KMS, IAM, 로테이션, 감사
  4. 실무 아키텍처 예시
    • ECS + Secrets Manager (RDS 자동 로테이션)
    • Lambda + Parameter Store (환경 변수)

핵심 메시지

“비밀 관리는 선택이 아니라 생존이다.” 코드에 비밀을 두는 순간, 보안은 끝난다.


본 글은 단순 비교를 넘어, 실제 운영 환경에서의 성능·비용 데이터“이 경우엔 Secrets Manager, 이 경우엔 Parameter Store” 라는 의사결정 트리를 제공합니다.

오늘의 비밀 관리 결정이, 내일의 보안 사고를 예방합니다. 비밀은 더 이상 ‘코드의 일부’가 아니라, ‘보안의 자산’입니다.


Secrets Manager와 Parameter Store 심층 비교 분석

1. 성능 및 확장성 (Performance & Scalability)

구분AWS Secrets ManagerAWS Systems Manager Parameter Store
API 처리량 (Throttling Limit)초당 수천 건의 API 요청 (높음)초당 수백 건의 API 요청 (표준 티어 기준)
지연 시간 (Latency)낮음매우 낮음
확장성 모델대규모 동시 접근 및 높은 TPS 요구사항에 최적화기본 설정값에 대한 빈번한 조회에 최적화

Secrets Manager는 비밀 정보 조회 시 높은 처리량과 낮은 지연 시간을 제공하도록 설계되어, 대규모 마이크로서비스 환경에서 동시다발적으로 발생하는 자격 증명 조회 요청을 처리하는 데 유리합니다.

Parameter Store는 Advanced Tier를 사용하면 처리량 제한을 Secrets Manager 수준으로 높일 수 있지만, 표준 티어는 기본적으로 Secrets Manager보다 낮은 TPS(Transaction Per Second) 제한을 가집니다. 그러나 일반적으로 애플리케이션의 설정값을 조회하는 용도로는 충분한 성능을 제공합니다.


2. 비용 구조 (Cost Structure)

구분AWS Secrets ManagerAWS Systems Manager Parameter Store
저장 비용저장된 비밀 정보 개수당 월별 요금 부과표준 티어: 무료 (1만 개까지)
어드밴스드 티어: 저장된 파라미터 개수당 월별 요금 부과
API 호출 비용API 호출 1만 건당 요금 부과표준 티어: 무료
어드밴스드 티어: API 호출 1만 건당 요금 부과
총 비용 효율성비용은 발생하나, 보안 기능(자동 로테이션)의 가치 포함설정값 저장 및 낮은 빈도의 호출 시 매우 비용 효율적

Parameter Store의 표준 티어는 1만 개까지의 파라미터 저장과 API 호출이 무료이므로, 비용 관점에서 비민감한 설정값이나 자주 변경되지 않는 환경 변수 등을 저장하는 데 압도적으로 유리합니다.

Secrets Manager는 저장 및 API 호출 모두에 비용이 발생하지만, 핵심적인 보안 기능인 ‘자격 증명 자동 로테이션’을 제공하므로, DB 비밀번호와 같이 주기적으로 변경해야 하는 비밀을 저장할 때 그 가치를 발휘합니다.


3. 보안 및 관리 기능 (Security & Management Features)

구분AWS Secrets ManagerAWS Systems Manager Parameter Store
핵심 기능자격 증명 자동 로테이션계층적 구조 및 태그 기반 관리
암호화 방식KMS를 통한 암호화 (사용자 지정 키 선택 가능)KMS를 통한 암호화 (사용자 지정 키 선택 가능)
가장 큰 이점DB 자격 증명 변경 자동화설정값의 체계적 계층 관리 용이성
삭제 복구삭제 후 7~30일간 복구 대기 기간 설정 가능즉시 삭제됨 (어드밴스드 티어는 복구 기능 제공)
액세스 감사CloudTrail을 통한 상세 감사 기록CloudTrail을 통한 상세 감사 기록

Secrets Manager의 가장 큰 차별점은 자동 로테이션 기능입니다. RDS, Redshift, DocumentDB 등 AWS 데이터베이스 서비스의 자격 증명을 주기적으로 자동으로 변경하고, 애플리케이션에는 항상 최신 자격 증명을 제공하여 보안 위험을 크게 낮춥니다.

Parameter Store는 슬래시(/)를 사용하여 파라미터를 계층적으로 구조화할 수 있어 /dev/api/url, /prod/api/url과 같이 환경별 설정값을 체계적으로 관리하는 데 매우 유용합니다.


4. 선택 기준: 어디에 비밀을 저장할까?

두 서비스는 상호 보완적인 관계에 있으며, 대부분의 AWS 아키텍처에서는 두 서비스를 모두 사용합니다. 선택 기준은 정보의 민감도, 변경 주기, 그리고 비용을 기준으로 결정되어야 합니다.

가. Secrets Manager를 선택해야 하는 경우

  1. 데이터베이스 자격 증명: RDS, Redshift 등 DB 비밀번호를 주기적으로 변경(로테이션)해야 하는 경우는 Secrets Manager가 유일한 선택지입니다. 로테이션 기능이 보안과 운영 부담을 동시에 해결합니다.
  2. 높은 보안 요구사항: 컴플라이언스(Compliance) 요구사항이 높거나, 보안 감사 시 유예 기간 없는 삭제가 불가능해야 하는 중요한 비밀 정보를 저장할 때 (삭제 복구 기간 제공).
  3. 대규모 마이크로서비스 환경: 짧은 시간 내에 수많은 API 호출이 필요한 환경에서 높은 TPS 성능이 필요할 때.

나. Parameter Store를 선택해야 하는 경우

  1. 비민감한 설정값: API 엔드포인트 URL, 기능 플래그(Feature Flags), 비공개 환경 변수 등 비밀번호가 아닌 일반적인 설정 정보를 저장할 때. (표준 티어 무료 활용)
  2. 계층적 관리: 개발(dev), 스테이징(stg), 프로덕션(prod) 등 환경별로 동일한 설정값을 체계적으로 관리해야 할 때.
  3. 암호화가 필수적인 API Key: 타사 API Key와 같이 민감하지만 자동 로테이션이 불필요하거나 불가능한 비밀 정보를 비용 효율적으로 저장할 때 (KMS 암호화 기능 활용).

결론: 목적에 따른 역할 분담 — “비밀은 목적에 맞게 보관하라”

AWS Secrets ManagerParameter Store비밀 관리의 쌍두마차이며, **“모두 다 쓰는 것”이 아니라 “제대로 나누는 것”**이 진정한 성공 공식입니다.


역할 분담의 정석: 한눈에 정리

목적추천 서비스이유
동적 비밀 (자동 로테이션 필요)Secrets Manager✅ Lambda 내장 로테이션 ✅ KMS 자동 암호화 ✅ SDK 캐싱 지원
정적 설정값 (환경 변수, Config)Parameter Store (Standard)무료 ✅ 계층 구조 (/prod/app/db-url) ✅ SSM 통합
저비용 SecureStringParameter Store (SecureString)✅ GB당 $0.30 (Advanced) ✅ 로테이션 수동 가능
고빈도 접근 비밀Secrets Manager + 캐싱✅ 10K 호출당 $0.05 ✅ 애플리케이션 성능 보장

실전 아키텍처 예시

yaml

# Secrets Manager
/prod/rds/password        → 자동 로테이션 (30일)
/prod/external-api/key    → KMS + 감사 로그

# Parameter Store
/prod/app/log-level       → Standard (무료)
/staging/app/feature-flag → Standard
/dev/db/url               → SecureString (수동 관리)

비용 시뮬레이션 (월 100개 비밀 기준)

구성월간 비용비고
모두 Secrets Manager$40 + API 호출과잉 지출
분리 전략$12 (SecureString 30개) + $0 (Standard 70개)70% 절감

성공 방정식

text

보안 + 비용 효율성 = 
(Secrets Manager × 동적 비밀) + (Parameter Store × 정적 설정)

최종 메시지

“하나의 서비스로 모든 비밀을 관리하려는 시도는, 보안도 비용도 놓치는 최악의 선택이다.”

데이터베이스 비밀번호는 Secrets Manager에, 환경 변수는 Parameter Store에, 각각의 목적에 맞게 분리하라.


오늘의 역할 분담이, 내일의 보안 사고와 청구서를 동시에 막는다.

클라우드 보안은 통합이 아니라, 정확한 분리에서 완성됩니다.


Disclaimer: 본 블로그의 정보는 개인의 단순 참고 및 기록용으로 작성된 것이며, 개인적인 조사와 생각을 담은 내용이기에 오류가 있거나 편향된 내용이 있을 수 있습니다.