ゲートウェイで Model Armor を構成する

Model Armor を使用すると、エージェント内にフィルタリング ロジックを直接実装しなくても、AI エージェントがセキュリティとガバナンスの基準に準拠していることを確認できます。Agent Gateway で Model Armor を構成すると、Model Armor はゲートウェイを通過するすべてのプロンプトとレスポンスを検査して、組織のコンテンツ セキュリティ ガードレールを適用します。この機能を使用すると、ゲートウェイに則って管理されるすべてのエージェントに、コンテンツ セキュリティ ガードレールを一貫して適用できます。Model Armor は、プロンプト インジェクション、ジェイルブレイクの試み、機密情報の漏洩、有害なコンテンツの生成などのリスクを軽減するのに役立ちます。詳細については、Model Armor フィルタをご覧ください。

Model Armor テンプレート

ゲートウェイで Model Armor を構成するには、AI エージェントが受信して返すプロンプトとレスポンスをスクリーニングする方法を指定するテンプレートを作成します。テンプレートには、複数の安全性とセキュリティのカテゴリ用にカスタマイズされたフィルタと上限値が用意されています。詳細については、Model Armor テンプレートをご覧ください。

Model Armor は、Agent Gateway によって管理される通信パスにスクリーニング機能を直接埋め込みます。ゲートウェイは、Model Armor を介してコンテンツを渡すことで、コンテンツ セキュリティ テンプレートを適用します。テンプレートでは、テンプレートに違反するコンテンツを削除またはブロックするように Model Armor を構成できます。

上り(内向き)トラフィックと下り(外向き)トラフィック

Agent Gateway を介して、Model Armor は次のトラフィック フローを保護できます。

クライアントからエージェントへ(エージェント(内向き))

Model Armor がクライアントからエージェントへのトラフィック内のリクエストとレスポンスの両方を評価するために使用するテンプレートを定義します。1 つのテンプレートを両方向に適用することも、方向ごとに異なるテンプレートを構成することもできます。

Model Armor は、次のものをスクリーニングする際にテンプレートに従います。

  • クライアント(エンドユーザーまたは呼び出し元アプリケーション)から AI エージェントへの受信リクエスト
  • AI エージェントからクライアントに返されるレスポンス

クライアントがエージェントにプロンプトを送信すると、Agent Gateway はトラフィックをインターセプトし、サニタイズのためにペイロードを Model Armor に送信します。Model Armor が ALLOW の判定を出すと、Agent Gateway はプロンプトを AI エージェントに送信します。Model Armor が BLOCK の判定を出すと、クライアントはエラーを受け取り、AI エージェントに到達する前にフローが終了します。

AI エージェントがリクエストを処理してレスポンスを生成すると、Agent Gateway は送信ストリームがクライアントに到達する前にインターセプトします。Model Armor がレスポンスを評価し、判定を下します。判定に基づいて、Agent Gateway はレスポンスを許可するか、完全にブロックします。

エージェントから任意の宛先へ(エージェント(外向き))

Model Armor が Agent-to-Anywhere トラフィックのリクエストとレスポンスを評価するために使用するテンプレートを定義します。1 つのテンプレートを両方向に適用することも、方向ごとに異なるテンプレートを構成することもできます。

Model Armor は、AI エージェントと外部システム間の通信をスクリーニングする際に、テンプレートに従います。これには、次のものが含まれます。

  • 外部の大規模言語モデル(LLM)
  • サードパーティの AI エージェント
  • Model Context Protocol(MCP)サーバー

AI エージェントが外部システムと通信すると、Agent Gateway が下り(外向き)トラフィックをインターセプトして Model Armor を呼び出します。Model Armor は、設定した下り(外向き)テンプレートに従ってペイロードを評価します。

アウトバウンド データが安全ポリシーに違反している場合、Model Armor は BLOCK 判定を発行します。Agent Gateway は接続を終了し、有害なデータや機密データが LLM、ツール、外部 AI エージェントに到達しないようにします。

始める前に

Model Armor API を有効にします(有効になっていない場合)。

API を有効にするために必要なロール

API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。

API の有効化

必要なロール

