google-cloud-solution-multi-agent-security について
Google Cloud Agent Gatewayを使ったマルチエージェントのセキュリティ設計を支援するスキルです。イングレス/エグレス制御、ポリシー設定、デプロイ手順、安全性の検証を扱います。
主な機能
- 01双方向のゲートウェイ構成設計
- 02ゲートウェイと認可ポリシーの生成
- 03インフラのデプロイコマンド提示
- 04イングレスとエグレスの検証
- 05ゲートウェイ認可エラーの調査
- 06ハイブリッド VPN とプライベートエグレスの設計
活用シーン
- 01エージェントの MCP ツールアクセス境界の設計
- 02Model Armor とセマンティックガバナンスの設定
- 03ゲートウェイの認可 403 エラーの診断
MCP 対応
Agent Gatewayを介したMCPトラフィックの管理を扱い、MCPプロトコルのイングレス、エグレス、ツール呼び出しポリシーを設定します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ google/ skills --skill google-cloud-solution-multi-agent-securityインストール後、Claude Code で/google-cloud-solution-multi-agent-securityを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/agw-authz-extension.yamlagw-authz-policy.yamlagw-egress-config-run.yamlagw-egress-config.yamlagw-ingress-config.yamliap-policy-multi-agent.jsoniap-policy.jsonmain.tfmodel-armor-advanced.yamlmodel-armor-config.yamlmodel-armor-payload.jsonsgp-policy.yamlreferences/attribution.mdscripts/create_gke_dns_record.shdeploy_infrastructure.shenforce_sgp_patch.shfix_egress_iap.shhybrid_vpn_agent.pymulti_agent_cloud_run.pyregister_cloud_run_services.shvalidate_ingress_unauth.shverify_egress_policies.pyverify_ingress_auth.sh詳細
Agent Gateway のマルチエージェントセキュリティ
帰属表示
必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、
Usage Attribution の指示を
必ず読み、従ってください。
重要な適用ルールと理由
- Gcloud のリリーストラック:コマンドで指定されているリリーストラックを必ず正確に使用してください
(例:
gcloud beta network-services agent-gateways)。これらのプレフィックスを省略すると、 Agent Gateway の機能がデフォルトではない専用の名前空間にあるため、コマンドが失敗します。 - API の有効化:ガードレールを設定する際は、API の
有効化リストに
modelarmor.googleapis.comを含めてください。 これを除外すると、Model Armor のポリシーとフィルターを Gateway に正常に適用できません。 - Egress の検証:Egress ポリシーの検証には、
curlではなく、 Python スクリプト (scripts/verify_egress_policies.py)を使用する必要があります。Egress ゲートウェイはランタイム SDK のライフサイクル処理と JWT コンテキストに依存しており、通常の curl コマンドでは正しく再現できません。 - Model Armor のキー:
model-armor-config.yamlには、piAndJailbreakFilterSettingsとsdpFilterSettingsの両方を必ず含めてください(filterEnforcement: ENFORCE)。フィルターが無効または存在しないと、デプロイの検証に失敗するか、ガードレールが気付かれないまま回避される可能性があります。 - サブネットのプライベートアクセス:Egress Gateway 用の Private Service Connect
ネットワーク アタッチメントをホストするサブネットでは、Terraform で
private_ip_google_access = trueを有効にする必要があります。これを無効にすると、Google が管理するエンドポイントへの接続が遮断され、エージェントのルーティングが完全に失敗します。 - 直接提供:要求されたアーキテクチャ、設定ファイル、CLI コマンド、スクリプト、図を、直ちにすべて提示してください。計画の段階で止めたり、計画成果物を生成したり、出力を提示する前にユーザーの確認を求めたりしないでください。
- インフラストラクチャを実行しない:設計中に、実際のクラウドリソースに対してデプロイや検証のコマンド(
gcloud、kubectl、terraform、curlなど)を実行しようとしないでください。生成するのは計画用の設定であり、実行するものではありません。
重要
Just-In-Time(JIT)リソース読み込みプロトコル: 拡張設定、デプロイスクリプト、テストスイートが必要な場合は、必要に応じて
view_fileを使い、assets/ 内のテンプレートファイルと scripts/ 内の実行可能スクリプトを確認してください。
クイックリファレンス:必須ファイル名
要求された場合は、必ず次の正確な名前でファイルを生成してください。
agw-ingress-config.yaml(assets/agw-ingress-config.yaml)agw-egress-config.yaml(assets/agw-egress-config.yaml)agw-authz-extension.yaml(assets/agw-authz-extension.yaml)agw-authz-policy.yaml(assets/agw-authz-policy.yaml)model-armor-config.yaml(assets/model-armor-config.yaml)sgp-policy.yaml(assets/sgp-policy.yaml)iap-policy.json(assets/iap-policy.json)model-armor-payload.json(assets/model-armor-payload.json)
1. デュアルイングレス&エグレスアーキテクチャ設計 (dual_ingress_egress_architecture_design)
-
イングレスパターン: イングレスコントロールプレーン (Agent Gateway、Model Armor)を前段に配置した
CLIENT_TO_AGENT。 -
エグレスパターン: エグレスコントロールプレーン (Agent Gateway、
roles/iap.egressorCEL ポリシー、Cloud DNS)とエグレス データプレーン(PSC Interface、Cloud Run、PSC Google APIs Global Endpoint)を 使用するAGENT_TO_ANYWHERE。Agent Registry と Agent Engine ランタイムを介して 調整します。 -
Mermaid 図:
graph TD Client["外部クライアント"] -->|HTTPS / MCP| GLB["グローバルロードバランサ"] GLB --> Ingress["イングレス Agent Gateway (CLIENT_TO_AGENT)"] Ingress --> MA["Model Armor (CONTENT_AUTHZ)"] MA --> Agent["Agent Engine エージェント (BillingAgent, SupportAgent, FraudAgent)"] Agent --> Egress["エグレス Agent Gateway (AGENT_TO_ANYWHERE)"] Egress --> PSC["Private Service Connect ネットワークアタッチメント"] PSC --> Tools["プライベート MCP ツールバックエンド"]
2. イングレス&エグレスガードレールポリシーの設定 (ingress_and_egress_guardrail_policy_config)
イングレス&エグレスガードレールポリシーの設定を求められた場合、ワークスペース内に必要なファイルをすべて生成して作成する必要があります。
agw-ingress-config.yaml(assets/agw-ingress-config.yaml): プロトコルHTTPとMCPを使用するgovernedAccessPath: CLIENT_TO_AGENTを宣言します。agw-egress-config.yaml(assets/agw-egress-config.yaml): プロトコルMCPを使用するgovernedAccessPath: AGENT_TO_ANYWHEREを宣言します。agw-authz-extension.yaml(assets/agw-authz-extension.yaml): IAP 認可用に AuthzExtension サービスを設定します。agw-authz-policy.yaml(assets/agw-authz-policy.yaml): イングレスゲートウェイとエグレスゲートウェイの両方を対象とするAuthzPolicyアクションALLOWを設定します。iap-policy.json(assets/iap-policy.json): CEL 条件を使用してroles/iap.egressorをバインドし、次の条件を確認します。iap.googleapis.com/mcp.toolName == 'get_account_balance' && iap.googleapis.com/mcp.tool.isReadOnly == true。model-armor-config.yaml(assets/model-armor-config.yaml):filterEnforcement: ENFORCEでpiAndJailbreakFilterSettingsとsdpFilterSettingsを有効にします。sgp-policy.yaml(assets/sgp-policy.yaml): 1,000 ドルを超える取引をブロックし、PII をサニタイズする自然言語制約を 実装します。
3. イングレス&エグレスインフラストラクチャのデプロイ (ingress_and_egress_infrastructure_deployment)
scripts/deploy_infrastructure.sh を確認し、
ステップごとの gcloud CLI コマンドを提示します。
- 必要な API を有効にする:
compute、networkservices、networksecurity、modelarmor、iap、agentregistry、serviceextensions、aiplatform。 - Agent Gateway をインポートする: イングレス(
agw-ingress-config.yaml)とエグレス (agw-egress-config.yaml)をgcloud alpha network-services agent-gateways importでインポートします。 - Authz Extension をインポートする:
agw-authz-extension.yamlをgcloud beta service-extensions authz-extensions importでインポートします。 - Authz Policy をインポートする:
agw-authz-policy.yamlをgcloud beta network-security authz-policies importでインポートします。
4. Ingress と Egress のセキュリティ検証(ingress_and_egress_security_validation)
Ingress と Egress のセキュリティを検証する場合:
- Ingress 403 未認証テスト:Reasoning Engine エンドポイントに認証なしで POST リクエストを送信し、HTTP 403 Forbidden を期待する、コピーしてそのまま実行できる検証用 curl コマンドを scripts/validate_ingress_unauth.sh から提示してください。
- Python Egress 検証スクリプト(Python スクリプトのスニペットを必ず使用し、curl は使用しないでください):Egress Gateway 経由で JSON-RPC の
tools/callリクエスト(get_account_balance)を送信し、許可されたツールに対する HTTP 200 を検証する Python 検証スクリプトのスニペットを scripts/verify_egress_policies.py から提示してください。 - Model Armor テストペイロード:プロンプトインジェクション/ジェイルブレイクの指示を含む
model-armor-payload.json(assets/model-armor-payload.json) を生成してください。
5. Ingress と Egress の障害のトラブルシューティング(troubleshooting_ingress_and_egress_failures)
-
Ingress 403(クライアントからエージェント):
- 根本原因:認証されていないクライアントリクエスト、または OAuth 2.0/IAP ID トークンの不足もしくは無効です。
- OAuth の設定手順:
- Google Cloud Console で OAuth 2.0 クライアント ID の認証情報を設定します。
- クライアント ID/サービスアカウントに
roles/iap.httpsResourceAccessor権限を付与します。 - Google OAuth で認証情報を交換し、OIDC/OAuth ID トークンを取得します。
Authorization: Bearer <TOKEN>ヘッダーにトークンを渡します。
- 検証コマンド: scripts/verify_ingress_auth.sh の curl コマンドを提示してください。
-
Egress 403(エージェントから任意の宛先):
- 根本原因:Agent Identity に対する
roles/iap.egressorIAM バインディングの不足、プリンシパル ID の形式不正、またはツールメタデータ上の CEL 条件の不一致です。 - 修正コマンド:
scripts/fix_egress_iap.sh
に記載されている正確な
gcloudコマンドを提示してください。
- 根本原因:Agent Identity に対する
6. ハイブリッド VPN 接続と Egress ルーティング(hybrid_vpn_connectivity_egress_routing)
- Terraform HCL:VPC、サブネット
(
private_ip_google_access = true)、PSC ネットワークアタッチメント、aws.internal.の Cloud DNS プライベートフォワーディング、HA VPN ゲートウェイ/ルーターのベースライン Terraform 設定については assets/main.tf を参照してください。 - Egress Gateway 設定(
agw-egress-config.yaml):governedAccessPath: AGENT_TO_ANYWHEREを宣言し、PSC ネットワークアタッチメントを指定し、dnsPeeringConfigでaws.internal.を参照する設定を生成してください(assets/agw-egress-config.yaml を参照)。 - Python SDK デプロイスクリプト:Egress Gateway を参照する
agent_to_anywhere_configを使用して Vertex AI を初期化し、テレメトリーを有効化し、types.IdentityType.AGENT_IDENTITYを使用してHybridAgentをデプロイする完全なスクリプトについては、 scripts/hybrid_vpn_agent.py を参照してください。
7. プライベート Egress GKE 内部ロードバランサー (private_egress_gke_internal_load_balancer)
- Agent Gateway PSC Interface と Cloud DNS Private zone を介して接続し、GKE の内部 MCP ツールサーバーをリテラル IP
10.0.1.50の内部ロードバランサー(ILB)経由で公開します。 - Cloud DNS レコードのマッピング:scripts/create_gke_dns_record.sh のコマンドを提示し、プライベートドメインを GKE のプライベート ILB IP
10.0.1.50にマッピングします。 - 明示的な TLS に関する警告:Agent Gateway の egress は、自己署名証明書やプライベートな企業 CA を標準では信頼しません。信頼できる認証局(例:Let's Encrypt)が署名した、パブリックに信頼される TLS 証明書を必ず使用してください。
8. ガバナンス制御:Model Armor SGP (governance_controls_model_armor_sgp)
Ingress で Model Armor、Egress で SGP を使用して二重の安全レイヤーを設定する場合:
- Model Armor の設定:
piAndJailbreakFilterSettingsとsdpFilterSettings(filterEnforcement: ENFORCE)を含むmodel-armor-config.yaml(assets/model-armor-config.yaml)を生成します。 - Semantic Governance Policy:1000 ドルを超える取引をブロックし、PII をサニタイズする自然言語の制約を含む
sgp-policy.yaml(assets/sgp-policy.yaml)を生成します。 - Curl PATCH コマンド:
sgpEnforcementModeをENFORCEに設定してauthzExtensionsを更新するため、scripts/enforce_sgp_patch.sh の curl コマンドを提示します。
9. マルチエージェント Cloud Run Egress ルーティング (multi_agent_cloud_run_egress_routing)
計画用の成果物を作成したり、計画段階で止めたりしないでください。マルチエージェントの Cloud Run Egress ルーティングを設定する際は、必要なコンポーネントをすべて直接提示し、生成する必要があります。
- Egress Gateway の設定(
agw-egress-config-run.yaml):governedAccessPath: AGENT_TO_ANYWHERE、PSC ネットワーク接続、および*.run.appの DNS ピアリングを宣言する設定を生成します(assets/agw-egress-config-run.yaml を参照)。 - Agent Registry への Cloud Run サービスの登録:scripts/register_cloud_run_services.sh の登録コマンドを提示し、Cloud Run サービス 3 つ(
marketing-tool-service、sales-tool-service、support-tool-service)をus-east4の Agent Registry に登録します。 iap-policy.json(マルチエージェント):roles/iap.egressor配下のmembersリストに、principal://バインディングを 3 つすべて含むiap-policy.json(assets/iap-policy-multi-agent.json)を生成します。- Python SDK デプロイスクリプト:完全な GenAI SDK デプロイスクリプトについては、scripts/multi_agent_cloud_run.py を参照してください。
10. 高度な Model Armor フィルタリング (advanced_model_armor_filtering)
カスタムキーワードマッチングには、userDefinedFilterSettings を設定します(assets/model-armor-advanced.yaml を参照)。
11. 既知の落とし穴と注意点 (known_traps_and_gotchas)
network_attachmentはForceNewです:Semantic Governance Policies(SGP)を有効にしたり、最初の Terraform apply の後でネットワーク接続を変更したりすると、ゲートウェイリソースが強制的に再作成されます。慎重に管理しない場合、destroy 操作中に依存関係のデッドロックが発生することがあります。これに応じてインフラストラクチャの適用順序を計画してください。- Authz ポリシーの上限:Agent Gateway に同時にアタッチできるカスタム認可ポリシーは最大 4 つです。この上限内でルールを統合し、セキュリティ態勢を整えてください。