AWS Secrets Manager

김기현·약 15시간 전

AWS

목록 보기
17/19

Secret Manager는 데이터베이스 자격 증명, API 키 및 기타 비밀 정보를 수명 주기 동안 안전하게 암호화하여 관리, 검색 및 교체할 수 있도록 도와주는 서비스이다.

1. 왜 환경 변수(.env) 파일만으로는 부족할까?

  1. 중앙 집중 관리: 여러 서버(EC2, Lambda, ECS)가 동일한 DB를 사용할 때, 비밀번호가 바뀌면 모든 서버의 환경 변수를 일일이 수정해야 한다. Secrets Manager를 사용하면 이것만 수정하기 때문에 간편하다.
  2. 보안 사고 방지: 실수로 .env가 깃허브에 커밋되어 유출되는 시나리오를 원천적으로 차단할 수 있다.
  3. 자동 교체 (Rotation): 보안 규정상 90일마다 DB 비밀번호를 바꿔야할 때, 사람이 직접 바꾸지 않고 AWS가 알아서 바꾸고 서버에 전달해줄 수 있다.

2. 핵심 기능

2.1. 보안 정보 암호화

  • 모든 데이터는 저장될 때 AWS KMS(Key Management Service)를 통해 암호화된다.
  • 관리자라도 권한이 없으면 암호를 해독할 수 없다.

2.2. 자동 교체 (Secret Rotation)

  • RDS와 연동하면 Secrets Manager가 주기적으로 DB 비밀번호를 변경하고 자신의 저장소 정보를 업데이트한다.
  • 애플리케이션은 항상 최신 비밀번호를 가져다 쓰기만 하면 된다.

2.3. 세밀한 접근 제어 (IAM)

  • A 서버는 DB 암호만 읽을 수 있고, B 서버는 결제 API 키만 읽을 수 있다는 식의 설정을 IAM 정책으로 구현할 수 있다.

3. 백엔드 개발자의 실무 활용 흐름

  1. 보안 정보 등록: AWS 콘솔에서 DB 주소, ID, PW를 JSON 형태로 저장한다.
  2. IAM 권한 부여: 해당 정보를 읽어야 하는 서버(EC2, ECS 등)의 IAM Role에 secretsmanager:GetSecretValue권한을 추가한다.
  3. 코드에서 호출 (SDK 사용)
    • 앱이 구동될 때 AWS SDK를 통해 정보를 가져온다.
    • Springboot 사용 시: spring-cloud-starter-aws-secrets-manager-config 라이브러리를 쓰면 설정 파일 읽듯이 자동으로 가져올 수 있습니다.

4. Parameter Store vs Secrets Manager

AWS에는 비슷한 기능을 하는 System Manager Parameter Store도 있다. 차이점을 알고 어떤 것을 사용할지 선택해야 한다.

구분Parameter Store (SSM)Secrets Manager
용도일반 설정 값 (로그 레벨, 피처 플래그)민감한 정보 (DB 암호, API 키)
비용기본형은 무료저장된 보안 정보당 비용 발생
자동 교체미지원지원 (Lambda 연동 가능)
보안 수준높음 (KMS 연동 시)매우 높음

5. 백엔드 실무 팁

  • 캐싱 (Caching): 매 요청마다 Secrets Manager API를 호출하면 비용이 많이 들고 속도가 느려진다. 앱이 시작될 때 한 번 가져오거나, 5~10분 정도 메모리에 캐싱해서 사용하는 라이브러리를 사용해야 한다.
  • 버전 관리: Secrets Manager는 보안 정보의 이전 버전을 유지한다. 실수로 잘못 업데이트했을 대 이전 버전으로 즉시 롤백이 가능하다.
  • 로컬 개발 환경: 로컬에서는 .env나 로컬 프로파일을 사용하고, 스테이징/운영 환경에서만 Secrets Manager를 사용하도록 프로파일 전략을 짜는 것이 좋다.
profile
백엔드 개발자를 목표로 공부하는 대학생

0개의 댓글