Google Antigravity のエンタープライズ ゲートウェイを構成する

このドキュメントでは、管理者とセキュリティ アーキテクト向けに、Google Antigravity のエンタープライズ ゲートウェイをデプロイして構成する方法について説明します。

規制対象の業界の企業組織では、デベロッパー ワークステーションが外部サービスに直接インターネット接続したり、インタラクティブなブラウザベースの Google ログインを完了したりできないように、厳格なネットワーク制御を維持していることがよくあります。

Antigravity Enterprise Gateway を使用すると、推論リクエストを Google に転送する前に、組織が運用するエンタープライズ ゲートウェイを介して Antigravity トラフィックをルーティングできます。このアーキテクチャでは、モデル推論リクエストがゲートウェイを介してルーティングされ、インタラクティブなログインが不要になります。また、Gemini Enterprise 契約の請求属性は保持されます。

概要

Antigravity Enterprise Gateway を構成すると、デベロッパー ワークステーションは Google に直接接続するのではなく、エンタープライズ ゲートウェイと通信します。デベロッパーは、ゲートウェイが発行する API キーを使用してゲートウェイで認証するため、Antigravity は個々の Google アカウントへのログインを求めません。ゲートウェイは、一元化されたGoogle Cloud サービス アカウントを使用して、Antigravity リクエストを認証し、Google に転送します。

Antigravity は、クライアント属性ヘッダーを自動的に追加して、デベロッパー チャット プロンプトと Agentic Workflows を識別します。このモデルの使用が、コミットされていない未加工の API 使用量として課金されるのではなく、組織の既存の Gemini Enterprise 契約に基づいて認識され、課金されるようにするには、ゲートウェイでこれらの Antigravity ヘッダーを保持して Google に転送する必要があります。

  • User-Agent: Antigravity は、識別ヘッダーを自動的に出力します。

    User-Agent: antigravity/VERSION (aidev_client; auth_method=gateway)
    
  • X-Goog-Api-Client: Antigravity クライアント ランタイムと SDK テレメトリーを識別して、Google がライセンスを取得したエンタープライズ デプロイにアクティビティをクレジットします。

サポートされているツールとバージョン

Antigravity Enterprise Gateway は、次の AI デベロッパー ツールをサポートしています。

ツール 最小バージョン 対応プラットフォーム
Antigravity アプリ
  • 2.15.0 以降
macOS、Windows、Linux
Antigravity CLI(agy)
  • 1.2.15 以降
macOS と Linux
IDE 向け Antigravity
  • Visual Studio Code と Visual Studio: Antigravity CLI 1.2.15 以降。拡張機能によって自動的にダウンロードされ、更新されます。
  • JetBrains IDE と Zed(ACP サーバーを使用): 1.3.0 以降
Visual Studio Code、Visual Studio、JetBrains IDE、Zed。詳細については、Antigravity IDE 拡張機能をご覧ください。

始める前に

ゲートウェイをデプロイする前に、次のものが揃っていることを確認してください。

  • Google Cloud プロジェクト: Gemini Enterprise Agent Platform(旧称: Vertex AI)にアクセスでき、Gemini Enterprise Agent Platform API(aiplatform.googleapis.com)が有効になっている Google Cloud プロジェクト。エンタープライズ ゲートウェイをデプロイするために、請求書発行用の Cloud 請求先アカウントは必要ありません。Gemini Enterprise Agent Platform にアクセスできるユーザーは、誰でもゲートウェイを使用できます。
  • サービス アカウント: roles/aiplatform.user IAM ロールが付与されているプロジェクトの Google Cloud サービス アカウント。ゲートウェイは、このサービス アカウントを使用して、 Google Cloudへの Antigravity リクエストを認証します。
  • データアクセス監査ログ: Cloud Logging で請求の帰属を確認するには、Gemini Enterprise Agent Platform API のデータアクセス監査ログを有効にします。詳しくは、データアクセス監査ログを有効にするをご覧ください。
  • サポートされているクライアント バージョン: デベロッパーは、各 Antigravity ツールのサポートされているバージョンを使用する必要があります。詳細については、サポートされている Antigravity ツールをご覧ください。

