접근 권한 목록
인수 시점에 양도해야 할 모든 외부 시스템 자격증명 과 그 위치 포인터 의 통합 목록.
실제 시크릿 값(password, API key, private key 본체)은 본 페이지에 적지 않으며 — 어디에서 값을 얻을 수 있는지만 명시한다.
값 자체는 시크릿 관리 페이지 또는 외부 dashboard에서 직접 확인할 것.
⚠️ 인수 완료 = 시크릿 회전 완료 . 본 페이지에 등록된 시크릿은 인수 직후 회전을 권장한다. Bootalk 측이 git history, 이전 작업 환경 등을 통해 노출되어 있을 수 있다.
1. AWS
semugpt 인프라(dev + prod 양쪽)는 단일 AWS 계정 023888247019 (alias onbiztax)에 산다. profile alias는 ob 하나로 통일.
1.1 계정 / 프로파일
프로파일 (~/.aws/config)
계정
용도
인수 대상
ob
023888247019
semugpt 모든 인프라 (dev + prod)
✅ 표준 진입점
semugpt-frontend
023888247019
프론트엔드 배포 한정 IAM (S3 + CloudFront 권한만)
⚠️ 신규 plan에서 미사용 (legacy 배포용)
023888247019_AdministratorAccess
023888247019
SSO 수동 세션 토큰 — ob 만료 시 fallback
보조
bootalk-prod
296797354236
Bootalk(btalk) 회사의 prod — semugpt와 무관
❌ 혼동 주의, 인수 대상 아님
btalk-rds
296797354236
같은 Bootalk 계정 RDS 전용
❌ semugpt 아님
default / cdo.bootalk
개인 IAM
일반 작업
❌ semugpt 인프라 접근 없음
핵심 : 인수받을 팀은 ob 프로파일 (SSO 기반, 1-12시간 토큰 만료 → aws sso login --profile ob)만 기억하면 된다. bootalk-prod는 이름이 헷갈리지만 다른 회사 계정이므로 작업 시 잘못 들어가지 않도록 주의.
1.2 Lightsail (백엔드 호스팅)
항목
값 / 위치
Dev instance
semugpt-backend (ap-northeast-2a, medium_3_0 4GB, $24/mo)
Dev static IP
3.39.17.132
Prod instance
semugpt-prod ⏳ (Issue #151 Phase 3 진행 중, large_3_0 8GB, $44/mo)
SSH alias
ssh semugpt-aws (dev) / ssh semugpt-prod (prod, Phase 3 후)
SSH key 파일
~/.ssh/aws-semugpt (개발자 Mac에만 존재 — git 미커밋)
Lightsail key pair name
semugpt-aws (dev/prod 공용 — --key-pair-name semugpt-aws)
허용 SSH IP (dev)
49.175.194.2/32 (사무실 only)
허용 SSH IP (prod, 예정)
동일 (49.175.194.2/32)
⚠️ SSH private key는 git에 커밋되어 있지 않다. 인수 시 별도 안전 채널(1Password vault 또는 직접 전달)로 양도해야 한다. 또는 인수받을 팀이 자체 key pair 생성 후 Lightsail에 등록하는 것이 더 안전 (aws lightsail create-key-pair).
1.3 RDS (MySQL)
항목
값
Instance identifier
tax-gpt
Endpoint
tax-gpt.cl2zydns6yrm.ap-northeast-2.rds.amazonaws.com:3306
Engine
MySQL 8.0.44, db.t3.micro, 20GB → autoscale 1000GB
Master user
admin
Master password
selim3400!! (secrets §2.7 )
접근 정책
⚠️ PubliclyAccessible=true + SG sg-09b20a06663fcfa01이 0.0.0.0/0:3306 개방 (보안 우려)
Databases
tax_gpt (legacy live), tax_gpt_v2 (미사용), tax-gpt-v3 (미사용), semugpt_2026 (new, 부분 migration 적용)
⚠️ RDS는 현재 인터넷에 노출되어 있다. Hard cutover 시점에 SG를 잠글 예정이지만 그 전까지는 본인 IP에서 직접 접속 가능 (편리하지만 위험). 인수 직후 master password 회전 + SG 잠금을 권장.
1.4 Route 53 (DNS — prod 도메인)
항목
값
Hosted zone
semugpt.co.kr.
Zone ID
Z0917222THSORQW5ECCW
DNSSEC
NOT_SIGNING
관리 레코드
apex (semugpt.co.kr), www, api, pro (legacy) / new, api-new (soft launch, Phase 10 예정)
⚠️ bootalk.co.kr zone은 Cloudflare 가 관리 (별도 — 1.5절 참조). 두 zone이 다른 DNS provider에 살고 있으므로 인수 시 양쪽 계정 모두 양도해야 한다.
1.5 ALB / ACM / CloudFront / S3 (legacy 정적 자산)
리소스
식별자
비고
ALB
semu-gpt-alb (Internet-facing, 443 HTTPS)
legacy + new 양쪽 공유
Target group (legacy)
semu-gpt-instance
EC2 i-07aea223b0818ab0a 등록
EC2 (legacy)
i-07aea223b0818ab0a "tax-gpt"
t2.medium, Public IP 3.39.210.101, SSH key tax-gpt (⚠️ 본인 미보유 — cutover에서는 SSH 불필요)
ACM (ap-northeast-2)
ff97682a-fcbf-...
*.semugpt.co.kr (apex 미포함), 만료 2026-08-13
ACM (us-east-1)
(CloudFront용)
semugpt.co.kr + *.semugpt.co.kr, 만료 2026-08-07
CloudFront × 2
apex EQH9FKLG1LISZ / www EMX0TAZMBZFP1
S3 origin, hard cutover 후 disable 예정
S3 buckets
semugpt.co.kr, semugpt-hosting, semuchat.co.kr
2026-04-22 생성, 작업자 미확인 ⚠️
⚠️ ACM cert 만료 2026-08-07/13. 인수 시점에 따라 갱신 필요 — ACM은 자동 갱신이지만 만료 알람 미설정. 인수 후 CloudWatch alarm 추가 권장 (known-issues I6 ).
1.6 ECR (Container Registry)
항목
값
Registry
023888247019.dkr.ecr.ap-northeast-2.amazonaws.com
Repository
semugpt-backend
상태
⚠️ 신규 plan에서 미사용 — Docker image push 없이 systemd로 직접 운영. 작업자 미확인.
2. GitHub
항목
값
Organization
uitiorg
Repo
uitiorg/semugpt-2026 (private )
Default branch
develop
Main branch
main (PR용)
Branch protection
⚠️ (인수 시점 확정 필요 — 현재 설정 미문서화)
GitHub Actions
deploy-frontend-dev.yml (push to develop → Cloudflare Workers dev 배포)
Actions secrets
CLOUDFLARE_API_TOKEN 등 ⚠️ (전체 목록은 Settings → Secrets → Actions에서 확인)
Cloudflare Pages 연동
wiki 빌드 (별도 — 3.1절)
인수 시 변경 항목
3. Cloudflare
3.1 DNS (bootalk.co.kr zone — dev 도메인)
항목
값
Zone
bootalk.co.kr (Cloudflare 관리)
관리 레코드
semu-gpt-dev, semu-chat-dev, wiki 등
양도 방식
Cloudflare 계정 자체를 양도 또는 zone transfer
⚠️ bootalk.co.kr은 Bootalk 회사 도메인 이다. 세림세무법인이 인수 시 dev 도메인을 자체 도메인으로 이주하는 것이 권장됨 (예: semugpt-dev.taxemail.co.kr). 이주 절차:
새 zone에 동일 레코드 생성
Cloudflare Tunnel cfargotunnel.com CNAME을 새 hostname으로 추가
backend ENV NEXT_PUBLIC_API_URL 갱신
frontend 재배포
3.2 Workers (frontend dev 배포)
항목
값
Worker name
semugpt-frontend-dev (apps/frontend/wrangler.toml)
빌드 도구
@opennextjs/cloudflare
배포 방식
GH Action deploy-frontend-dev.yml (push to develop + paths apps/frontend/**)
Manual deploy
cd apps/frontend && pnpm deploy:cf (requires CLOUDFLARE_API_TOKEN)
비용
$0 (free tier), 100k req/day 초과 시 $5/mo
3.3 Pages (wiki 빌드)
항목
값
프로젝트 이름
semugpt-2026 ⚠️ (검증 필요 — Cloudflare dashboard 확인)
빌드 명령
mkdocs build (Material theme)
게시 도메인
wiki.semugpt.co.kr ⚠️ (검증 필요)
3.4 Cloudflare Tunnel (dev backend)
항목
값
Tunnel name
semugpt-backend
Tunnel ID
078d8083-eba8-4df2-8026-ebafcb53666b
Cert 위치 (Lightsail)
/etc/cloudflared/cert.pem
Config 위치 (Lightsail)
/etc/cloudflared/config.yml (ingress 정의)
Service
cloudflared systemd (KeepAlive default)
⚠️ Tunnel cert는 Lightsail box에만 존재하며 git에 커밋되지 않는다. 인수 시 Cloudflare 계정 양도 또는 새 tunnel 생성 후 cert 교체 + systemctl reload cloudflared 필요.
⚠️ Cloudflare Tunnel은 zone-on-Cloudflare 필수 — prod 도메인 semugpt.co.kr은 Route 53이라 tunnel 사용 불가. prod는 ALB로 직접 받는다.
4. 외부 SaaS
4.1 OpenAI
항목
값
위치 (코드)
application-prod.yml:47-48 (openai.token), application-local.yml:45-46 (secrets §2.3 )
환경변수 override
OPENAI_TOKEN
사용처
RAG 답변 생성 + HyDE + intent router + 임베딩 + keyword/category inference 등 LLM 호출 7-8곳
Dashboard
https://platform.openai.com/
⚠️ local과 prod 동일 평문 키 커밋 — git history에 노출. 인수 직후 즉시 회전 필수.
4.2 Langfuse (프롬프트 관리 + LLM trace)
항목
값
위치 (local)
application-local.yml:53-57 (평문 커밋)
위치 (prod)
application-prod.yml:70-77 (env-var refs ${LANGFUSE_PUBLIC_KEY} / ${LANGFUSE_SECRET_KEY})
Dashboard
https://cloud.langfuse.com
관리 대상
7개 LLM 프롬프트 (rag-final-answer, hyde-generator, intent-router, query-rewrite, keyword-extraction 등) — 프로젝트 루트 CLAUDE.md "Langfuse 프롬프트 모델 설정" 참조
4.3 Naver Cloud SENS (SMS 발송)
항목
값
위치
application-prod.yml:38-44, application-local.yml:36-42 (local/prod 동일 값, 평문 커밋)
키 이름
ncp.access-key, ncp.secret-key
Service ID
ncp:sms:kr:315481964654:semu-gpt
Calling number
028302220
구현체
SensMessageSender (@Component 활성). SnsMessageSender는 //@Component 주석으로 비활성
Dashboard
https://www.ncloud.com/ → IAM → access key
⚠️ AWS SNS 아님 — 이름이 비슷해 위키에서 과거 오인용된 사례 있음 (위키 기여자용 docs/wiki/CLAUDE.md Prior incidents 참조 — wiki 본문에는 비공개).
4.4 Toss Payments
환경
위치
키
Local (test)
application-local.yml:78-83
test_gck_... / test_gsk_... / test_ck_... / test_sk_... (4종, 평문 커밋)
Production (live)
application-prod.yml:61-66
${TOSS_CLIENT_KEY} / ${TOSS_SECRET_KEY} / ${TOSS_BILLING_CLIENT_KEY} / ${TOSS_BILLING_SECRET_KEY} — env var refs만 정의
Live keys 자체
⚠️ 미수령
클라이언트(세림세무법인 김창진/김진우)에게 제공 요청 중
Dashboard
https://docs.tosspayments.com/ → 가맹점 > API 키
Webhook URL (prod, 예정)
https://api-new.semugpt.co.kr/webhooks/tosspayments ⚠️ Toss console에서 등록 필요 (known-issues D6 )
4.5 Sentry (frontend errors)
항목
값
패키지
@sentry/nextjs v10
Org
bootalk
Project
semugpt
설정 위치
apps/frontend/sentry.{server,edge,client}.config.ts (#162 4.5d)
Dashboard
https://sentry.io/organizations/bootalk/
⚠️ Backend Sentry는 미설치 (known-issues I2 ). 인수 후 도입 권장.
4.6 (참고) OAuth providers
항목
위치
Naver
application-oauth.yml:10 (client-secret 평문 커밋)
Kakao
application-oauth.yml:13-19 (client-id만 존재, client-secret 없음 — Kakao OAuth는 client-secret 없이 동작 가능)
Google
application-oauth.yml:23 (client-secret 평문 커밋)
⚠️ 현재 미사용 — 활성 라우트 없음 (auth 도메인 코드만 존재). 활성화 시 redirect URI를 prod URL로 갱신 + secret 회전 필요.
5. 운영 box 접속
5.1 Lightsail SSH
항목
값
SSH alias
ssh semugpt-aws (dev) / ssh semugpt-prod (prod, Phase 3 후)
Key 파일
~/.ssh/aws-semugpt (개발자 Mac에만)
허용 IP
49.175.194.2/32 (사무실 only)
5.2 사무실 외 IP에서 접속 (임시)
MY_IP = $( curl -s ifconfig.me)
# 사무실 룰 + 본인 임시 IP 동시 허용
aws --profile ob lightsail put-instance-public-ports --instance-name semugpt-backend \
--port-infos "fromPort=22,toPort=22,protocol=tcp,cidrs=49.175.194.2/32, ${ MY_IP } /32"
# 작업 끝나면 사무실만 남기기
aws --profile ob lightsail put-instance-public-ports --instance-name semugpt-backend \
--port-infos "fromPort=22,toPort=22,protocol=tcp,cidrs=49.175.194.2/32"
⚠️ 인수받을 팀의 사무실 IP로 교체 필요 — 49.175.194.2/32는 Bootalk 사무실 IP다.
5.3 Lightsail-on-box 자산
위치
내용
양도 방식
/etc/semugpt/slack-webhook.url
Slack incoming webhook URL (mode 0600, root-only)
Slack workspace 자체 양도 또는 새 webhook 발급
/etc/semugpt/slack-mention.txt
알림 prefix mention (현재 <!here> @주우철)
새 담당자 Slack user ID로 교체
/etc/cloudflared/cert.pem
Cloudflare Tunnel cert
Cloudflare 계정 양도 또는 새 tunnel 발급
/etc/semugpt/backend.env (예정, prod)
systemd EnvironmentFile — 실제 시크릿 주입 (mode 0600)
인수 시 새 시크릿으로 갱신
/etc/semugpt/frontend.env (예정, prod)
frontend systemd EnvironmentFile
동일
6. 양도 시 회전 권장 시크릿 (체크리스트)
Git history에 평문 노출된 항목 + Lightsail box에 보관된 시크릿은 인수 직후 회전 권장. 상세 절차는 시크릿 관리 페이지 §3 회전 우선순위 참조.
Priority P0 (즉시 회전)
Priority P1 (1주 내 회전)
Priority P2 (인수 후 적정 시점)
Priority P3 (조건부)
7. 인수 시 영향 매트릭스
각 시크릿을 회전할 때 영향받는 시스템 / 사용자.
시크릿
영향받는 시스템
영향받는 사용자
downtime
JWT secret
Backend
전 사용자 (로그아웃)
없음 (재로그인 필요)
OpenAI token
Backend + Data pipeline
RAG 사용자 (LLM 응답 중단)
restart ~90s
RDS password
Legacy backend + New backend
전 사용자
restart ~90s (동시 갱신 시 무중단 가능)
SENS keys
Backend
회원가입/로그인 중인 사용자
restart ~90s
Langfuse keys
Backend (RAG)
영향 없음 (fallback prompt로 silently 동작)
restart ~90s
Toss live keys
Backend + Frontend
결제 진행 중인 사용자
restart ~90s + frontend rebuild
Slack webhook
Lightsail cron
운영자 (알림 누락)
즉시 (cron 다음 실행 시)
Cloudflare Tunnel cert
Dev URL
dev 사용자 (502 ~5분)
systemctl reload cloudflared 수초
알려진 한계 / 개선 예정
Secret manager 부재 : AWS Secrets Manager / SSM Parameter Store 미사용 — 작은 팀에 과한 인프라라 도입 보류 (secrets §5 )
인증서 만료 알림 부재 : ACM cert 만료(2026-08-07/13) 임박 시 알림 없음 — CloudWatch alarm 도입 검토 (known-issues I6 )
GitHub Actions secrets 전체 목록 미문서화 : Settings → Secrets → Actions에서 인수 시점에 직접 확인 필요 ⚠️
Cloudflare Pages 프로젝트 이름 / wiki 도메인 검증 필요 : dashboard에서 인수 시점에 확정 ⚠️
Bootalk 사무실 IP 하드코딩 : 49.175.194.2/32가 firewall rule에 박혀 있음 — 인수 시 인수받을 팀 사무실 IP로 교체 필요
관련 문서
시크릿 관리 — 시크릿 위치 / 회전 절차 상세
인수 체크리스트 — 본 페이지의 항목을 Day-1 ✅로 따라가는 가이드
연락처 — 인수 시 owner 변경 절차의 vendor별 연락처
운영 배포 — pre-cutover 시점에 secret rotation이 어디 끼는지
1차 출처: 레포 루트 CLAUDE.md의 "AWS Profiles" 섹션 + "Production Infrastructure" 섹션