Google Cloud × LiteLLM × Claude Codeで実現する安全なコーディングエージェントの提供
はじめに
Claude Codeを開発で利用する際に、「誰がどのモデルをいくら使ったか?」といったモニタリングや予算管理などのガバナンスが求められるケースがあると思います。
Vertex AI Model GardenのClaudeモデルは、IAMでの権限管理やCloud Logging・Cloud Monitoringでのログの管理など優れた機能があります。
しかし現時点ではプロジェクト単位のモデルのコストはわかりますが、開発者個人ごとにいくら使ったかを把握することはできません。
本記事ではLiteLLMというOSSを組み合わせることで、開発者個人ごとのコスト管理を行いつつ、コーディングエージェントを活用した開発環境を提供する方法について紹介します。
想定読者
- Claude Codeなどのコーディングエージェントを安全に開発チームに使わせたいと思っている人
- コーディングエージェントの監査性をできるだけ簡単に担保したいと思っている人
LiteLLMとは
LiteLLMは複数の大規模言語モデル(OpenAI, Anthropicなど)を統一的なAPIで利用できるオープンソースライブラリです。たとえば、OpenAI向けに書いたコードをClaudeなどの別のモデルで動かしたいときにも、コードをほとんど修正せずに流用できます。
さらにLiteLLMは、LLMの推論エンドポイントの手前でAPI Gatewayのように動作する機能があります。モデルへの入出力のロギング、ユーザーごとのトークン消費量の管理、コスト計算といった運用管理機能を備えています。
この記事では後者の目的でLiteLLMを利用しています。
アーキテクチャ構成
LiteLLM ProxyサーバをCloud Runでホストし、Cloud SQL for PostgreSQLインスタンスにデータを保存します。
クライアントはCloud ShellからCloud Runプロキシを経由して、IAMで保護されたLiteLLM Proxyサーバに安全にアクセスすることができます。
実装
-
Vertex AI Model GardenからClaudeモデルを有効化する
今回は簡易化のためにclaude-sonnet-4
モデルだけを有効化しました。 -
Cloud SQL for PostgreSQLインスタンスを作成する
下図の構成でインスタンスを作成しました。
-
LiteLLM用のPostgreSQLユーザとデータベースを作成する
- コンソールから「ユーザ」タブを選択し、ユーザ
litellm-user
を作成します。 - コンソールから「データベース」タブを選択し、データベース
litellm-db
を作成します。
- コンソールから「ユーザ」タブを選択し、ユーザ
-
作成したユーザにデータベースの権限を付与する
- コンソールから「Cloud SQL Studio」タブを選択し、デフォルトのPostgreSQLユーザーでログインします。
- 下記のクエリを実行して権限を付与します。
GRANT ALL PRIVILEGES ON DATABASE "litellm-db" TO "litellm-user";
- コンソールから「Cloud SQL Studio」タブを選択し、デフォルトのPostgreSQLユーザーでログインします。
-
Artifact RegistryにGitHub Container Registry用のリモートリポジトリを作成する
LiteLLM公式のDockerイメージはGitHub Container Registry(ghcr.io
)で提供されていますが、Cloud RunではGitHub Container RegistryのDockerイメージを直接指定することができません。
そこで今回はArtifact Registryのリモートリポジトリを使用して、Artifact Registryリポジトリ経由でghcr.io
のDockerイメージを利用できるようにします。[1]
-
LiteLLMの設定ファイル
config.yaml
を作成する
下記のようなyamlファイルを作成します。model_list: # 利用するモデルの情報を記述する - model_name: anthropic/claude-sonnet-4 litellm_params: model: vertex_ai/claude-sonnet-4@20250514 vertex_ai_location: "us-east5" vertex_ai_project: <プロジェクトID> litellm_settings: telemetry: false set_verbose: false json_logs: true drop_params: true num_retries: 3 request_timeout: 15 general_settings: store_model_in_db: true store_prompts_in_spend_logs: true master_key: <マスターキー(sk-から始まる文字列)> database_url: <Cloud SQL接続用文字列>
作成した設定ファイルをシークレットマネージャーに登録します。
-
LiteLLM用のサービスアカウントを作成する
サービスアカウントに必要な権限を付与します。
シークレットマネージャーの画面に移動し、先ほど作成したシークレットに対して「Secret Manager の シークレットアクセサ」権限を付与します。
-
LiteLLM Proxy(Cloud Run)を作成する
コンテナイメージのURLは「<作成したリモートリポジトリのURL>/berriai/litellm:main-stable」のように設定します。こうすることでLiteLLM公式提供イメージghcr.io/berriai/litellm:main-stable
をリモートリポジトリ経由で利用することができます。
その他の設定は下記のようにしてCloud Runをデプロイします。設定項目 値 認証 認証が必要/dentity and Access Management(IAM) ポート番号 4000
コンテナの引数 --port 4000 --config /app/config/config.yaml
セキュリティ - サービスアカウント: 作成したサービスアカウント ボリューム - ボリュームのタイプ: シークレット
- シークレット: 作成したシークレット名
- パス1:config.yaml
バージョン1:latest
コンテナ - ボリュームのマウント: マウントパス= /app/config
Cloud SQL 接続 <プロジェクトID>:<リージョン>:<インスタンス名> -
Cloud ShellからLiteLLMにCloud Runプロキシ経由でアクセスする
Cloud Shellを開き、次のコマンドでCloud Runプロキシを実行します。gcloud run services proxy <Cloud Runサービス名> --port=4000 --region=asia-northeast1
Cloud Shellの左上のプレビューボタンからポートを4000に変更してプレビューを表示します。
次のような画面が見えていればLiteLLMは正常に起動しています。
-
LiteLLMのユーザとAPIキーを作成する
LiteLLMのユーザはAPIで簡単に作成することができます。curl -X POST "http://localhost:4000/user/new" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <マスターキー>" \ -d '{ "username": "new_user", "email": "new_user@example.com" }'
このリクエストのレスポンスから、作成したユーザのAPIキーを取得することができます。
{"key_alias":null,...."key":"sk-****",....}
-
Cloud ShellからLiteLLM経由でClaude Codeを使用する
Claude Codeの環境変数を設定します。
構成を簡単にするためにclaude-sonnet-4のみを有効化しているので、Claude Codeで使用するモデルもclaude-sonnet-4のみにしています。export ANTHROPIC_AUTH_TOKEN=<作成したLiteLLMユーザのAPIキー> export ANTHROPIC_BASE_URL=http://127.0.0.1:4000 export ANTHROPIC_MODEL=vertex_ai/claude-sonnet-4@20250514 export ANTHROPIC_SMALL_FAST_MODEL=vertex_ai/claude-sonnet-4@20250514
次にClaude Codeをインストールして実行します。
npm install @anthropic-ai/claude-code npx claude
最後にClaude Codeを使ってスクリプト生成を試してみます。
無事、LiteLLM経由のClaudeモデルでClaude Codeを利用することができました。
おわりに
Cloud RunとCloud SQLを用いることで、簡単にClaude Codeを利用できる環境を提供することができました。
またこの構成では、Cloud Shellは無料で、Cloud Runはゼロスケールインでき、常時課金対象となるのはCloud SQLだけです。またCloud SQLも使っていないときはインスタンスを停止させれば非常に少ないコストで利用できます。
気軽に試しやすい構成を意識して紹介しました。どなたかの参考になれば幸いです。
-
構成を簡単にするためにDockerイメージはLiteLLM公式提供のものを使用しましたが、企業のセキュリティ要件によって独自にビルドする必要がある場合があります。 ↩︎

NTT DATA公式アカウントです。 技術を愛するNTT DATAの技術者が、気軽に楽しく発信していきます。 当社のサービスなどについてのお問い合わせは、 お問い合わせフォーム nttdata.com/jp/ja/contact-us/ へお願いします。