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

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

始める前に

  • エージェント ランタイムへのエージェントのデプロイについてよくご確認ください。

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

    単一の Runtime インスタンスは、Agent-to-Anywhere(下り)ゲートウェイと Client-to-Agent(上り)ゲートウェイの両方に同時にバインドできます。

制限事項

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

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

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

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

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

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

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

  1. エージェント ゲートウェイ リソースを作成し、必要に応じて認可ポリシーを関連付けます。ゲートウェイは、Agent-to-Anywhere(下り)モードまたは Client-to-Agent(上り)モードで作成できます。エージェントとゲートウェイは同じプロジェクトとリージョンに作成する必要があります。手順については、エージェント ゲートウェイを設定するをご覧ください。

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

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

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

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

      このエージェントで Model Armorセマンティック ガバナンス ポリシーなどのゲートウェイを介したプラットフォーム機能を使用する場合は、この例に示すように、作成呼び出しで 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-to-Anywhere(下り)モードで作成したエージェント Gateway の名前に置き換えます。

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

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

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

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

      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: エージェントから任意の宛先へ(外向き)モードで作成したエージェント ゲートウェイの名前
      • RESOURCE_ID: エージェントのリソース ID

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

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

      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: クライアントからエージェントへ(内向き)で作成したエージェント ゲートウェイの名前
      • RESOURCE_ID: エージェントのリソース ID
  3. エージェントとゲートウェイと同じプロジェクトとリージョンにあるエージェント レジストリ インスタンスに登録します。

    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 が有効になっている場合、エージェント ゲートウェイはエンドポイント 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 下り(外向き)ロールがあることを確認する必要があります。手順については、エージェントからエンドポイントへの下り(外向き)ポリシーを作成するをご覧ください。

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

    コンソール

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

      [デプロイメント] に移動

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

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

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

    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 Runtime を承認済みの Agent Gateway に制限する

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

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

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

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

  1. Agent-to-Anywhere モード(下り)のカスタム制約を定義するには、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 の接続に関する問題のトラブルシューティング方法について説明します。