
간소하게 AI 환경을 제공하기 위해 Cloudflare AI Gateway를 검증해 보았다
요약
기업 내 AI 모델 사용 시 발생하는 비용 관리, 감사 로그, 보안 가드레일 문제를 해결하기 위해 Cloudflare AI Gateway를 검증한 사례입니다. Amazon Bedrock이나 LiteLLM의 대안으로서 관리형 서비스의 장점을 분석합니다.
핵심 포인트
- AI 모델 사용 시 감사 로그, 비용 제어, 가드레일 기능의 필요성 확인
- Amazon Bedrock의 부족한 비용 모니터링 및 개인별 안분 기능 보완 필요
- Cloudflare AI Gateway의 BYOK 지원 및 다양한 프로바이더 호환성 확인
- 무료 티어를 활용한 비용 효율적인 AI 인프라 관리 가능성
서론
주식회사 mediba의 횡단 시스템부 즈운(ずーん)입니다.
저희 회사에서는 지금까지 GitHub Copilot을 사내 엔지니어용으로 제공해 왔으나, 엔지니어 이외에도 Claude Code 등을 이용하는 기회가 늘어나고 있습니다.
GitHub Copilot은 툴을 배포할 때 필요한 감사 로그 (Audit Log) 수집이나 인증 관련 기능 등이 갖춰져 있지만, 이용 시에는 올해 6월의 요금 체계 변경으로 인해 실질적으로 종량제 (Pay-as-you-go)가 되었음에도 불구하고 시트 (Seat) 단위의 계약이 필요하여 이용량과 관계없이 시트당 월간 비용이 발생합니다.
대안으로는 일반적인 Amazon Bedrock을 경유하여 종량제로 이용하는 방법도 생각할 수 있습니다. 하지만 Amazon Bedrock은 비용 제어 (Cost Control) 기능 등이 표준으로 갖춰져 있지 않기 때문에 자체적으로 준비해야 합니다.
이번에는 가려운 곳을 긁어줄 수 있는 문제를 간소하게 해결할 수 없을지 검토해 보았습니다.
Amazon Bedrock만으로는 무엇이 부족한가
저희 회사에서는 통제 및 보안 측면의 요구사항으로서 아래와 같은 기능이 최소한으로 필요하다고 생각하고 있습니다.
-
감사 로그 (Audit Log) 취득 및 보관
-
무언가 발생했을 때 조사할 수 있을 것
-
가드레일 (Guardrail) 기능
-
부적절한 요청 등을 차단하는 것
-
비용 분석 및 리미트 (Limit) 기능
-
개인 단위·프로젝트 단위의 비용 분석 및 제어가 가능할 것
-
예산 초과 시 강제 정지할 수 있을 것
또한, 저희 회사만의 특수한 사정으로 프로젝트마다 이용 비용을 안분(按分)해야 하기 때문에, 각 프로젝트의 AWS 계정으로 비용이 과금되도록 하고 싶다는 요구사항도 있습니다.
이러한 요구사항들은 대부분 AWS의 기능으로 충당할 수 있지만, 개인 단위의 비용 실시간 모니터링 및 제한은 독자적인 구현이 필요하거나, AWS 계정을 나누어 배포할 경우에는 각각의 환경에 해당 구현을 해야 하는 문제가 발생합니다.
다른 회사들은 어떻게 하고 있는가
스터디 모임 등에서 다른 회사들이 어떻게 통제하고 있는지 들어본 결과, OSS인 LiteLLM을 프록시 (Proxy)로 커스텀하여 실현하고 있는 듯했습니다.
다만, 저희 회사의 상황을 고려했을 때 LiteLLM 환경을 구축·운영하거나 코드를 커스텀하기 위한 비용을 할애하기는 어렵다고 판단했습니다.
독자적으로 인프라를 구축함으로써 우선 그 비용이 들 뿐만 아니라, OSS를 커스텀함으로써 유지보수 난이도도 높아질 것이라고 생각했기 때문입니다.
LiteLLM은 Enterprise 계약을 통해 부족한 기능을 보완할 수 있다고 하지만, 비용감을 알 수 없기 때문에 비슷한 기능을 가진 다른 매니지드 서비스 (Managed Service)를 찾아보았습니다.
Cloudflare AI Gateway라는 선택지
인터넷으로 여러 가지를 찾아본 결과, Cloudflare AI Gateway라는 것이 있다는 것을 알게 되었습니다.
아래와 같이 바로 저희가 원하던 기능들이 포함되어 있었습니다.
-
감사 로그 (Audit Log) 수집 기능
-
개인 단위까지 대응한 비용 관리 기능
-
Cloudflare가 제공하는 AI 프로바이더 서비스 이외의 BYOK (Bring Your Own Key)에도 대응
-
Amazon Bedrock뿐만 아니라 Google의 Agent Platform 등에도 대응
-
가드레일 (Guardrail)·DLP 기능
-
라우팅 (Routing) 기능
BYOK에 대응하고 있기 때문에, 향후 Amazon Bedrock뿐만 아니라 다른 AI 프로바이더의 모델을 이용하고 싶어질 때에도 굳이 이러한 기능들을 다시 구현할 필요가 없습니다. 또한, 라우팅이나 캐시 (Cache) 기능도 있어서 비용 효율을 고려한 모델 전환 등도 할 수 있다는 점이 반갑습니다.
이러한 기능의 대부분을 무료 티어 (Free Tier)로 이용할 수 있다는 점은 놀랍습니다. 가드레일·DLP 기능·로그 엑스포트 (Export) 등 일부 기능은 종량제나 추가 라이스선스 계약이 필요하다고 합니다.
실제로 시도해 보았다
실제로 기대한 대로의 기능을 이용할 수 있는지, 이번에는 비용 관리·증적 취득 기능에 한정하여 Claude Code로 검증해 보았습니다.
게이트웨이 생성
-
Cloudflare 계정을 생성한다.
-
로그인 후 콘솔 메뉴에서
AI → AI Gateway를 선택한다. -
AI Gateway 초기 화면에서
커스텀 게이트웨이 생성 (Create Custom Gateway)을 선택한다. -
설정 화면이 나오므로 설정을 커스텀한다.
-
로그는 기본적으로 활성화되어 있으므로 그대로 둔다.
-
레이트 리밋 (Rate Limit) 요청
-
이번에는 검증이므로 3 req./min으로 설정했다.
-
지출 상한 (Spending Limit)
-
다양한 패턴으로 제한을 걸 수 있습니다.
-
윈도우 고정 (注: 문서에 자세한 설명이 없었기에 추측입니다. 틀렸다면 죄송합니다.)
- 고정 (Fixed): 매월 1일부터 말일까지와 같이 고정된 기간으로 집계합니다.
- 슬라이딩 (Sliding): 요청 시점으로부터 과거 1개월을 거슬러 올라가며 집계합니다.
- 이번에는 1 USD/1개월로 고정 윈도우 (Fixed Window)로 설정했습니다.
-
프로바이더(Provider)별 제한
-
말 그대로 프로바이더 단위로 제한합니다.
-
모델(Model)별 제한
-
모델 단위로 제한합니다.
-
메타데이터(Metadata)로 제한
-
API 요청 시 헤더에 첨부하는 메타데이터 정보에 포함된 JSON 데이터로 대상을 좁힙니다. 대상으로 할 키(Key)를 선택합니다.
- 적용 대상
- 키로 분할: 값(Value)마다 개별적으로 집계하여 제한합니다.
- 값으로 필터링: 특정 값이 포함된 경우에만 제한합니다.
- 적용 대상
-
이번에는 user 단위의 제한을 가정하고 있으므로
user_id로 설정해 보았습니다.

