Files
llm-wiki/raw/official-docs/secrets-aws-secrets-manager-rotation.md
T

116 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: AWS Secrets Manager — Automatic rotation (Lambda / managed)
source_type: official-doc
url: https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html
archive_url:
status: raw
confidence: high
tags: [ca-secrets, aws-secrets-manager, rotation, lambda, aws-official]
related_projects: [ca-skeleton-operational-contract]
related_branches: [feature-secrets-config-source-contract, feature-security-operational-baseline]
created: 2026-05-22
last_reviewed: 2026-05-27
---
# AWS Secrets Manager — Secret Rotation
> Layer: `raw/official-docs/` — AWS Secrets Manager User Guide / "Rotating secrets" 섹션 원문 발췌.
> ca-tmpl `feature-secrets-config-source-contract` 의 baseline rotation 모델 (managed / Lambda) 의 1차 근거.
## Parent / 활용 branch (필수)
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| [[raw/branch-notes/feature-secrets-config-source-contract]] | `prod source = AWS Secrets Manager OR GCP Secret Manager OR Vault` + `DB credential rotation dual-bind 60s` 정책의 1차 근거 — managed / Lambda rotation 의 공식 권장 패턴 검증 |
| [[raw/branch-notes/feature-security-operational-baseline]] | JWT signing key rotation 24h overlap 의 cross-link — AWSPREVIOUS staging label 의 rollback 가능성 모델 |
| [[raw/project-notes/ca-skeleton-operational-contract]] | Secrets Config Source Contract — baseline 채택 후보 (대안 1) |
## 컨텍스트 / 왜 저장했는지
`feature-secrets-config-source-contract` ca-tmpl이 결정한 `prod source = AWS Secrets Manager OR GCP Secret Manager OR Vault` + `DB credential rotation dual-bind 60s` 정책의 1차 근거. baseline의 rotation 모델이 공식 권장 패턴(managed / Lambda)을 따르는지 검증.
## 출처 / Source
- 원본 URL: https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html
- 아카이브 URL: (미확보)
- 저자 / 조직: Amazon Web Services — Secrets Manager User Guide
- 발행 상태: rolling docs (페이지 자체에 명시 없음)
- 관련: staging label `AWSCURRENT` / `AWSPENDING` / `AWSPREVIOUS`, RDS rotation, multi-user rotation strategy
- 마지막 확인일: 2026-05-27
## 핵심 인용 / Key quotes (verbatim)
> [§Rotating secrets — Overview, 2026-05-27 verified] "Rotation is the process of periodically updating a secret. When you rotate a secret, you update the credentials in both the secret and the database or service."
> [§Rotation models — Managed rotation, 2026-05-27 verified] "Managed rotation For most managed secrets, you use managed rotation, where the service configures and manages rotation for you. Managed rotation doesn't use a Lambda function."
> [§Rotation models — Managed external, 2026-05-27 verified] "Rotate Secrets Manager managed external secrets For secrets held by Secrets Manager partners, you use managed external secrets rotation to update the secret on the partner's system. This doesn't require a Lambda function."
> [§Rotation models — Lambda, 2026-05-27 verified] "Rotation by Lambda function For other types of secrets, Secrets Manager rotation uses a Lambda function to update the secret and the database or service."
> **재검증 완료 (2026-05-27)**: WebFetch 권한 복구 후 https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html 원본에서 위 4개 인용 모두 verbatim 일치 확인. 단 dash 문자가 en-dash "" 인 점 + Managed external 항목에 "This doesn't require a Lambda function." 한 문장이 추가로 존재함을 확인. Strength `needs-confirmation` → `official-vendor-doc` 로 격상 (AWS 공식 User Guide).
## Claims Extracted / 추출된 주장
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| AWS-SM-ROTATE-C1 | rotation 은 secret 의 주기적 갱신 과정이며, secret 과 DB/service 양쪽의 credential 을 함께 업데이트 | [§Overview] "Rotation is the process of periodically updating a secret. When you rotate a secret, you update the credentials in both the secret and the database or service." | `official-vendor-doc` | AWS Secrets Manager 의 모든 rotation 시나리오 | rotation 주기 (24h / 30d 등) 의 권장값이 명시되어 있다는 뜻은 아님 — 정책별 결정 |
| AWS-SM-ROTATE-C2 | 대부분의 managed secret 은 **managed rotation** 사용 (서비스가 직접 rotation 관리, Lambda 불필요) | [§Managed rotation] "Managed rotation For most managed secrets, you use managed rotation, where the service configures and manages rotation for you. Managed rotation doesn't use a Lambda function." | `official-vendor-doc` | RDS / DocumentDB 등 managed AWS service 의 secret | 모든 secret 타입에서 managed rotation 이 가능하다는 뜻은 아님 — Lambda 모델이 필요한 경우 별도 |
| AWS-SM-ROTATE-C3 | Secrets Manager partner 가 보유한 secret 은 **managed external rotation** 으로 partner system 측 업데이트 (Lambda 불필요) | [§Managed external] "Rotate Secrets Manager managed external secrets For secrets held by Secrets Manager partners, you use managed external secrets rotation to update the secret on the partner's system. This doesn't require a Lambda function." | `official-vendor-doc` | Secrets Manager partner 통합 시 | partner 목록 / 지원 범위 / SLA 는 본 인용 범위 밖 |
| AWS-SM-ROTATE-C4 | 위 두 모델에 해당하지 않는 secret 은 **Lambda function 기반 rotation** 으로 사용자 코드가 secret 과 DB/service 양쪽 업데이트 | [§Lambda] "Rotation by Lambda function For other types of secrets, Secrets Manager rotation uses a Lambda function to update the secret and the database or service." | `official-vendor-doc` | managed 모델 외 모든 secret | Lambda 코드의 template / 예제가 자동 제공된다는 뜻은 아님 — multi-user / single-user strategy 별도 선택 |
## Usage Boundaries / 적용 경계
- **이 자료가 직접 증명하는 것**:
- `AWS-SM-ROTATE-C1`~`C4`: AWS Secrets Manager 의 rotation 3가지 모델 (managed / managed external / Lambda) 의 공식 정의
- **이 자료가 증명하지 않는 것**:
- staging label `AWSCURRENT` / `AWSPENDING` / `AWSPREVIOUS` 의 전이 메커니즘 (별도 staging label 페이지)
- multi-user rotation strategy 의 정확한 메커니즘 (dual-bind window 의 default 값 등)
- rotation 비용 (per-secret pricing + API call pricing)
- CloudTrail audit 의 자동 활성화 여부
- 다른 cloud (GCP Secret Manager / Vault) 와의 rotation 모델 동등성
- **내 프로젝트에 적용하려면 추가 확인이 필요한 것**:
- ca-tmpl 의 dual-bind 60s 정책이 Lambda multi-user rotation 의 default window 와 일치하는지 (별도 multi-user strategy 페이지 검증)
- `restart-only` reload 정책 하에서 AWSCURRENT 변경이 어떻게 application 까지 전파되는지 (cache 만료 / 명시 restart 전략)
- `__LOCAL_DEV_` sentinel prefix 가 local fake credential 의 prod 누출 방지에 충분한지 (startup guard 별도 구현 필요)
## 메모 / Notes (내 프로젝트 해석)
> 본 섹션은 자료 직접 인용 아님. ca-tmpl 적용 컨텍스트 해석.
- **3가지 rotation 모델:**
1. **Managed rotation** (RDS, DocumentDB 등) — AWS가 직접 갱신.
2. **Managed external** (파트너) — 파트너가 갱신.
3. **Lambda rotation** — 사용자 정의 함수.
- **dual-bind 패턴 (ca-tmpl baseline 60s):**
- Lambda rotation의 multi-user strategy: 두 user(`user1`, `user2`)를 번갈아 회전 → application은 `AWSCURRENT` 라벨만 읽음.
- rotation 중 잠시 두 credential 모두 유효한 window가 필요 → ca-tmpl의 dual-bind 60s가 이를 위한 기준.
- **ca-tmpl 결정과의 매핑:**
- prod = secret manager OR mounted env → AWS Secrets Manager가 valid path.
- `restart-only` reload → AWSCURRENT가 바뀌면 application restart로 fetch. cache 만료 또는 명시 restart.
- dual-bind 60s → multi-user rotation window의 운영 default.
- **장점:**
- managed rotation은 Lambda 코드 작성 불필요 (RDS/Redshift 등).
- staging label로 rollback 가능 (`AWSPREVIOUS`).
- CloudTrail audit 자동.
- **단점:**
- cloud lock-in.
- Lambda rotation은 사용자 코드 부담 (DB 호환성, network 접근, retry).
- 비용 (secret 당 요금 + API call 요금).
- **vs ca-tmpl `__LOCAL_DEV_` sentinel:**
- Secrets Manager는 prod 전용 가정. local은 `.env`. sentinel prefix는 local fake가 prod에 새지 않도록 startup 차단.
## Related / 관련
- 같은 주제 다른 raw:
- [[raw/official-docs/secrets-vault-dynamic-secrets-hashicorp]]
- [[raw/official-docs/config-12-factor-app-config]]
- 인용하는 branch:
- [[raw/branch-notes/feature-secrets-config-source-contract]]
- [[raw/branch-notes/feature-security-operational-baseline]]
- 인용하는 project:
- [[raw/project-notes/ca-skeleton-operational-contract]]
- 대안 그룹: **Group G-B — Secrets sub-topic**
- 본 source의 위치: **대안 1 — AWS Secrets Manager + auto-rotation** (baseline 채택 후보)
- 인용한 wiki 요약: (미작성)