エンタープライズ ゲートウェイをデプロイする

エンタープライズ ゲートウェイは、Cloud Run、Envoy、LiteLLM、Apigee などのコンテナ化されたプラットフォームまたはマネージド プラットフォームを使用してホストできます。

ゲートウェイは、次の 3 つのインフラストラクチャ要件を満たす必要があります。

  1. クライアント アトリビューション ヘッダーを保持する: 受信したクライアント ヘッダー(User-Agent、X-Goog-Api-Client、gateway.customHeaders で構成されたカスタム ヘッダー(X-Cost-Center など))をそのまま Google に転送します。

    Antigravity クライアントは、ゲートウェイ モードで Google Cloud プロジェクト情報を送信しません。ゲートウェイが、ゲートウェイのサービス アカウントを含むプロジェクト以外のプロジェクトにリクエストを転送する場合は、課金と割り当ての帰属のために、ターゲット プロジェクト ID を含む X-Goog-User-Project ヘッダーを挿入するようにゲートウェイを構成します。

  2. バッファなしストリーミングをサポートする: ストリーミング リクエスト(:streamGenerateContent?alt=sse)を処理するときに、サーバー送信イベント(SSE)チャンクをすぐにフラッシュします。ゲートウェイ レイヤでチャンクをバッファリングしないでください。

  3. テレメトリー エンドポイントを確認する: バックグラウンド指標呼び出し(POST /v1beta:*)に HTTP 200 OK({})で応答するか、セキュリティ情報およびイベント管理(SIEM)システムに転送します。

必須のリクエストパス

ゲートウェイは、次の推論パスをルーティングする必要があります。パスは、ゲートウェイ URL からの相対パスです。たとえば、https://gateway.cymbal.com へのストリーミング リクエストでは https://gateway.cymbal.com/v1beta/models/MODEL_ID:streamGenerateContent?alt=sse が使用されます。

  • ストリーミング推論: POST /v1beta/models/MODEL_ID:streamGenerateContent?alt=sse
  • 単項推論: POST /v1beta/models/MODEL_ID:generateContent

ゲートウェイは、同等の完全な Gemini Enterprise Agent Platform パスも受け入れる必要があります。

  • ストリーミング推論: POST /v1beta1/projects/PROJECT_ID/locations/REGION/publishers/google/models/MODEL_ID:streamGenerateContent?alt=sse
  • 単項推論: POST /v1beta1/projects/PROJECT_ID/locations/REGION/publishers/google/models/MODEL_ID:generateContent

リクエスト本文では、標準の generateContent JSON スキーマ(contents、generationConfig、safetySettings、systemInstruction)を使用します。

サポートされているワイヤ プロトコル

Antigravity Enterprise Gateway は、推論リクエストに対して 2 つのワイヤ プロトコルをサポートしています。

  • Gemini プロトコル(genai): デフォルトのワイヤ プロトコル。Antigravity は、Google の generateContent スキーマでフォーマットされた推論リクエストを、前述の POST /v1beta/models/... エンドポイントに送信します。
  • OpenAI ワイヤ プロトコル(openai): gateway.wireProtocol を openai に設定する(または AGY_LLM_GATEWAY_WIRE_PROTOCOL=openai を設定する)と、Antigravity は推論リクエストを OpenAI Chat Completions プロトコルでフォーマットし、POST /v1/chat/completions に送信します。

ゲートウェイへのリクエストを認証する

Antigravity は、ゲートウェイが発行する API キーを使用してゲートウェイを認証します。Antigravity は、gateway.apiKey(または AGY_LLM_GATEWAY_API_KEY 環境変数)の鍵を Authorization ヘッダーの署名なしトークンとして送信します。

Authorization: Bearer GATEWAY_API_KEY

Antigravity は、デベロッパーに代わって Google Cloud 認証情報、OAuth トークン、クライアント証明書を取得しません。ゲートウェイは、すべてのリクエストを認証し、有効なキーを提示しないリクエストを拒否する必要があります。

