KEEL

インフラ

第08章 インフラ担当

デプロイパターン・Private Link/VPC・HA・シークレット・監視スタックをインフラ担当向けに定義する。

主な読者: インフラSE

インフラ担当の役割

インフラ部門はゲートウェイの 可用性・ネットワーク境界・シークレット・監視 を担う。Phase 1 はシンプルな構成で開始し、Phase 2 で HA とマルチリージョンを検討する。

デプロイメントパターン

パターン構成適用
P1-AAzure Container Apps + LiteLLMPhase 1 推奨(運用簡素)
P1-BAKS 上 LiteLLM(最小 2 レプリカ)既存 AKS 標準がある場合
P2-AAPIM + バックエンド LiteLLMマネージド API 管理が必要な場合
P2-Bマルチリージョン Active-Passive災害対策・海外ユーザー

KEEL 社内標準が AKS の場合は P1-B を優先。Container Apps はパイロット速度重視時に有効。

ネットワーク設計

推奨トポロジ(Phase 1)

[社内端末 / VPN]
       ↓
[Azure Firewall / NSG]
       ↓
[Private Endpoint] → [LiteLLM Service]
       ↓                    ↓
[Key Vault PE]      [Azure OpenAI PE]

要件チェックリスト

接続種別Phase 1Phase 2
社内オフィスVPN または ZTNAZTNA 標準化
リモート開発VPN 必須条件付きパブリック + mTLS
CI/CD専用仮想キー + 固定 egress IP同上

ゲートウェイをパブリックに晒す場合、WAF + IP 制限 + 強認証が必須。Phase 1 は プライベート優先

高可用性(HA)

要素Phase 1 最小Phase 2 目標
ゲートウェイレプリカ2(AZ 分散)3+ Auto-scale
プロバイダ障害セカンダリモデルへのフォールバック定義自動フェイルオーバー
Key VaultRA-GRS またはソフト削除有効同上 + ローテーション自動化
RTO / RPORTO 4h / RPO 1hRTO 1h / RPO 15m

ヘルスチェック

シークレット管理

シークレット保管場所ローテーション
プロバイダ API キーAzure Key Vault90 日(またはプロバイダ推奨)
ゲートウェイマスターキーKey Vault180 日
仮想キーLiteLLM DB(ハッシュ)利用者ごと 90 日 or プロジェクト終了時
DB 接続文字列Key Vault90 日

平文キーを Git・Slack・チケットに置かない を技術的に強制する(pre-commit hook、スキャナ)。

監視スタック

レイヤーツール例監視対象
メトリクスAzure Monitor / PrometheusRPS、レイテンシ、エラー率、トークン量
ログLog Analytics / Loki監査ログ、DLP イベント
トレースOpenTelemetryリクエスト追跡
アラートPagerDuty / Teams Webhook閾値超過、ヘルスダウン
ダッシュボードGrafana / Azure Workbooksコスト、チーム別利用

必須アラート(Phase 1)

アラート条件通知先
GatewayDownreadiness 失敗 3 回連続インフラオンコール
CostSpike日次コスト前日比 300%PM + インフラ
DLPBlockBurst10 分で 50 件超ブロックセキュリティ
ErrorRateHigh5xx > 5% が 5 分インフラ
KeyVaultAccessFail取得失敗インフラ + セキュリティ

キャパシティプランニング

規模同時ユーザー推奨スペック(LiteLLM)
パイロット〜502 vCPU / 4GB × 2 レプリカ
Phase 1〜1004 vCPU / 8GB × 2、DB 小
Phase 2〜500Auto-scale 2〜8、Redis キャッシュ

パッチ・変更ウィンドウ

引き渡し


LiteLLM デプロイのハードニング(2026 CVE 反映)

2026 年上半期に LiteLLM プロキシ向けの 複数の重大 CVE が公開された。KEEL が LiteLLM を採用する場合、インフラ層での緩和とバージョン管理をセットで実施する。

最小バージョン・依存関係

