Agent Runtime トラフィックを Agent Gateway 経由で転送する

このページでは、Agent Runtime トラフィックを Agent Gateway 経由でルーティングする方法について説明します。Agent Gateway は、Gemini Enterprise Agent Platform エコシステムの中心的なネットワーキング コンポーネントとセキュリティ コンポーネントです。 ユーザーとエージェント間、エージェントとツール間、エージェント間のいずれのやり取りでも、すべてのエージェントのやり取りに対して安全で管理された接続を提供します。

始める前に

  • Agent Runtime にエージェントをデプロイする方法を 理解しておいてください

  • Agent Gateway について学習します。 . Agent Gateway をエージェントから任意の宛先へ(下り(外向き))モードで使用すると、ツール、モデル、API、他のエージェントへの下り(外向き)トラフィックとのすべての下り(外向き)通信を保護し、管理できます。クライアントからエージェントへ(上り(内向き))モードでゲートウェイを使用すると、エージェントにアクセスできるクライアントを制御できます。ゲートウェイを使用すると、これらのやり取りに適用する必要がある IAP ポリシーと Model Armor テンプレートを選択できます。

    単一の Runtime インスタンスは、エージェントから任意の宛先へ(下り(外向き))ゲートウェイとクライアントからエージェントへ(上り(内向き))ゲートウェイの両方に同時にバインドできます。

制限事項

  • Agent Gateway は、2026 年 4 月 29 日より前に作成された Runtime 推論エンジンにバインドできません。
  • 単一のプロジェクトとリージョンで複数のエージェントから任意の宛先へ(下り(外向き))とクライアントからエージェントへ(上り(内向き))の Agent Gateway インスタンスをホストできますが、同じプロジェクトとリージョン内にデプロイされたすべての Agent Runtime エージェントは、同じ特定の下り(外向き)と上り(内向き)の Agent Gateway インスタンスにバインドする必要があります。

    たとえば、プロジェクトとリージョンに egress-gateway-Xegress-gateway-Y が含まれている場合、そのプロジェクトとリージョン内のすべてのエージェントは、下り(外向き)に同じゲートウェイを使用するように構成する必要があります。つまり、すべてのエージェントが egress-gateway-X を使用するか、すべてのエージェントが egress-gateway-Y を使用します。agent-Aegress-gateway-X を使用し、agent-Begress-gateway-Y を使用するように構成することはできません。

    この同じバインディング ルールは、プロジェクトとリージョン内の上り(内向き)ゲートウェイにも適用されます。

  • エージェントで Agent Gateway が有効になっている場合、Security Command Center Agent Engine Threat Detection サービス は使用できません。

  • クライアントからエージェントへ(上り(内向き))モードでは、Agent Gateway は Agent Runtime の query メソッドと streamQuery メソッドのみを管理できます。サポートされていない他のメソッド(asyncQuery など)を保護するには、アプリケーションまたはエージェントから Model Armor テンプレートを直接適用します。プロンプトと レスポンスのサニタイズまたは Model Armor を使用して安全なエージェント システムを構築する の Codelab をご覧ください。

Agent Runtime トラフィックを Agent Gateway 経由でルーティングする