API キーはデベロッパーのワークステーションに保存されるため、ネットワーク レベルの制御と組み合わせます。

  • ゲートウェイを非公開にする: ゲートウェイを企業ネットワークでのみ公開します。たとえば、ワークステーションが Cloud VPN または Cloud Interconnect 経由でアクセスする内部アプリケーション ロードバランサを介して公開します。ゲートウェイにパブリック エンドポイントを付与しないでください。
  • 接続できるデバイスを制限する: ファイアウォール ルール、ゼロトラスト ネットワーク アクセス プロキシ、デバイス ポスチャー チェックなどを使用して、マネージド ワークステーションからの接続のみを許可します。
  • 鍵を保護してローテーションする: 鍵を Secret Manager に保存し、リクエストごとに検証して、定期的にローテーションします。個々のデベロッパーに使用状況を関連付けるには、デベロッパーごとに個別のキーを発行します。

詳細については、セキュリティに関する考慮事項をご覧ください。

ゲートウェイを Gemini Enterprise Agent Platform に接続する

ゲートウェイは、 Google Cloud サービス アカウントを使用して Gemini Enterprise Agent Platform API を呼び出します。ゲートウェイは、Apigee などのマネージド API ゲートウェイに構築することも、Envoy や LiteLLM などのゲートウェイを独自のインフラストラクチャにデプロイすることもできます。

  1. 必要な API を有効にします。

    gcloud services enable \
      aiplatform.googleapis.com \
      secretmanager.googleapis.com \
      --project=PROJECT_ID
    

    PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

  2. ゲートウェイのサービス アカウントを作成し、roles/aiplatform.user ロールを付与します。

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --project=PROJECT_ID \
      --display-name="Antigravity Enterprise Gateway"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/aiplatform.user"
    

    SERVICE_ACCOUNT_NAME は、サービス アカウントの名前(agy-gateway-sa など)に置き換えます。

  3. ゲートウェイ API キーを生成して Secret Manager に保存し、サービス アカウントが読み取れるようにします。

    openssl rand -base64 32 | tr -d '\n' | gcloud secrets create SECRET_NAME \
      --project=PROJECT_ID \
      --data-file=-
    
    gcloud secrets add-iam-policy-binding SECRET_NAME \
      --project=PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/secretmanager.secretAccessor"
    

    SECRET_NAME は、agy-gateway-api-key などの Secret の名前に置き換えます。この鍵を admin_settings.json の gateway.apiKey としてワークステーションに配布します。

  4. 次の処理を行うようにゲートウェイを構成します。

    • サービス アカウントとして Gemini Enterprise Agent Platform に対する認証を行います。
    • Secret Manager から API キーを読み取り、API キーが提示されていないリクエストを拒否します。
    • 長いストリーミング レスポンスが中断されないように、リクエストを 60 分以上実行できるようにします。

ワークステーションを構成する前にゲートウェイが機能することを確認するには、ゲートウェイを直接テストするをご覧ください。

MDM を使用して設定をデプロイする

デベロッパー ワークステーションを一元的に構成するには、Jamf、Microsoft Intune、Ansible、Google Workspace MDM などのモバイル デバイス管理(MDM)システムを使用して admin_settings.json 構成ファイルをデプロイします。

Antigravity は、次のオペレーティング システムのパスから admin_settings.json を読み取ります。

  • macOS: /Library/Application Support/Antigravity/admin_settings.json
  • Linux: /etc/antigravity/admin_settings.json
  • Windows: %ProgramData%\Antigravity\admin_settings.json

