C.W.K.
Stream
Lesson 12 of 12 · published

Secret rotation

~11 min · rotation, lifecycle, incidents

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Rotation 은 응급 아니고 discipline

한 번도 rotation 안 한 secret 은 rotation 할 수 없는 secret 이야. 처음 시도할 때 까먹은 통합 셋, 옛 값 쓰는 예약 job 둘, 5 개월 전 같은 키 박힌 Vercel environment 발견할 거야. 불 안 났을 때 연습.

유형별 rotation 주기

  • OIDC token — 자동, ~1 시간. 생각 안 해도 됨.
  • 장기 API key (OpenAI, Anthropic, Stripe) — 분기, 또는 접근 있는 계약자/직원 떠날 때.
  • SSH deploy key — 연간, 또는 노트북 분실 시.
  • DB 비밀번호 — 사건 시 또는 분기.
  • GitHub PAT — fine-grained token / GitHub App 으로 단계적 폐지; fine-grained 는 분기 rotation.

Rotation 절차

  1. Provider UI 에서 새 값 생성.
  2. 새 secret 이름으로 저장 (예: API_KEY_V2) — 기존 거 옆에.
  3. Workflow / 앱 설정을 V2 사용으로 업데이트.
  4. V2 가 production 에서 최소 한 full traffic cycle 동안 사용되는지 확인.
  5. Provider 에서 옛 값 무효화.
  6. GitHub 에서 옛 secret 이름 삭제.

이 패턴 (overlap rotation) 이 새 키에 typo 있고 prod 깜깜해지는 위험한 단일 컷오버 회피.

Code

Rotation 치트 시트·bash
# 1. Add new secret (overlap)
gh secret set OPENAI_API_KEY_V2 --body "$NEW_KEY"

# 2. Update workflow to use V2 (PR + merge)
#    sed -i 's/OPENAI_API_KEY/OPENAI_API_KEY_V2/g' .github/workflows/*.yml

# 3. Trigger CI to confirm V2 works
gh workflow run ci.yml

# 4. Revoke old key in OpenAI dashboard, then:
gh secret delete OPENAI_API_KEY

# 5. Optional cleanup pass: rename V2 back to canonical name
gh secret set OPENAI_API_KEY --body "$NEW_KEY"
gh secret delete OPENAI_API_KEY_V2

External links

Exercise

Repo secret 의 장기 API key 하나 골라. 이번 주 full overlap rotation 절차 end-to-end 실행. 다음 rotation 이 더 빠르도록 runbook 에 절차 문서화.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.