Agent Runtime トラフィックを Agent Gateway 経由でルーティングする手順は次のとおりです。

  1. Agent Gateway リソースを作成し、必要に応じて承認ポリシーをアタッチします。ゲートウェイは、エージェントから任意の宛先へ(下り(外向き))モードまたはクライアントからエージェントへ(上り(内向き))モードで作成できます。エージェントとゲートウェイは、同じプロジェクトとリージョンに作成する必要があります。手順については、Agent Gateway を設定するをご覧ください。

    ゲートウェイがデプロイのニーズを満たすように構成されていることを確認します。たとえば、エージェントに LLM アクセスが必要な場合は、このアクセスを許可するようにゲートウェイを構成して、Agent Runtime のデプロイの失敗を防ぎます。

  2. Agent Gateway 経由でトラフィックをルーティングするようにエージェントを構成します。

    • 新しいエージェントの場合

      エージェントのデプロイ時にゲートウェイ リソースを指定します。たとえば、エージェントを Agent Runtime にデプロイするには、client.agent_engines.create を使用して、local_agent オブジェクトと任意の 構成を渡します。

      このエージェントで Model ArmorSemantic Governance Policies などのゲートウェイを介したプラットフォーム機能を使用する場合は、この例に示すように、作成呼び出しでagent_gateway_configidentity_type=AGENT_IDENTITY の両方を設定します。identity_type=AGENT_IDENTITY がないと、Runtime インスタンスの effectiveIdentity はデフォルトの Vertex AI サービス アカウントにフォールバックし、Semantic Governance Policies はポリシー作成セレクタからエージェントをサイレントにフィルタします。

      remote_agent = client.agent_engines.create(
        agent=local_agent,
        config={
            "agent_gateway_config": {
              "agent_to_anywhere_config": {"agent_gateway": projects/PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_TO_ANYWHERE_NAME},
              # "client_to_agent_config": {"agent_gateway": projects/PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_CLIENT_TO_AGENT_NAME}
            },
            "identity_type": types.IdentityType.AGENT_IDENTITY,
            # Other optional configuration ...
            # "requirements": requirements,
            # "gcs_dir_name": gcs_dir_name,
            # https://docs.cloud.google.com/gemini-enterprise-agent-platform/scale/runtime/agent-identity#opt-out-caa
            "env_vars": {
              "GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES": False,
            }
        },
      )

      AGENT_GATEWAY_TO_ANYWHERE_NAME は、エージェントから任意の宛先へ(下り(外向き))モードで作成した Agent Gateway の名前に置き換えます。

      クライアントからエージェントへ(上り(内向き))モードでゲートウェイを作成した場合は、代わりに client_to_agent_config フィールドを使用し、AGENT_GATEWAY_CLIENT_TO_AGENT_NAME を上り(内向き)用に作成した Agent Gateway の名前に置き換えます。

    • 既存のエージェントの場合

      エージェントから任意の宛先へ

      次の REST API リクエストを使用して、既存のエージェントを下り(外向き)のエージェントから任意の宛先へゲートウェイ に関連付けます。

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d '{
        "spec": {
          "deploymentSpec": {
            "agentGatewayConfig": {
              "agentToAnywhereConfig": {
                "agentGateway": "projects/PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_TO_ANYWHERE_NAME"
              }
            }
          }
        }
      }' \
      "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID?updateMask=spec.deploymentSpec.agentGatewayConfig"

      次のように置き換えます。

      • PROJECT_ID: プロジェクト ID
      • REGION: エージェントがデプロイされているリージョン
      • AGENT_GATEWAY_TO_ANYWHERE_NAME: エージェントから任意の宛先へ(下り(外向き))モードで作成した Agent Gateway の名前
      • RESOURCE_ID: エージェントのリソース ID

      クライアントからエージェントへ

      次の REST API リクエストを使用して、既存のエージェントを上り(内向き)のクライアントからエージェントへゲートウェイ に関連付けます。

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d '{
        "spec": {
          "deploymentSpec": {
            "agentGatewayConfig": {
              "clientToAgentConfig": {
                "agentGateway": "projects/PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_CLIENT_TO_AGENT_NAME"
              }
            }
          }
        }
      }' \
      "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID?updateMask=spec.deploymentSpec.agentGatewayConfig"

      次のように置き換えます。

      • PROJECT_ID: プロジェクト ID
      • REGION: エージェントがデプロイされているリージョン
      • AGENT_GATEWAY_CLIENT_TO_AGENT_NAME: クライアントからエージェントへ(上り(内向き))で作成した Agent Gateway の名前
      • RESOURCE_ID: エージェントのリソース ID
  3. エージェントとゲートウェイと同じプロジェクトとリージョンにある Agent Registry インスタンスに登録します。

    gcloud agent-registry services create SERVICE_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --display-name="DISPLAY_NAME" \
      --endpoint-spec-type=no-spec \
      --interfaces='[{url="https://REGION-aiplatform.mtls.googleapis.com",protocolBinding="jsonrpc"}]' \
      --format="value(registryResource)"
    

    次のように置き換えます。

    • SERVICE_NAME: リソースに付ける名前(allow-aiplatform-region-eu3 など)。
    • PROJECT_ID: プロジェクト ID。
    • REGION: レジストリ リージョン。
    • DISPLAY_NAME: エンドポイントの人間が読める名前。

    詳細については、 エージェントを登録するをご覧ください。

  4. エージェントのエージェントからレジストリへの IAM ポリシー バインディングを作成します。

    gcloud iap web add-iam-policy-binding \
      --resource-type=agent-registry \
      --endpoint=ENDPOINT_ID \
      --region=REGION \
      --project=PROJECT_ID \
      --member=MEMBER \
      --role=roles/iap.egressor
    

    次のように置き換えます。

    • ENDPOINT_ID: 登録済みエージェントのサービス エンドポイント ID。これは、前の手順の出力から取得します。
    • MEMBER: ロールを付与するエージェント ID プリンシパル。通常、形式は: principal://TRUST_DOMAIN/resources/aiplatform/projects/PROJECT_ID/locations/REGION/reasoningEngines/ENGINE_ID です。

  5. この時点で、エージェント トラフィックは Agent Gateway 経由でルーティングされます。ただし、Agent Gateway はデフォルト拒否ポリシーを採用しています。 特定の Agent Platform 機能を有効にするには、エージェントが次のエンドポイントと通信できることを確認する必要があります。

    • Cloud Trace が有効になっている場合、Agent Gateway はエンドポイント https://telemetry.googleapis.com/ へのトラフィックを許可する必要があります。

      GOOGLE_API_USE_CLIENT_CERTIFICATE 環境変数と GOOGLE_API_USE_MTLS_ENDPOINT 環境変数が設定されている場合は、https://telemetry.mtls.googleapis.com/ へのトラフィックも許可されていることを確認してください。

    • Cloud Logging が有効になっている場合、Agent Gateway はエンドポイント https://logging.googleapis.com/ へのトラフィックを許可する必要があります。

      GOOGLE_API_USE_CLIENT_CERTIFICATE 環境変数と GOOGLE_API_USE_MTLS_ENDPOINT 環境変数が設定されている場合は、https://logging.mtls.googleapis.com/ へのトラフィックも許可されていることを確認してください。

    また、エージェントが LLM を呼び出す場合や、 セッションメモリ バンクなどの機能を使用する場合は、エージェントがこれらのサービスで使用されるエンドポイントと通信できることを確認する必要があります。 次に例を示します。

    • セッションの場合: https://REGION-aiplatform.googleapis.com/API_VERSION/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID/sessions
    • メモリバンクの場合: https://REGION-aiplatform.googleapis.com/API_VERSION/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID/memories

    セキュリティ上の理由から、エージェントがアクセスする特定の URI のみを登録して許可リストに登録することをおすすめします。ゲートウェイはホスト名を直接照合するため、エージェント SDK が使用するすべてのバリアントを登録する必要があります。たとえば、SDK のバージョン、リージョン クライアント構成、mTLS の使用状況に応じて、Google API は次のエンドポイント ホスト名を介して解決できます。

    • https://REGION-aiplatform.googleapis.com
    • https://REGION-aiplatform.mtls.googleapis.com
    • https://aiplatform.REGION.rep.googleapis.com

    エンドポイントを登録する方法については、エンドポイントを登録するをご覧ください。また、エージェントにこれらのエンドポイントの IAP Egressor ロールがあることを確認する必要があります。手順については、エージェントからエンドポイントへの下り(外向き)ポリシーを作成する をご覧ください。

  6. エージェントの構成を確認します。

    コンソール

    1. コンソールで、Agent Platform の [デプロイ] ページに移動します。 Google Cloud

      [デプロイ] に移動

    2. デプロイしたエージェントの名前をクリックします。

    3. [サービス構成] をクリックします。エージェントの [オブザーバビリティ] ペインが開きます。

    4. [デプロイの詳細] をクリックします。Agent Gateway の上り(内向き)と下り(外向き)の構成は、[デプロイ仕様] フィールドにあります。

    gcloud

    次の REST API リクエストを使用して、エージェントがゲートウェイに関連付けられていることを確認します。返された出力が null の場合、Runtime はゲートウェイにバインドできませんでした。

    curl -s -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID" \
      | jq '.spec.deploymentSpec.agentGatewayConfig'

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • REGION: エージェントがデプロイされているリージョン
    • RESOURCE_ID: エージェントのリソース ID