設定ファイルをデプロイする手順は次のとおりです。

  1. ゲートウェイ URL、API キー、承認済みモデルを含む admin_settings.json ファイルを作成します。例については、構成例をご覧ください。
  2. MDM システムで、各ターゲット オペレーティング システムのパスにファイルをコピーするパッケージ、ポリシー、またはスクリプトを作成します。管理者権限で実行すると、ファイルは管理者アカウントによって所有され、デベロッパーは読み取りはできますが、変更はできません。たとえば、MDM スクリプトで次のコマンドを実行できます。

    macOS

    シェルで、管理者として次のコマンドを実行します。

    sudo mkdir -p "/Library/Application Support/Antigravity"
    sudo install -m 644 -o root -g wheel admin_settings.json \
    "/Library/Application Support/Antigravity/admin_settings.json"

    Linux

    シェルで、管理者として次のコマンドを実行します。

    sudo install -D -m 644 -o root -g root admin_settings.json \
    /etc/antigravity/admin_settings.json

    Windows

    PowerShell で管理者として次のコマンドを実行します。

    $dir = Join-Path $env:ProgramData "Antigravity"
    # Remove any folder that a non-admin created first, so they can't keep ownership.
    if (Test-Path $dir) { Remove-Item -Recurse -Force $dir }
    New-Item -ItemType Directory -Path $dir | Out-Null
    # Administrators own the folder; only admins and SYSTEM can write; users can read.
    icacls $dir /setowner "*S-1-5-32-544"
    icacls $dir /inheritance:r /grant:r "*S-1-5-32-544:(OI)(CI)F" "*S-1-5-18:(OI)(CI)F" "*S-1-5-32-545:(OI)(CI)RX"
    Copy-Item admin_settings.json (Join-Path $dir "admin_settings.json")

    これらのコマンドにより、フォルダとファイルはすべてのユーザーが読み取り可能になり、管理者のみが書き込み可能になります。

  3. Antigravity を使用するデバイスまたはデバイス グループにパッケージまたはポリシーを割り当てます。

  4. ワークステーションで Antigravity を再起動して、新しい設定を読み込みます。

  5. ワークステーションがゲートウェイに接続していることを確認するには、クライアント接続を確認するをご覧ください。

設定の優先順位

Antigravity は、3 つのソースからゲートウェイ設定を読み取ります。同じ設定が複数のソースで定義されている場合、優先順位の高いソースが優先されます。

  1. 管理者設定ファイル(最高): MDM システムによってデプロイされた admin_settings.json。
  2. 環境変数: ワークステーションに設定された AGY_LLM_GATEWAY_* 変数。詳細については、Antigravity を Enterprise Gateway に接続するをご覧ください。
  3. ユーザー設定ファイル(最も低い): デベロッパーのホームフォルダ内の ~/.antigravity/settings.json。

設定はフィールドごとに統合されます。たとえば、admin_settings.json がゲートウェイ URL を設定し、API キーを設定しない場合、Antigravity は環境変数から API キーを使用します。管理者設定ファイルの優先度が最も高いため、デベロッパーは、このファイルで設定した値をオーバーライドできません。

構成の例

次の admin_settings.json ファイルの例では、https://gateway.cymbal.com のエンタープライズ ゲートウェイを介して AI トラフィックをルーティングするように Antigravity を構成し、企業のコストセンター ヘッダーを添付して、モデルの選択を承認済みのモデルに制限しています。

{
  "gateway": {
    "enabled": true,
    "url": "https://gateway.cymbal.com",
    "apiKey": "GATEWAY_API_KEY",
    "wireProtocol": "genai",
    "customHeaders": {
      "X-Cost-Center": "Platform-Engineering",
      "X-Corporate-BU": "DevTools"
    }
  },
  "caCertPath": "/etc/ssl/certs/cymbal-root-ca.pem",
  "models": {
    "defaultModelId": "gemini-3.8-flash",
    "list": [
      { "modelId": "gemini-3.8-flash" },
      { "modelId": "gemini-3.7-flash" },
      { "modelId": "gemini-3.1-pro-preview" }
    ]
  }
}

