본문 바로가기
C.W.K.
Stream
Lesson 12 of 12 · published

비밀값 순환

~11 min · rotation, lifecycle, incidents

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

순환은 응급 조치가 아니라 규칙이다

한 번도 순환하지 않은 비밀값은 나중에 돌릴 수가 없어. 처음 시도할 때 통합 설정을 까먹고, 예전 값을 쓰는 예약 작업이 두 개쯤 남아 있고, 5개월 전 같은 키가 박힌 Vercel 환경 변수를 발견하게 될 거야. 불안할 때 연습해야 해.

유형별 순환 주기

  • OIDC 토큰 — 자동, 약 1시간. 신경 쓸 필요 없어.
  • 장기 API 키 (OpenAI, Anthropic, Stripe) — 분기마다, 또는 접근 권한이 있는 계약자나 직원이 떠날 때.
  • SSH 배포 키 — 연 1회, 또는 노트북을 잃어버렸을 때.
  • DB 비밀번호 — 사고가 났을 때나 분기마다.
  • GitHub PAT — fine-grained 토큰이나 GitHub App으로 단계적 폐지; fine-grained는 분기마다 순환.

순환 절차

  1. 제공자 UI에서 새 값을 생성해.
  2. 새 비밀값 이름으로 저장해 (예: API_KEY_V2) — 기존 값 옆에 둬.
  3. 워크플로나 앱 설정을 V2를 사용하도록 업데이트해.
  4. V2가 프로덕션에서 최소 한 번의 전체 트래픽 주기 동안 사용되는지 확인해.
  5. 제공자에서 옛 값을 무효화해.
  6. GitHub에서 옛 비밀값 이름을 삭제해.

이런 겹침 순환 패턴을 쓰면 새 키에 오타가 있어서 프로덕션이 깜깜해지는 위험한 단일 전환을 피할 수 있어.

Code

순환 치트 시트·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

저장소 비밀값 중 장기 API 키 하나를 골라봐. 이번 주에 전체 겹침 순환 절차를 처음부터 끝까지 실행해. 다음 순환이 더 빠르도록 런북에 절차를 문서화해 둬.

Progress

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

댓글 0

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

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