承認された Agent Gateway に Agent Runtime を制限する

カスタムの組織のポリシー制約を作成して、エージェントのデプロイ時に使用できる対象の Agent Gateway リソースのセットを定義できます。

カスタムの組織のポリシー制約を作成する

この例では、事前承認されたゲートウェイのリストとの間のトラフィックのみを許可するカスタム制約を作成します。

エージェントから任意の宛先へ

  1. エージェントから任意の宛先へモード(下り(外向き))のカスタム制約を定義するには、constraint-agent-gateway-egress.yaml という名前のファイルを作成します。

    次の例では、condition フィールドは、Agent Gateway リソースが指定されている場合(フィールドが存在し、空でない場合)にのみオペレーションが許可され、指定されたゲートウェイが事前承認リストに含まれている場合にのみオペレーションが許可されることを指定します。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistedEgressAgentGatewaysForAgentEngine
    resource_types:
    - aiplatform.googleapis.com/ReasoningEngine
    condition: >-
    has(resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway) &&
    resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway != '' &&
    (resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway in [
      'projects/AGENT_PROJECT_ID_1/locations/REGION_1/agentGateways/AGENT_GATEWAY_ID_1',
      'projects/AGENT_PROJECT_ID_2/locations/REGION_2/agentGateways/AGENT_GATEWAY_ID_2',
    ])
    method_types:
    - CREATE
    - UPDATE
    action_type: ALLOW
    display_name: Restrict Reasoning Engine Egress to Approved Agent Gateways
    description: Reasoning Engines can only be bound to a pre-approved list of
    Agent Gateway instances. Binding to any other gateway is denied.
    

    次のように置き換えます。

    • ORGANIZATION_ID: 組織 ID。
    • AGENT_PROJECT_ID: プロジェクト ID。
    • REGION: ゲートウェイが作成されたリージョン。
    • AGENT_GATEWAY_ID: ゲートウェイ ID。
  2. カスタム制約を適用します。

    gcloud org-policies set-custom-constraint EGRESS_CONSTRAINT_PATH
    

    EGRESS_CONSTRAINT_PATH は、前の手順で作成したカスタム 制約ファイルのフルパスに置き換えます。

  3. 制約を適用する組織のポリシーを作成します。組織のポリシーを定義するには、policy-agent-gateway-egress.yaml という名前のポリシー YAML ファイルを作成します。この例では、この制約をプロジェクト レベルで適用しますが、組織レベルまたはフォルダレベルで設定することもできます。

    name: projects/AGENT_PROJECT_ID/policies/custom.allowlistedEgressAgentGatewaysForAgentEngine
    spec:
      rules:
      - enforce: true
    

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

  4. 組織のポリシーを適用します。

    gcloud org-policies set-policy EGRESS_POLICY_PATH
    

    EGRESS_POLICY_PATH は、前の手順で作成した組織のポリシー YAML ファイルのフルパスに置き換えます。ポリシーが有効になるまでに最大 15 分かかります。