この構成例では、次の設定を定義します。

  • gateway.enabled: ゲートウェイ ルーティング モードを有効にします。true に設定すると、Antigravity はすべての推論リクエストを Google に直接送信するのではなく、ゲートウェイに送信します。また、デベロッパーに Google アカウントでのログインを求めることはありません。
  • gateway.url: エンタープライズ ゲートウェイの HTTPS エンドポイント(https://gateway.cymbal.com)。
  • gateway.apiKey: ゲートウェイがリクエストを承認するために必要な API キー(GATEWAY_API_KEY)。この鍵は Google ではなく、ゲートウェイが発行します。Antigravity は、Authorization ヘッダーで署名なしトークンとして送信します。
  • gateway.wireProtocol: API ワイヤ プロトコル。サポートされている値は次のとおりです。

    • genai(デフォルト): Gemini API プロトコル(POST /v1beta/models/...)を使用します。
    • openai: OpenAI Chat Completions ワイヤ プロトコル(POST /v1/chat/completions)を使用します。
  • gateway.customHeaders: Antigravity が各リクエストに追加するカスタム HTTP ヘッダー(X-Cost-Center と X-Corporate-BU)。これらのヘッダーを使用して、ゲートウェイ ログまたは SIEM で使用状況をチームまたはコストセンターに関連付けます。

  • caCertPath: 企業のルート認証局(CA)バンドルの絶対パス。この設定により、ワークステーションはゲートウェイの内部 TLS 証明書を信頼します。

  • models.defaultModelId: Antigravity がデフォルトで選択するモデル(gemini-3.8-flash など)。

  • models.list: デベロッパーが Antigravity で選択できる承認済みモデル。各エントリには、ゲートウェイによって提供されるモデル提供と一致する modelId が必要です。サポートされている Google モデルの一覧については、サポートされているモデルをご覧ください。

セキュリティ上の考慮事項

ゲートウェイの認証とアトリビューションを計画する際は、次の点を考慮してください。

  • クライアントから提供されたヘッダーは信頼できない: デベロッパーは独自のワークステーションを制御するため、環境変数(AGY_LLM_GATEWAY_HEADERS)またはユーザー設定ファイルで設定されたヘッダーを変更できます。セキュリティ上重要な監査ロギングや課金属性に、これらのヘッダーを使用しないでください。
  • MDM を使用してヘッダーを固定する: デベロッパーがアトリビューション ヘッダーやポリシー ヘッダーをオーバーライドできないようにするには、admin_settings.json の gateway.customHeaders で定義します。admin_settings.json の値は、環境変数やユーザー設定よりも優先されます。
  • ネットワーク層またはトランスポート層で認証する: デベロッパーの ID を検証する場合や、厳格なコストセンター属性を適用する場合は、相互 TLS(mTLS)、プロキシレベルのシングル サインオン(SSO)、ネットワーク マイクロセグメンテーションなどを使用して、ネットワーク層またはトランスポート層でトラフィックを認証します。API キーや HTTP ヘッダーのみに依存しないでください。

デプロイを確認する

構成ファイルをデベロッパー ワークステーションにデプロイする前に、エンタープライズ ゲートウェイがトラフィックを正しくルーティングし、アトリビューション情報が Cloud Logging に到達することを確認します。

ゲートウェイを直接テストする

デベロッパー ワークステーションでテストする前に、curl を使用してエンタープライズ ゲートウェイ エンドポイントを直接テストします。ゲートウェイを直接テストすることで、ネットワーク ルーティング、TLS 証明書の検証、認証、バッファなしの Server-Sent Events(SSE)ストリーミングが Antigravity とは独立して動作することを確認できます。

次の curl コマンドの例では、ストリーミング リクエストをゲートウェイ エンドポイントに直接送信します。

curl -N -X POST "https://gateway.cymbal.com/v1beta/models/MODEL_ID:streamGenerateContent?alt=sse" \
  -H "Authorization: Bearer GATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "User-Agent: antigravity/1.2.15 (aidev_client; auth_method=gateway)" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Reply with PONG"}]}]}'

コマンドの内容:

  • -N: curl でレスポンス バッファリングをオフにして、サーバー送信イベント(SSE)がすぐにストリーミングされるようにします。
  • MODEL_ID: models.list の承認済みモデル(gemini-3.8-flash や gemini-3.7-flash など)。初期検証には Flash モデルでテストすることをおすすめします。使用可能なモデルの一覧については、サポートされているモデルをご覧ください。
  • Authorization: ゲートウェイ API キー(GATEWAY_API_KEY)を送信して、ゲートウェイでリクエストを認証します。
  • User-Agent: Google が Gemini Enterprise 契約に使用状況を関連付けるために使用するクライアント アトリビューション文字列を送信します。
  • streamGenerateContent?alt=sse: 指定されたモデルのストリーミング API エンドポイントを呼び出します。

