개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

Secrets Manager — 비밀 값 안전하게 저장

2026년 4월 5일
AWSSecrets Manager보안

AWS Secrets Manager는 데이터베이스 비밀번호, API Key, OAuth 토큰 등 애플리케이션이 사용하는 민감한 비밀 값(Secret)을 안전하게 저장, 조회, 자동 교체할 수 있는 관리형 서비스입니다. 코드나 설정 파일에 비밀 값을 하드코딩하는 대신, 런타임에 Secrets Manager API를 호출하여 값을 가져오는 방식으로 보안을 강화합니다.

시크릿(Secret): 애플리케이션이 외부 리소스에 접근하기 위해 필요한 민감한 인증 정보 (비밀번호, 토큰, API Key 등).

왜 필요한가

소스 코드나 환경 변수 파일(.env)에 비밀번호를 저장하면 다음과 같은 문제가 발생합니다.

  • 코드 저장소에 실수로 커밋될 위험이 있습니다.
  • 비밀번호를 변경할 때 모든 서버를 재배포해야 합니다.
  • 누가 언제 비밀번호를 조회했는지 추적하기 어렵습니다.

Secrets Manager는 이 문제를 다음과 같이 해결합니다. 비밀 값을 암호화하여 저장하고, IAM 정책으로 접근을 제어하며, CloudTrail로 모든 조회 이력을 기록합니다.

저장 및 조회 방식

Secrets Manager에 저장된 값은 AWS KMS로 암호화됩니다. 애플리케이션은 SDK를 통해 런타임에 비밀 값을 조회합니다.

KMS(Key Management Service): AWS에서 암호화 키를 생성·관리하는 서비스. Secrets Manager는 KMS를 사용해 비밀 값을 암호화합니다.

Application
  |
  | GetSecretValue("prod/myapp/db")
  v
Secrets Manager
  |
  | KMS 복호화
  v
{ "username": "admin", "password": "s3cr3t!" }
  |
  v
Application uses credentials

비밀 값은 JSON 형식으로 저장할 수 있어, 사용자 이름과 비밀번호를 한 번에 묶어 관리하기 편리합니다.

자동 교체 (Rotation)

Secrets Manager의 핵심 기능 중 하나는 자동 교체(Rotation)입니다. 일정 주기(예: 30일마다)에 따라 Lambda 함수를 통해 비밀번호를 자동으로 변경합니다. 애플리케이션 재배포 없이 새 비밀번호가 적용됩니다.

AWS는 Amazon RDS, Aurora, Redshift 등 주요 데이터베이스에 대한 자동 교체를 기본 지원합니다. 교체 흐름은 다음과 같습니다.

Rotation Schedule (예: 30일마다)
  |
  v
Lambda Rotation Function
  |
  +---> 1. 새 비밀번호 생성
  |
  +---> 2. DB에 새 비밀번호 적용
  |
  +---> 3. Secrets Manager에 새 값 저장
  |
  +---> 4. 검증 (새 비밀번호로 접속 테스트)
  |
  v
완료 (기존 비밀번호 폐기)

Parameter Store와 비교

항목Secrets ManagerParameter Store
주 용도민감한 비밀 값 (비밀번호, API Key)설정값, 환경 변수
자동 교체지원 (Lambda 기반)미지원
암호화기본 제공 (KMS 필수)SecureString 타입에서만
비용시크릿당 월 $0.40 + API 호출표준 파라미터는 무료
버전 관리지원지원
조회 방식SDK / APISDK / API / 환경 변수 주입(ECS)

정리하면, 주기적인 교체가 필요한 민감한 인증 정보는 Secrets Manager를, 단순 설정값이나 비용을 절감하고 싶은 경우는 Parameter Store를 사용하는 것이 일반적인 선택입니다. 두 서비스를 혼합하여 목적에 맞게 사용할 수도 있습니다.

실무 활용 예시

Lambda 함수에서 RDS 비밀번호를 Secrets Manager로 조회하는 패턴이 가장 일반적입니다. 함수가 Cold Start될 때 한 번만 비밀 값을 조회하고 메모리에 캐싱하면, 매 요청마다 API를 호출하는 오버헤드를 줄일 수 있습니다. 자동 교체가 활성화된 경우에는 캐시 만료 시간을 짧게 유지하거나, 교체 완료 이벤트를 수신하여 캐시를 갱신하는 방식을 사용합니다.

← 이전 글Parameter Store — 환경 변수 및 설정값 저장
다음 글 →CodePipeline — CI/CD 자동화