-
인증된 게이트웨이 (Authenticated Gateway)
-
이 부분은 기본값 그대로 활성화해 둡니다.
-
생성 버튼을 선택한다
-
여기까지 하면 게이트웨이 생성이 완료되었습니다.
Bedrock의 API 키 발급
여기서는 IAM 액세스 키가 아니라 Bedrock의 API 키를 발급합니다. 백엔드에서 API 키에 대응하는 IAM 사용자가 생성되므로, 운영 환경에서는 모델 제한 등을 IAM 정책(Policy)으로 거는 것이 좋다고 생각합니다.
-
Bedrock의 API 키 콘솔에 접속한다.
-
장기 API 키 (Long-term API key) 탭을 선택하고, 장기 API 키 생성(Generate long-term API key)을 선택한다.
-
키의 유효 기간과 Amazon Bedrock Marketplace 모델에 대한 액세스 권한을 체크한다.
-
키가 생성되면 다운로드한다.
프로바이더 키를 게이트웨이에 등록하기
-
게이트웨이 콘솔을 열고, 프로바이더 키(Provider key) 탭을 연다.
-
열면 프로바이더 목록이 나오는데,
Amazon Bedrock
의 + 버튼을 선택한다. 팝업창에 방금 다운로드한 API 키를 입력하고, 추가 키(Add key) 버튼을 선택한다. 인증 모드와 키 에일리어스(Key alias)는 그대로 둔다. -
IAM 액세스 키를 사용한 인증도 지원합니다.
-
키 에일리어스를 등록하면 요청 시 특정 키를 사용하도록 지정할 수 있습니다 (default는 지정이 없을 때 자동으로 사용됩니다).

