AI(Claude Code · Kiro · Amazon Quick)와 대화하며, 사내 개발자용
LLM 거버넌스 게이트웨이를 AWS에 구축하는 Skill
← / → · Space · 하단 버튼 · 점 클릭 으로 이동 — 총 15 슬라이드
코드 에이전트(Claude Code · Codex)를 개별로 Bedrock에 붙이지 않고, 단일 거버넌스 게이트웨이를 강제 경유시켜 중앙 통제한다.
SSO 신원 강제(AWSReservedSSO_)
사용자별 가상키 발급
Enterprise 라이선스 불필요
모델 라우팅(Claude/GPT)
티어별 allowlist
예산 캡(economy $50)
Bedrock Guardrails
콘텐츠·PII·금지토픽
시크릿 탐지(pre-call)
CloudWatch(인프라)
Langfuse(프롬프트/트레이스)
키별 사용량·예산
한 코드베이스로 최소 PoC ~ 엔터프라이즈까지 (토글로 구성)
VPC·3계층 서브넷, SG 체인(누가 누구에게 어떤 포트), Gateway/Interface 엔드포인트로 트래픽 VPC 내 유지
Aurora Serverless v2(격리 서브넷·암호화). LiteLLM/Langfuse DB 시크릿 분리 + db-init 커스텀 리소스
Bedrock Guardrail 생성: 콘텐츠 필터·PII 차단·금지 토픽. LiteLLM이 ID/버전으로 참조
게이트웨이 본체. ECS Fargate(Graviton)+내부 ALB. Task Role SigV4로 Bedrock 호출. master key 소유
프롬프트/트레이스 관측. 자가호스팅 ECS. enableLangfuse 토글
SSO Token Service. API GW(IAM)+Lambda가 SSO ARN 검증→가상키 발급, DynamoDB 캐시, 팀 매핑
CloudWatch 대시보드(ALB 요청/5xx, Token Service, Langfuse 링크)
CloudFront(VPC Origin→내부 ALB). 유일한 공개 진입점·TLS 종단. Location 재작성 함수
cross-stack는 append-only *Exports 인터페이스 계약 + 런타임 SSM으로 결합(순환 의존성 0)
AWSReservedSSO_ 접두사 확인, 비-SSO는 403. 권한셋→팀(standard/economy) 매핑IAM Identity Center(SSO)가 신뢰 기준. AWSReservedSSO_ ARN만 허용, 직접 IAM 롤 우회 차단(403)
API Gateway AWS_IAM(SigV4). 권한셋에 execute-api:Invoke만 부여 — 최소 권한
사용자별 가상키 발급·DynamoDB 캐시(TTL). master key는 Secrets Manager grantRead. 장기 키 배포 없음
권한셋→LiteLLM 팀. economy=모델 allowlist + 예산 캡($50). standard=전 모델
Bedrock Guardrail + 시크릿 탐지가 모든 Claude 요청에 default 적용. MCP는 키별 access group으로 스코프
키별 사용량·예산, Langfuse 프롬프트/트레이스, CloudWatch 지표. cdk-nag 억제는 사유 명시
CACHING_DISABLED — 본문을 엣지에 캐시하지 않음데이터 레지던시 요건이 있으면 배포 리전을 고정하고 모든 영속 데이터가 그 리전에 머무름을 위 경로로 보장
LiteLLM hide-secrets (pre-call) — API 키/토큰 패턴을 요청 단계에서 마스킹·차단. 모든 모델 공통
콘텐츠: HATE·INSULTS·SEXUAL·VIOLENCE·MISCONDUCT (HIGH)
PII 차단: 카드·SSN·AWS Access/Secret Key + API키 정규식
금지 토픽: 해킹툴·데이터 유출
가상키별 mcp_access_groups(예 default_tools). 팀 멤버십 없는 키는 도구 사용 불가 — 검색 트래픽도 게이트웨이 경유
⚠️ Bedrock Guardrail은 bedrock-runtime(Claude) 전용 → GPT(Mantle) 경로는 Layer 1로 보완하고 정책 공백을 문서화(constraints.md)
| # | 선택축 | config 필드 | 옵션 |
|---|---|---|---|
| 1 | 커스텀 도메인 | litellm.certMode | acm-dns(도메인+ACM+Route53) / 도메인리스(기본 cloudfront.net) |
| 2 | 관측성 깊이 | enableLangfuse | Langfuse on / CloudWatch만 |
| 3 | 모델·비용 티어 | Token Lambda 팀 매핑 | standard(전 모델) / economy(allowlist + 예산캡) |
| 4 | 제공 모델 | constants.MODELS | Claude(bedrock/) + GPT(bedrock_mantle/) 조합 |
| 5 | 리전(데이터 레지던시) | CDK_DEFAULT_REGION | 메인 리전 고정 · CDN은 us-east-1 |
| 6 | 용량·비용 | data.* · litellm.* · natGateways | Aurora ACU · Fargate 크기 · NAT 수 |
| 7 | 부트스트랩 | bootstrapQualifier | 기본 / 커스텀(충돌 회피) |
추가 토글: guardrail.enabled · observability.dashboardEnabled · agentcore.tavily*(MCP 웹검색) · auth.keyCacheTtlSeconds
Discovery 답변과 그 결과 config/dev.json을 요약해 사용자 승인 후 진행
스택 구성·예상 비용 제시 후 승인. MCP-first: 모델 ID는 하드코딩 금지·런타임 검증
근거: SKILL.md (Phase 1~6)
산업·티어·리전 입력에 맞춰 커스터마이즈되어 생성
키 helper가 Token URL에서 SigV4 리전 파싱 → 무수정 다리전
CloudFront Function이 Host로 Location 재작성 + PROXY_BASE_URL/NEXTAUTH_URL 공개도메인(2단계)
잔존 리소스 시 커스텀 --qualifier로 비파괴 부트스트랩
Guardrail은 bedrock-runtime 전용 → GPT 경로 공백 명시
master key·DB·앱 시크릿은 Secrets Manager. 평문은 안티패턴
RETAIN·백업·per-AZ NAT·스코프 IAM·로그 — 각 항목 PROD TODO
근거: shared/reference/constraints.md (실 배포에서 발견·역반영된 항목)
~/.claude/skills/
llm-gateway-governance
~/.kiro/skills/
llm-gateway-governance
~/.quickwork/skills/
llm-gateway-governance
세 곳의 SKILL.md는 md5 동일(CI 검증) · 지식은 shared/에 1벌만 작성(sync-skills.sh).
트리거 예: "사내 개발자용 LLM 게이트웨이 만들어줘" · "Govern Bedrock access for developers"
설치 후 SKILL.md description으로 자동 활성화(트리거 매칭)
스택 배포
Guardrail
토큰리스 SigV4
md5 동일 SKILL
실 배포에서 발견한 이슈(리전·UI 리다이렉트·키 레이스)는 모두 Skill에 역반영
"사내 개발자용 LLM 게이트웨이 만들어줘"
"Govern Bedrock access for developers" · "LiteLLM 배포하고 SSO 가상키 발급"
llm-gateway.daradat.cloud/llm-gateway-governance-skill.zip
llm-gateway-governance-skill · Claude Code · Kiro · Amazon Quick