Authentication Key Map

인증키 연계 구성도 — 공통 키 · 서비스 고유 키 · 회전 영향도

🛡️ 공개 버전 안내 — 이 페이지는 인증키의 이름 · 범주 · 연계 관계만 표시합니다. 실제 키 값은 운영 호스트의 .env.production(gitignore)에만 존재하며, 내부 표준 점검(불일치 항목 · 계정 상세)은 비공개 문서에서 관리합니다.
공통 키 (Shared)
서비스 고유 키 (Service-Owned)
별칭 / 자체 보관
공통 키 Fan-out
🔐 .env.production Single Source of Truth · gitignore · 키 값은 운영 호스트에만 존재
Shared Authentication Keys 여러 서비스가 동일 값 공유
🔑 OAuth

GOOGLE_CLIENT_ID

Google OAuth 2.0 Client ID — 모든 서비스 콜백 URI를 승인된 리디렉션 URI에 등록

EduFit HopenVision CompanyAnalyzer Academy TeacherHub +AllergyInsight(계획)
회전 난이도 높음
🔑 OAuth · 서버 Flow

GOOGLE_CLIENT_SECRET

서버사이드 인가코드 Flow 서비스 전용 — ID 토큰 검증 방식 서비스는 불필요

Academy Admin TeacherHub CompanyAnalyzer
회전 난이도 높음
📧 SMTP

GMAIL_APP_PASSWORD

Gmail 발신 앱 비밀번호 — GMAIL_ADDRESS와 함께 사용 · 2FA 필수

AllergyInsight EduFit NewsLetterPlatform StandUp CompanyAnalyzer
회전 난이도 중간
🔗 SMTP · 별칭

SMTP_USER / SMTP_PASSWORD

GMAIL_* 키의 ${...} 참조 별칭 — 점진적 GMAIL_* 통일 예정

EduFit CompanyAnalyzer
GMAIL_* 회전 시 동반
🧠 AI API

ANTHROPIC_API_KEY

Claude API 키 — AI 분석 · 자동 코드 수정 배치에서 사용

AllergyInsight CompanyAnalyzer Auto-Tobe-Agent
회전 난이도 낮음
👤 권한 · 저민감

SUPER_ADMIN_EMAILS

관리자 이메일 목록(콤마 구분) — 시크릿 아님, 공통 관리 대상

EduFit HopenVision
회전 난이도 낮음
Service × Key Matrix 서비스별 인증키 사용 현황
🧪

AllergyInsight

DB JWT Google·계획 SMTP AI 외부 API
📊

EduFit

DB JWT Google Naver SMTP·별칭
🎯

HopenVision

DB JWT Google Admin API
🏢

CompanyAnalyzer

DB JWT Google SMTP·별칭 AI
🎓

Academy Admin

DB Google+Secret
🎓

Academy User

Google·ID만
🏫

TeacherHub

자체 DB Google+Secret
📨

NewsLetterPlatform

SQLite JWT SMTP Admin PW
📋

StandUp

DB SMTP GitHub PAT
📋

QA Dashboard

DB API Key
📈

LogAnalyzer

DB
🔍

InfraWatcher

SQLite

공통 = §1.1 공통 키 공유 · 고유 = 서비스 전용 키 · 별칭 = 공통 키의 ${...} 참조 · LLMOps는 키 정의 예정(미반영)

GitHub Actions Repo Secrets .env.production 아님 · 각 repo Actions Secret 보관
🗝️

QA_DASHBOARD_API_*

fix 커밋 → QA 대시보드 등록 (URL + API Key)

🗝️

SLACK_WEBHOOK_URL

워크플로우 실행 결과 알림

🗝️

CR_PAT / DOCKERHUB_TOKEN

컨테이너 레지스트리 이미지 push

🗝️

QA_PAT / GH_TOKEN

타 repo 워크플로우 트리거

Key Rotation Procedure

인증키를 새로 만들거나 회전(변경)할 때의 표준 절차

공통 키 회전
🌐 외부 콘솔 발급 Google / Anthropic
Naver 콘솔
📝 .env.production 단일 수정점
해당 줄 1곳만
🔁 대상 컨테이너 재시작 연결된 서비스
일괄 재시작
헬스체크 · 기록 서비스 확인
변경 이력 기록
서비스 고유 키 회전
🗄️ DB · env 동시 변경 DB 비밀번호는
한쪽만 바뀌면 기동 실패
🔁 컨테이너 1개 재시작 해당 서비스만
영향 범위 최소
🕑 JWT는 저트래픽 시간대 전 사용자
재로그인 발생
헬스체크 · 기록 서비스 확인
변경 이력 기록

Rotation Principles

키 회전 시 반드시 지켜야 할 4가지 원칙

01
단일 수정점 공통 키는 .env.production 한 줄만 수정하고, 여러 repo에 복제하지 않는다.
02
DB 비밀번호 동시 변경 DB의 ALTER ROLE.env.production을 함께 바꾼다. 한쪽만 바뀌면 컨테이너가 기동 실패한다.
03
JWT 회전 = 전원 재로그인 JWT secret 변경은 기존 발급 토큰을 전부 무효화하므로 트래픽이 적은 시간대에 수행한다.
04
회전 이력 기록 회전 후 헬스체크를 확인하고, 회전일을 표준 문서 변경 이력에 남긴다.

Key Inventory Summary

인증키 분류별 집계

🔑 공통 키 6종 · 다중 서비스 공유
🔐 고유 키 서비스 전용 · {SVC}_ 접두사
🔗 연동 서비스 12개 서비스
🗝️ Repo Secret CI/CD 전용 4 카테고리
📍 단일 수정점 .env.production
📖 표준 출처 AUTH_KEY_MAP.md
OAuth 2.0 JWT HS256 Gmail SMTP Anthropic API GitHub PAT PostgreSQL SQLite .env (gitignore)