クライアントからエージェントへ

  1. クライアントからエージェントへモード(上り(内向き))のカスタム制約を定義するには、constraint-agent-gateway-ingress.yaml という名前のファイルを作成します。

    次の例では、condition フィールドは、Agent Gateway リソースが指定されている場合(フィールドが存在し、空でない場合)にのみオペレーションが許可され、指定されたゲートウェイが事前承認リストに含まれている場合にのみオペレーションが許可されることを指定します。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistedIngressAgentGatewaysForAgentEngine
    resource_types:
    - aiplatform.googleapis.com/ReasoningEngine
    condition: >-
    has(resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway) &&
    resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway != '' &&
    (resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway in [
      'projects/AGENT_PROJECT_ID_1/locations/REGION_1/agentGateways/AGENT_GATEWAY_ID_1',
      'projects/AGENT_PROJECT_ID_2/locations/REGION_2/agentGateways/AGENT_GATEWAY_ID_2',
    ])
    method_types:
    - CREATE
    - UPDATE
    action_type: ALLOW
    display_name: Restrict Reasoning Engine Ingress to Approved Agent Gateways
    description: Reasoning Engines can only be bound to a pre-approved list of
    Agent Gateway instances. Binding to any other gateway is denied.
    

    次のように置き換えます。

    • ORGANIZATION_ID: 組織 ID。
    • AGENT_PROJECT_ID: プロジェクト ID。
    • REGION: ゲートウェイが作成されたリージョン。
    • AGENT_GATEWAY_ID: ゲートウェイ ID。
  2. カスタム制約を適用します。

    gcloud org-policies set-custom-constraint INGRESS_CONSTRAINT_PATH
    

    INGRESS_CONSTRAINT_PATH は、前の手順で作成したカスタム 制約ファイルのフルパスに置き換えます。

  3. 制約を適用する組織のポリシーを作成します。組織のポリシーを定義するには、policy-agent-gateway-ingress.yaml という名前のポリシー YAML ファイルを作成します。この例では、この制約をプロジェクト レベルで適用しますが、組織レベルまたはフォルダレベルで設定することもできます。

    name: projects/AGENT_PROJECT_ID/policies/custom.allowlistedIngressAgentGatewaysForAgentEngine
    spec:
      rules:
      - enforce: true
    

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

  4. 組織のポリシーを適用します。

    gcloud org-policies set-policy INGRESS_POLICY_PATH
    

    INGRESS_POLICY_PATH は、前の手順で作成した組織のポリシー YAML ファイルのフルパスに置き換えます。ポリシーが有効になるまでに最大 15 分かかります。

カスタムの組織のポリシー制約の使用方法の詳細については、 カスタム制約を作成するをご覧ください。

次のステップ

Codelab

Gemini Enterprise Agent Platform で Agent Gateway を使用してエージェント ワークロードを管理する方法を学習します。

ガイド

Agent Gateway の承認を IAP、Model Armor、または独自のカスタム承認サービスに委任する方法を学習します。

ガイド

Agent Gateway をモニタリングする方法を学習します。

トラブルシューティング

Agent Gateway の接続のトラブルシューティング方法を学習します。