コンポーネント推奨バージョン理由
LiteLLM最新 stable 推奨(公式)。最低でも追補ハードニング済み系列(例: 1.84.3 / 1.85.2 / 1.86.2 以降)GHSA-4xpc-pv4p-pm3w: 1.84.0 で初修正、追補ハードニングは maintained line へバックポート [31][32]
Starlette≥ 1.0.1(依存として含まれる場合も SBOM で確認)Host Header 系の前提コンポーネント
供給網1.82.7 / 1.82.8 は使用禁止。該当期間に pip install した環境は侵害調査と秘密ローテーション2026-03 悪意ある PyPI 公開。公式 Docker image 利用時は影響外と公式説明

ネットワーク・リバースプロキシ必須設定

対策内容
Host ヘッダー検証CDN/WAF/NGINX で server_name 許可リスト。生の LiteLLM をインターネット直公開しない
MCP テストエンドポイント遮断POST /mcp-rest/test/* をエッジでブロック(CVE-2026-42271 表面)
管理 API社内 VPN / Private Link のみ。proxy_admin ルートは IP 制限
秘密のローテーション影響版・公開経路・管理 API 変更有無を確認し、Critical 時は 全プロバイダ API キー をローテーション

JWT 認証を使う場合

enable_jwt_auth: true 時は v1.83.0 以降必須。OIDC userinfo キャッシュは sha256(token) キーに修正済み。JWT 無効時の代替: Phase 1 は Virtual Key のみに限定も可。

出典: LiteLLM Host Header Auth BypassLiteLLM Supply Chain March 2026GHSA-4xpc-pv4p-pm3w


v1.8 — Cloudflare AI Gateway 構築パターン(Pattern S-CF)

LiteLLM 自前ホスト(P1-A/B)に加え、マネージド Edge ゲートウェイ を使う場合のインフラ設計メモ。

トポロジ

[開発者端末 / CI]
        ↓ HTTPS(インターネット or ZTNA)
[gateway.ai.cloudflare.com/v1/{account}/{gateway}/...]
        ↓ CF AIG: 認証 · ログ · レート/Spend · DLP
[Amazon Bedrock bedrock-runtime / 他 BYOK]

構築ステップ(mediba 検証 + 公式の統合)

#作業詳細
1CF アカウント・AI Gateway 作成ログ有効・Authenticated Gateway ON [71][77]
2レート制限PoC は厳しめ(例 3 req/min)で 429 動作確認 [71]
3Spend limits固定/スライディングウィンドウ、provider/model/metadata スコープ [72]
4Bedrock BYOKAPI キー or IAM JSON をプロバイダキーに登録 [75]
5ゲートウェイトークン発行Run 権限。漏洩時は即ローテーション [77]
6DNS / ファイアウォール端末から gateway.ai.cloudflare.com への egress 許可

Bedrock 側のハードニング

項目推奨
BYOK キーBedrock API キー(検証記事)または IAM 最小権限 [71][75]
モデル制限IAM ポリシーで許可モデルを絞る(本番必須)[71]
コスト按分(事後)2026-04〜 IAM principal / session tag を CUR 2.0 で有効化 [78]
リアルタイム停止CF AIG Spend limits がゲートキーパー。CUR は請求確定用

隔離・マルチテナント

要件実装
ゲートウェイごとにトークン分離CF アカウント分離(トークンはアカウントスコープ)[77]
検証済みユーザー属性Cloudflare Access + IdP で JWT から metadata 自動付与(ベータ)[74]
手動 metadatacf-aig-metadata: {"user_id":"...","project_code":"..."} [71]

手動 metadata は honor system。本番では Access 連携または社内発行スクリプトで端末環境変数を配布し、改ざん検知はログ監査で補う。

監視・アラート(CF AIG 利用時)

アラート条件通知先
SpendLimit429429 率が閾値超PM + インフラ
RateLimit429レート制限超過の急増インフラ
AuthFailure401/403 急増セキュリティ
LogExportLagログエクスポート遅延インフラ

AWS 側は Cost Anomaly Detection + 日次 CUR ジョブを併設(第 13 章)。


v1.8.1 — KEEL 向け CF AIG プラン選定表

Phase推奨 CF プラン理由追加契約
PoC(〜30 名)Workers Freeコア機能・10 万ログで足りる [83]なし
本番(〜100 名)Workers PaidLogpush・ログ 1,000 万/GW [82]Bedrock BYOK のみ
高度 DLPWorkers Paid + Cloudflare Zero Trustカスタム DLP プロファイル [82]ZT ライセンス
全社・長期ログEnterprise 見積ログ無制限・カスタム契約 [82]営業

Logpush 最小構成(Workers Paid 時)

  1. AI Gateway ログを Logpush → S3 / R2 / Datadog 等(アカウントあたりジョブ最大 4)[83]
  2. SIEM 取り込みはプロンプトマスキング方針を先に固定(第 7 章)
  3. Free プランでは Logpush 不可 — SIEM 恒久連携=Paid 必須 [82]

研修 — インフラコース D 補助(設定レビュー 15 分)

以下の構成図をレビューし、NG 項目を挙げる:

チェック合格基準
公開経路WAF/Private Link のみ
LiteLLM 版最新 stable / 追補ハードニング系列
秘密Key Vault のみ
ログSIEM 到達 5 分以内

v1.10 付録 — 顧客 AWS 案件向け(エージェント接続パターン)

本パックの Phase 1 標準は Azure + 社内 GW です。顧客環境が AWS の場合、Zenn 記事 の次パターンを参照アーキテクチャとして提案できます。

短命認証(IAM Identity Center / SSO)

# 人間が承認してからエージェント用プロファイルで操作
aws sso login --profile agent-readonly-dev
aws ec2 describe-instances --profile agent-readonly-dev
ポイント理由
セッションに有効期限平文の長期アクセスキーを置かない
ロール削除で失効退職・異動時の消し忘れを構造的に防ぐ
CloudTrail 記録エージェント操作を API イベントとして追跡

読み取り専用から開始し、必要な分だけ権限を足す(フル権限から削る方式は危険)。

シークレット — キー名は「目次」、値は「本体」

比較スプレッドシート共有Secrets Manager 参照
共有されるもの値そのものキー名のみ
アクセス制御シート共有設定IAM ポリシー
監査不明瞭GetSecretValue が CloudTrail に記録
漏洩時値漏洩で終了キー名だけでは不可

Azure 対応: Key Vault シークレット名の露出は同様に許容範囲。は Managed Identity 経由のみ。

DB 接続経路 — SSM Session Manager 一本化

aws ssm start-session \
  --target i-xxxxxxxxxxxx \
  --document-name AWS-StartPortForwardingSessionToRemoteHost \
  --parameters '{"host":["db.internal"],"portNumber":["5432"],"localPortNumber":["15432"]}'
利点内容
インバウンド SSH 不要アタックサーフェス最小化
認証は IAM に集約退職時は IAM から外すだけ
セッション監査誰がいつ DB トンネルを張ったか追跡可能

ネットワーク設計(SG・プライベートサブネット)は別軸。本付録はエージェント統制の一層です。


v1.11 — LiteLLM 権限の交差評価(MCP)

MCP Permission Management では、Key · Team · End User · Agent · Org の 5 段階で権限が交差する。

レベルフィールド例合成ルール
Keyobject_permission.mcp_servers明示リストがあれば採用
Team同上Key と Team 両方にあれば intersection
Org同上ceiling(上限) として効く

ツール粒度: mcp_tool_permissions: {server_id: [tool_name, ...]} はサーバ許可後に さらに intersection

Virtual Key RBAC(要約)

ロール権限
proxy_admin全プラットフォーム管理
org_admin組織配下
internal_user自分のキー CRUD(チーム設定次第)

チームメンバーに /key/generate 等を付与するかは team member permissions で制御(RBAC ドキュメント)。

Phase 2 設計メモ: tool_permission ガードレールで Bash allow + git clean 引数 deny を GW 側に置ける(tool_permission)。IDE ローカル shell は別途クライアント層が必要。

KEEL