[AWS] Secrets Manager + Parameter Store
AWS Secrets Manager, Parameter Store, SSM Parameter, secret rotation
정의
| Secrets Manager | Parameter Store (SSM) | |
|---|---|---|
| 가격 | 0.05/10k API | 대부분 무료 (standard) |
| 자동 회전 | 예 (Lambda) | 아니오 |
| 버전 관리 | 자동 | 수동 |
| 크기 | 64KB | 4KB (standard) / 8KB (advanced) |
| 사용 | DB password, API key (회전 필요) | config, feature flag |
어떤 걸 언제?
flowchart TD
Q{종류}
Q -->|회전 필요한 비밀| SM[Secrets Manager]
Q -->|회전 없는 설정값| PS[Parameter Store standard]
Q -->|"민감 설정값 (회전 없음)"| PSSec[Parameter Store SecureString]
Q -->|kubernetes secret 으로 sync| ESO[External Secrets Operator]
Secret 사용
import boto3, json
sm = boto3.client('secretsmanager')
secret = json.loads(sm.get_secret_value(SecretId='prod/db')['SecretString'])
db_password = secret['password']
자동 회전
sequenceDiagram
SM->>Lambda: rotation 시작 (예: 30일마다)
Lambda->>DB: 새 password 생성
Lambda->>DB: 새 password 설정
Lambda->>SM: AWSPENDING → AWSCURRENT
Lambda->>SM: 옛 AWSCURRENT → AWSPREVIOUS
Note over Lambda,DB: 새 password 검증
| 단계 | label |
|---|---|
| 생성 | AWSPENDING |
| 활성화 | AWSCURRENT |
| 보존 | AWSPREVIOUS |
| 폐기 | (없음) |
EKS 와의 통합
| 패턴 | 도구 |
|---|---|
| Sync to K8s Secret | External Secrets Operator |
| Mount as volume | Secrets Store CSI Driver |
| Direct fetch in pod | aws-sdk + IRSA |
Parameter Store: 계층
/prod/db/host
/prod/db/port
/prod/api/key
/dev/db/host
aws ssm get-parameters-by-path --path /prod/db --recursive
흔한 함정
WARNING
- Hardcoded fallback = 코드에 secret 평문. 절대 금지.
- Cross-region replication 없음 = region 장애 시 secret 미접근. Multi-region 권장.
- Rotation 실패 모니터링 부재 = 옛 password 만료 → 서비스 다운.
- Parameter Store 의 4KB 한도 = 큰 비밀 (인증서) 은 advanced 또는 Secrets Manager.
관련 위키
이 글의 용어 (3개)
- [AWS] IAM: User, Role, Policy, STScloud
- 정의 IAM (Identity and Access Management) = AWS 의 권한 관리 전부. User, Group, Role, Policy. 객체 | 객체 | 의미 |…
- [AWS] KMS: 암호화 키 관리, envelope encryptioncloud
- 정의 KMS (Key Management Service) = 암호화 키 중앙 관리. envelope encryption + IAM 통합 + 감사 로그. 키 종류 | 종류 | 의미…
- [K8s] ConfigMap & Secret: 설정과 비밀의 분리kubernetes
- 정의 | | ConfigMap | Secret | |---|---|---| | 데이터 | 평문 | base64 (암호화 아님) | | 크기 | 1MB | 1MB | | 용도 | …
💬 댓글