ゲートウェイがレスポンス チャンクをすぐにストリーミングすることを確認します。接続エラー、証明書の警告、レスポンス バッファリングの遅延が発生した場合は、トラブルシューティングをご覧ください。

クライアント接続を確認する

構成済みのワークステーションでクライアントのステータスを確認します。

  • Antigravity アプリ: 下部のステータスバーで、インジケーターに「接続済み: Enterprise Gateway」と表示されていることを確認します。[アカウント設定] で、[Enterprise Gateway Mode Active] が表示されていることを確認します。
  • Antigravity CLI: テスト プロンプトを実行します。

    agy -p "Explain binary search in Go"
    

    このコマンドは、テスト プロンプトをゲートウェイに送信します。インタラクティブな Google ログイン プロンプトが表示されずに、レスポンスがターミナルにストリーミングされることを確認します。クライアントが接続に失敗した場合、または Google 認証を求めるメッセージが表示された場合は、トラブルシューティングをご覧ください。

Cloud Logging でアトリビューションを確認する

Google Cloud コンソールで、アトリビューション ヘッダーが受信されていることを確認します。

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. 次のクエリを実行します。

    resource.type="aiplatform.googleapis.com/Endpoint" OR
    protoPayload.serviceName="aiplatform.googleapis.com"
    
  3. ログエントリのメタデータを検査します。protoPayload.requestMetadata.callerSuppliedUserAgent に antigravity/VERSION (aidev_client; auth_method=gateway) が含まれていることを確認します。

ログエントリが表示されない場合は、Gemini Enterprise Agent Platform API でデータアクセスの監査ログが有効になっていることを確認します。

デベロッパーをオンボーディングする

ゲートウェイを確認したら、デベロッパーが Antigravity を使用できるように準備します。

  • マネージド ワークステーション: MDM システムを使用して admin_settings.json をデプロイする場合、デベロッパーは構成を行う必要はありません。Antigravity は、起動時にゲートウェイに自動的に接続します。
  • サンドボックスと CI/CD パイプライン: コンテナ化されたランナー、リモート SSH ホスト、または非マネージド開発環境で作業するデベロッパーには、ゲートウェイ URL、API キー、ルート CA パスを提供します。デベロッパーに Antigravity を Enterprise Gateway に接続するを案内します。

トラブルシューティング

次の表に、一般的なデプロイの問題とその解決方法を示します。

症状 原因 解決策
x509: certificate signed by unknown authority ワークステーションがゲートウェイの TLS 証明書を信頼していない。 admin_settings.json の caCertPath を使用して、企業のルート CA バンドルのパスを指定します。
401 Unauthorized または 403 Forbidden API キーが無効であるか、ゲートウェイ サービス アカウントにアクセス権がありません。 gateway.apiKey の値を確認し、ゲートウェイ サービス アカウントにターゲット プロジェクトの roles/aiplatform.user IAM ロールがあることを確認します。
404 Not Found リクエストされたモデルがエンタープライズ ゲートウェイで使用できないか、モデル ID の入力ミスがあります。 admin_settings.json の models.list で構成された各モデル ID が、エンタープライズ ゲートウェイが提供するモデル名と一致していることを確認します。
gateway.wireProtocol 'openai' is not supported by the ACP server admin_settings.json または環境変数で、ACP サーバーがサポートしていない openai ワイヤ プロトコルが指定されている。 JetBrains IDE と Zed ワークステーションの場合は、wireProtocol を genai に設定します(または、デフォルトを使用する場合は省略します)。
ストリーミング レスポンスがタイムアウトする ゲートウェイが HTTP レスポンスをバッファリングしています。 サーバー送信イベント(text/event-stream)のレスポンス バッファリングをオフにするようにゲートウェイを構成します。
Antigravity が Google ログインを求める ゲートウェイ モードがオンになっていないか、Antigravity が設定ファイルを見つけられません。 admin_settings.json が正しいオペレーティング システムのパスにデプロイされ、gateway セクションに "enabled": true と url が含まれていることを確認します。

次のステップ