Secrets Manager DB 보안 관리 및 로테이션 가이드
1단계: 시크릿 생성 (비밀번호 보관)
먼저 DB 접속 정보를 Secrets Manager에 안전하게 저장해야 합니다.
Secrets Manager 콘솔 → [새 시크릿 저장]을 클릭합니다.
시크릿 유형:
Amazon RDS 데이터베이스에 대한 자격 증명을 선택합니다. (RDS가 아니라면 '다른 유형의 시크릿' 선택)자격 증명: 사용자 이름(admin 등)과 비밀번호를 입력하고, 연결할 RDS 인스턴스를 선택합니다.
시크릿 이름:
prod/myapp/db-credentials와 같이 계층 구조로 이름을 짓는 것이 관리에 용이합니다.
2단계: 자동 로테이션(Rotation) 활성화
Secrets Manager의 진정한 가치는 이 단계에 있습니다. 비밀번호가 유출되더라도 정기적으로 바뀌게 설정하면 피해를 최소화할 수 있습니다.
생성한 시크릿 상세 페이지에서 [로테이션 구성] → [로테이션 편집]을 클릭합니다.
로테이션 주기: 서비스의 중요도에 따라
30일또는90일등으로 설정합니다.로테이션 함수: * RDS 사용 시: AWS가 미리 만들어둔 Lambda 템플릿을 사용하면 코드를 짤 필요가 없습니다.
기타 DB 사용 시: 직접 Lambda 함수를 작성해야 합니다.
교체 전략: 보통 '단일 사용자(Single User)' 방식을 쓰지만, 서비스 중단을 절대 허용하지 않는다면 '이중 사용자(Alternate User)' 방식을 고려하세요.
3단계: 애플리케이션에서 시크릿 불러오기
이제 코드에서 비밀번호를 지우고, 실행 시점에 AWS SDK를 통해 가져오도록 수정합니다.
동작 방식: 애플리케이션이 시작될 때 혹은 주기적으로 Secrets Manager API를 호출하여 최신 비밀번호를 받아옵니다.
이점: 로테이션이 일어나 비밀번호가 바뀌어도 코드를 수정하거나 서버를 재시작할 필요가 없습니다.
Secrets Manager vs. Parameter Store (비교)
많은 분이 무료인 Parameter Store와 고민하시지만, DB 비밀번호라면 Secrets Manager가 정답입니다.
기능 | Parameter Store (SecureString) | AWS Secrets Manager (권장) |
주요 용도 | 일반 설정값, 구성 정보 관리 | 민감한 자격 증명(비밀번호, API 키) |
자동 로테이션 | 지원하지 않음 (수동) | 기본 지원 (Lambda 연동) |
교차 계정 공유 | 다소 복잡함 | 매우 쉬움 |
비용 | 기본형 무료 | 시크릿당 월 $0.40 + 요청 비용 |
Tip
1. 로테이션을 켜기 전에 '애플리케이션'을 먼저 점검하세요!
로테이션을 활성화하면 AWS가 DB 비밀번호를 실제로 바꿉니다. 만약 애플리케이션이 옛날 비밀번호를 메모리에 캐싱(Caching)하고 있다면, 로테이션 직후 DB 접속 에러가 발생하며 서비스가 중단될 수 있습니다. 시크릿 값을 캐싱하되, 접속 실패 시 즉시 Secrets Manager에서 값을 갱신하는 로직을 코드에 넣어야 합니다.
댓글
댓글 0개
이 문서에는 댓글을 달 수 없습니다.