Model Armor テンプレートの作成に必要な権限を取得するには、プロジェクトに対する Model Armor 管理者 (roles/modelarmor.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Agent Gateway の操作に必要なロールについては、Agent Gateway のドキュメントの必要なロールをご覧ください。

ゲートウェイを通過するサポートされているペイロードとサポートされていないペイロードについては、このドキュメントのサポートされているペイロードとサポートされていないペイロードをご覧ください。

ゲートウェイで Model Armor を構成する

ゲートウェイで Model Armor を構成する手順は次のとおりです。

  1. Model Armor テンプレートを作成するプロジェクトで Model Armor API を有効にします。
  2. ゲートウェイを追加するリージョンに 1 つ以上の Model Armor テンプレートを作成します。上り(内向き)トラフィックと下り(外向き)トラフィックの両方に同じテンプレートを使用できます。

    テンプレート名をメモします。Google Cloud コンソールでテンプレートの名前をコピーするには、テンプレートの詳細を表示し、テンプレート名の横にある [クリップボードにコピー] をクリックします。

    AI エージェントまたは Agent Gateway を含むプロジェクトとは異なるプロジェクトで Model Armor テンプレートを作成し、VPC Service Controls を使用する場合は、両方のプロジェクトが同じ VPC Service Controls サービス境界内にある必要があります。

  3. Model Armor テンプレートが保存されているリージョンに Agent Gateway を設定します。クライアントからエージェント(内向き)ゲートウェイには、内向きトラフィック用に作成した Model Armor テンプレートを指定します。[Agent-to-Anywhere(下り(外向き))ゲートウェイ] には、下り(外向き)トラフィック用に作成した Model Armor テンプレートを指定します。両方のトラフィック フローに同じテンプレートを使用できます。

  4. 適切なサービス エージェントに必要な IAM ロールを付与します。

    • クライアントからエージェント(上り(内向き)): AI Platform Reasoning Engine サービス エージェント サービス エージェントに次のロールを付与します。

      • AI エージェントを含むプロジェクトの Model Armor Callout ユーザー(roles/modelarmor.calloutUser)ロール。

      • Model Armor テンプレートを含むプロジェクトの Model Armor ユーザー(roles/modelarmor.user)ロール。

      gcloud projects add-iam-policy-binding AGENT_RUNTIME_PROJECT_ID \
          --member=serviceAccount:service-AGENT_RUNTIME_PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com \
          --role=roles/modelarmor.calloutUser
      gcloud projects add-iam-policy-binding MODEL_ARMOR_PROJECT_ID \
          --member=serviceAccount:service-AGENT_RUNTIME_PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com \
          --role=roles/modelarmor.user
      

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

      • AGENT_RUNTIME_PROJECT_ID: エージェントを作成したプロジェクトのプロジェクト ID。
      • AGENT_RUNTIME_PROJECT_NUMBER: エージェントを作成したプロジェクトのプロジェクト番号。
      • MODEL_ARMOR_PROJECT_ID: Model Armor テンプレートを含むプロジェクトのプロジェクト ID。
    • エージェントから任意の場所(下り(外向き)): Service Extensions サービス エージェントに次のロールを付与します。

      • ゲートウェイを含むプロジェクトの Model Armor Callout ユーザー(roles/modelarmor.calloutUser)ロールと Service Usage コンシューマー(roles/serviceusage.serviceUsageConsumer)ロール。
      • Model Armor テンプレートを含むプロジェクトの Model Armor ユーザー(roles/modelarmor.user)ロール。
      gcloud projects add-iam-policy-binding GATEWAY_PROJECT_ID \
          --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \
          --role=roles/modelarmor.calloutUser
      gcloud projects add-iam-policy-binding GATEWAY_PROJECT_ID \
          --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \
          --role=roles/serviceusage.serviceUsageConsumer
      gcloud projects add-iam-policy-binding MODEL_ARMOR_PROJECT_ID \
          --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \
          --role=roles/modelarmor.user
      

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

      • GATEWAY_PROJECT_ID: ゲートウェイを作成したプロジェクトのプロジェクト ID。
      • GATEWAY_PROJECT_NUMBER: ゲートウェイを作成したプロジェクトのプロジェクト番号。
      • MODEL_ARMOR_PROJECT_ID: Model Armor テンプレートを含むプロジェクトのプロジェクト ID。

      手順については、Model Armor に認可を委任するをご覧ください。

    ロールを付与する方法の一般的な情報については、単一の IAM ロールを付与するをご覧ください。

省略可: デプロイ前のテンプレート検証チェック

テンプレートをゲートウェイにデプロイする前に、デプロイ前のチェックを実行して、テンプレート構成がセキュリティ ポリシーを正しく適用していることを確認できます。

一連のテストプロンプトを使用して sanitizeUserPrompt メソッドに直接クエリを実行することで、テンプレートを検証できます。このデプロイ前チェックの実行方法と、検証済みのテストプロンプトのリストについては、Model Armor テンプレートをテストするをご覧ください。

リクエストとレスポンスから機密データを秘匿化する

Model Armor に、ペイロードから国民識別番号や電話番号などの機密データを秘匿化するように指示できます。この機能を使用する手順は次のとおりです。

INSPECT_AND_BLOCK 適用タイプを使用すると、次のいずれかが発生します。

  • ペイロードが Sensitive Data Protection 検出機能にのみ違反している場合、Model Armor は、Sensitive Data Protection の詳細設定と匿名化テンプレートに従ってペイロードを秘匿化します。

  • ペイロードが複数の検出機能に違反している場合、Model Armor は秘匿化を行わず、ペイロード全体をブロックします。

INSPECT_AND_BLOCK ではなく INSPECT_ONLY 適用タイプを使用すると、Model Armor はペイロードを秘匿化しません。

適用タイプ(INSPECT_ONLY または INSPECT_AND_BLOCK)に関係なく、Model Armor ログは、高度な Sensitive Data Protection の設定と匿名化テンプレートに従って秘匿化されます。

Model Armor 検出機能(フィルタとも呼ばれます)の一覧については、Model Armor フィルタをご覧ください。

サポートされているペイロードとサポートされていないペイロード

このセクションでは、Model Armor がサニタイズするペイロードの種類について説明します。

クライアントからエージェントへの(内向き)トラフィック

ADK プロトコルを使用するクライアントからエージェントへの(内向き)トラフィックの場合、Model Armor は、Agent Development Kit(ADK)を使用して構築され、Vertex AI Agent Engine で実行されているエージェントの reasoningEngines.streamQuery リクエストとレスポンスのみをサニタイズします。

他のすべての ReasoningEngine ペイロードと ReasoningEngine エラー レスポンスは Model Armor に送信されません。ADK 以外のペイロード(Langchain ペイロードなど)も Model Armor に送信されません。

エージェントから任意の宛先への(外向き)トラフィック

エージェントから任意の場所への(下り)トラフィックでは、次のペイロードがサポートされています。

A2A ペイロード

Model Armor は、A2A v1 プロトコルの次のペイロードのみをサニタイズします。

Model Armor では、次の A2A ペイロードをサニタイズなしで許可します。

MCP ペイロード

Model Armor は、次の MCP ペイロードのみをサニタイズします。

  • tools/call のリクエストとレスポンス
  • prompts/get のリクエストとレスポンス
  • MCP ツールの実行エラー(悪意のある MCP ツールの作成者によるプロンプト インジェクションのターゲット)

Model Armor では、次のペイロードはサニタイズされずに許可されます。

  • tools/list
  • resources/*
  • notifications/*
  • MCP 向けの Streamable HTTP / SSE
  • MCP プロトコル エラー(ツール実行エラー以外のすべてのエラーなど)

外部 LLM ペイロード

Model Armor は、OpenAI API プロトコル(下り(外向き))の次のペイロードのみをサニタイズします。これには、openai.com の GPT モデルと、OpenAI API 互換の LLM サーバー(vLLM など)を介した他のモデルが含まれます。ここに記載されていないペイロードは、サニタイズなしで許可されます。

ドキュメントのスクリーニング

このインテグレーションでは、ドキュメントやファイルのアップロード(PDF など)を含むプロンプトとレスポンスのサニタイズはサポートされていません。ドキュメントをスクリーニングするには、Model Armor REST API を直接呼び出します。詳細については、Model Armor のドキュメントのドキュメントのスクリーニングをご覧ください。

割り当てとシステム上限

割り当ては、Model Armor テンプレートが存在するプロジェクトで消費されます。ゲートウェイが別のプロジェクトにある場合、ExternalProcessor の割り当てもゲートウェイ プロジェクトで消費されます。

Model Armor を他のサービスで使用する場合に適用される割り当ての詳細については、割り当てを管理するをご覧ください。

入力サイズやトークンの上限など、Model Armor の割り当てとシステム上限に関する一般的な情報については、Model Armor のドキュメントの割り当てとシステム上限をご覧ください。

次のステップ