-
설정이 완료되면 구성됨(Configured) 항목에 Amazon Bedrock이 표시됩니다.
인증 토큰을 발급하기
-
게이트웨이 콘솔을 열고, Create token을 선택한다.
-
토큰 이름과 대상 계정 리소스를 선택한다.
-
이번에 권한은 기본값 그대로 두었습니다.

-
토큰이 발급되므로 메모해 둔다.
Claude Code 설정하기
이 문서를 참고하여 Claude Code의 커스텀 설정을 진행합니다.
다음과 같이 환경 변수를 정의한 후 claude 명령어를 실행합니다. 문서 그대로 설정했을 때는 제대로 작동하지 않아서 설정을 추가해야 했습니다.
ACCOUNT_ID,GATEWAY_ID: Cloudflare AI Gateway 콘솔의 URL에서 가져올 수 있습니다 (예: https://dash.cloudflare.com/<ACCOUNT_ID>/ai/ai-gateway/gateways/<GATEWAY_ID>/overview)AWS_REGION: 이번에는 도쿄 리전으로 설정합니다.ap-northeast-1CF_AIG_TOKEN: 방금 메모한 AI Gateway의 인증 토큰
export CLAUDE_CODE_USE_BEDROCK="1"
export ANTHROPIC_BEDROCK_BASE_URL="https://gateway.ai.cloudflare.com/v1/<ACCOUNT_ID>/<GATEWAY_ID>/aws-bedrock/bedrock-runtime/<AWS_REGION>/"
export CLAUDE_CODE_SKIP_BEDROCK_AUTH="1" # Bedrock 인증은 AI Gateway가 수행하므로 로컬에서의 인증을 스킵하게 합니다.
...
실제로 작동시켜 보기
실제로 작동시켰을 때의 로그입니다.

확인해 보면 요청(Request)과 응답(Response) 내용이 그대로 기록되어 있는 것을 볼 수 있습니다.
또한, 첨부한 user_id 메타데이터도 확인할 수 있습니다.
또한, 속도 제한 (Rate Limit) 기능도 작동하고 있어, 한도를 초과한 시점에 HTTP 429 에러가 반환되었습니다.

다만, 원래라면 요청(Request)마다 요금이 표시되어야 하지만, 제 경우에는 표시되지 않았습니다. 변경 로그 (2026-06-05-spend-limits)를 확인해 보니, BYOK (Bring Your Own Key) 방식에서도 베스트 에포트 (Best Effort)로 대응하고 있다는 내용이 기재되어 있습니다. 어디까지나 베스트 에포트라고 명시되어 있으므로, 모델명 등이 제대로 매칭되지 않으면 집계되지 않는 것일지도 모릅니다.
분석 대시보드는 다음과 같은 형태이며, 필터링 기능이 있어 메타데이터 등을 이용해 간단한 분석을 할 수 있도록 되어 있었습니다.

요약
- 간소하게 증적 취득이나 비용 관리를 직접 구축하지 않고 실현할 수 있는 방법이 없는지 검토하였고, 그 일환으로 Cloudflare AI Gateway를 검증했습니다.
- 증적 취득이나 속도 제한 (Rate Limit)은 확인할 수 있었으나, 비용 집계에 대해서는 제대로 동작하지 않았습니다. 어쩌면 방법이 일부 틀렸을지도 모릅니다 (만약 '이렇게 하면 된다'와 같은 방법이 있다면 제 X(구 트위터)로 알려주시면 감사하겠습니다).
- 또한, 이번에는 사용자 정보 메타데이터를 수동으로 설정하여 작동시켰지만, Cloudflare Access 등을 조합하면 자동으로 메타데이터를 삽입하는 것이 가능하다고 하므로 별도로 시도해 보려고 합니다.
AI 이용을 관리하고 계신 분들이라면 반드시 한 번쯤은 고민해 보셨을 주제라고 생각하기에, 이 글의 내용이 조금이라도 도움이 되었다면 영광입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기