セマンティック ガバナンス ポリシーと Policy Engine を構成する
このセクションでは、インフラストラクチャの準備からポリシーの作成への移行について説明します。
前提条件
セマンティック ガバナンス ポリシーを構成する前に、次の手順を完了します。
必要な API の有効化
始める前に、セマンティック ガバナンス ポリシーとそのネットワーキング コンポーネントに必要な API を有効にします。
gcloud services enable \
aiplatform.googleapis.com \
agentregistry.googleapis.com \
networkservices.googleapis.com \
networksecurity.googleapis.com \
compute.googleapis.com \
dns.googleapis.com \
--project=PROJECT_ID
Vertex AI サービス アカウントに IAM 権限を付与する(Google 管理のバインディングのみ)
プロビジョニング中に Google 管理のバインディング オプションを使用する場合は、プロジェクトに Private Service Connect(PSC)エンドポイント(roles/compute.networkAdmin)と DNS レコードセット(roles/dns.admin)を作成するために必要なロールを Vertex AI サービス アカウント(P4SA)に付与します。セルフマネージド バインディング オプションを使用する場合は、ネットワーク リソースを自分で作成するため、この手順をスキップできます。
サービス ID を作成(べき等)してロールを付与します。
export PROJECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud beta services identity create \
--service=aiplatform.googleapis.com \
--project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/compute.networkAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/dns.admin"
対応する削除コマンドは、クリーンアップ セクションの IAM バインディングを削除するにあります。
エージェントの資格要件
Cloud de Confiance コンソールのセマンティック ガバナンス ポリシーのエージェント セレクタに表示されるようにするには、エージェントの推論エンジンが identity_type=AGENT_IDENTITY と agent_gateway_config の両方を設定してデプロイされている必要があります。いずれかが欠落している場合、 Cloud de Confiance コンソールはセレクタからエージェントを除外します。代わりに、API と gcloud は明示的なエラーを返します。
これらの要件を満たすエージェントをデプロイするには、Agent Gateway 経由で Agent Runtime トラフィックをルーティングするの手順に沿って操作します。既存の推論エンジンでは両方のフィールドが変更不可であるため、これらのフィールドなしでデプロイされたエージェントは再デプロイする必要があります。パッチ適用は機能しません。
既存のエージェントが対象かどうかを確認するには、推論エンジンの spec.effectiveIdentity が agents.global. で始まっていることを確認します。
gcloud ai reasoning-engines describe REASONING_ENGINE_ID \
--region=LOCATION \
--project=PROJECT_ID \
--format='value(spec.effectiveIdentity)' \
| grep -q '^agents.global.' \
&& echo "Eligible" || echo "Not eligible"
サポートされているロケーション
セマンティック ガバナンス ポリシー エンジンとセマンティック ガバナンス ポリシーは、次のリージョン ロケーションでサポートされています。
| 地域 | 利用可能なリージョン |
|---|---|
| 南北アメリカ | us-central1、us-east1、us-east4、us-west1 |
| ヨーロッパ | europe-southwest1、europe-west1、europe-west4、europe-west8 |
プロビジョニングと有効化
セマンティック ガバナンス ポリシー エンジンを有効にします。これにより、必要なランタイム環境がプロビジョニングされます。通常、プロビジョニングが完了するまでに 2 ~ 3 分ほどかかります。ただし、需要が高い場合やウォームアップ プールが補充されている場合は、プロビジョニングに最大 20 分かかることがあります。プロビジョニングには、次のいずれかのオプションを選択します。
- Google 管理バインディング: Google は、 Cloud de Confiance by S3NS プロジェクトに基盤となるネットワーク リソースを作成し、そのライフサイクルを自動的に管理します。
- セルフマネージド バインディング: 必要なネットワーク リソース(
network、subnetwork、dnsZoneName)を Cloud de Confiance by S3NS プロジェクトで直接作成して管理します。
プロビジョニングが完了したら、Policy Engine を Agent Gateway に接続する必要があります。
Google 管理のバインディング
REST
curl -X PATCH \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine?updateMask=gatewayConfigs" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{ "gatewayConfigs": {
"GATEWAY_NAME": {
"network": "NETWORK_NAME",
"subnetwork": "SUBNETWORK_NAME",
"dnsZoneName": "DNS_NAME" }
}
}'
gcloud
gcloud beta ai semantic-governance-policy-engine update \
--location=LOCATION \
--project=PROJECT_ID \
--gateway-config="name='GATEWAY_NAME',network=NETWORK_NAME,subnetwork=SUBNETWORK_NAME,dns-zone-name=DNS_NAME"
次のように置き換えます。
GATEWAY_NAMEは、一意のゲートウェイ名に置き換えます。DNS_NAMEは、使用する限定公開 DNS ゾーンの名前に置き換えます。PROJECT_IDは Cloud de Confiance by S3NS プロジェクト ID(projects/PROJECT_ID/global/networks/default)に置き換えます。カスタム ネットワークとサブネットを使用する場合は、networkとsubnetworkのリソースパス全体を適宜置き換えます。
自動生成された DNS ホスト名を取得する
Google マネージド バインディングを使用してエンジンをプロビジョニングすると、Google は Private Service Connect(PSC)エンドポイントを自動的に作成し、プライベート DNS ゾーンに DNS A レコードを登録します。このレコードの FQDN は SGP_DNS_HOSTNAME として機能し、ゲートウェイ構成の dnsRecord 出力専用フィールドに入力されます。
自動生成された DNS ホスト名を取得するには:
gcloud
次のコマンドを実行して、ポリシー エンジンの構成を取得します。
gcloud beta ai semantic-governance-policy-engine describe \
--location=LOCATION \
--project=PROJECT_ID
REST
GET リクエストを送信して、エンジン リソースを取得します。
curl "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
レスポンスで、gatewayConfigs.GATEWAY_NAME.dnsRecord の下の dnsRecord フィールドを探します。この FQDN を保存します。Policy Engine を Agent Gateway に接続するときに、SGP_DNS_HOSTNAME として必要になります。
セルフマネージド バインディング
REST
curl -X PATCH "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine"
}'
gcloud
gcloud beta ai semantic-governance-policy-engine update \
--location=LOCATION \
--project=PROJECT_ID
このコマンドは、長時間実行オペレーションを返します。OPERATION をレスポンスの name 値に置き換えることで、オペレーションのステータスをポーリングできます。
curl "https://LOCATION-aiplatform.googleapis.com/v1beta1/OPERATION" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
または、state フィールドが ACTIVE を返すまで、エンジン全体のステータスを確認します。
curl "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
ネットワークの構成(セルフマネージドのみ)
ポリシー エンジンがプロビジョニングされたら、Agent Gateway がポリシー エンジンと通信するために必要なネットワーキング コンポーネントを構成します。
Google 管理パスの場合、Google は Google 管理テナント プロジェクトに PSC エンドポイントを自動的に作成しますが、セルフマネージド パスの場合、独自の Cloud de Confiance by S3NS プロジェクトで PSC エンドポイントを手動で作成して管理する必要があります。
1. VPC ネットワークとサブネットをプロビジョニングする
この手順では、VPC ネットワーク、サブネット、エージェント トラフィック用のプロキシ専用サブネットを作成します。表示されている IP 範囲(10.11.12.0/24 と 10.11.13.0/24)は例です。ネットワーク設計に適合する RFC 1918 プライベート範囲を使用できます。
VPC ネットワークを作成します。
gcloud compute networks create NETWORK_NAME \ --subnet-mode=auto \ --project=PROJECT_IDNETWORK_NAMEは、VPC ネットワークの名前に置き換えます(agent-networkなど)。サブネットを作成します。
gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK_NAME \ --region=LOCATION \ --range=10.11.12.0/24 \ --project=PROJECT_IDSUBNET_NAMEは、サブネットの名前に置き換えます(例:agent-subnet)。プロキシ専用サブネットを作成します(マネージド ロードバランサに必要)。
gcloud compute networks subnets create PROXY_SUBNET_NAME \ --network=NETWORK_NAME \ --region=LOCATION \ --range=10.11.13.0/24 \ --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE \ --project=PROJECT_IDPROXY_SUBNET_NAMEは、プロキシ専用サブネットの名前に置き換えます(例:agent-proxy-subnet)。
2. プライベート DNS ゾーンをプロビジョニングする
Agent Gateway が Policy Engine のホスト名を解決できるように、限定公開 DNS ゾーンを作成します。
gcloud dns managed-zones create DNS_ZONE_NAME \
--description="Private zone for my internal agentic VPC services" \
--dns-name="internal.example.com." \
--visibility=private \
--networks=NETWORK_NAME \
--project=PROJECT_ID
Replace the following:
DNS_ZONE_NAME: DNS ゾーンの名前(例:my-private-zone)。internal.example.com.: ゾーンの DNS 名(末尾のドットを含む)。
3. ネットワーク アタッチメントを作成する
Agent Gateway が VPC 内のリソースに接続できるように、ネットワーク アタッチメントを作成します。接続設定は ACCEPT_AUTOMATIC に設定する必要があります。
gcloud compute network-attachments create NETWORK_ATTACHMENT_NAME \
--region=LOCATION \
--subnets=SUBNET_NAME \
--connection-preference=ACCEPT_AUTOMATIC \
--project=PROJECT_ID
Replace the following:
NETWORK_ATTACHMENT_NAME: ネットワーク アタッチメントの名前(例:sgp-nw-attachment)。SUBNET_NAME: 手順 1 で作成したサブネット。
4. 静的 IP、PSC エンドポイント、DNS レコードを作成する
静的 IP アドレスを予約し、ポリシー エンジンのサービス アタッチメントを指す Private Service Connect(PSC)エンドポイントを作成し、到達可能にするための DNS レコードを作成します。
# Reserve a static IP address
gcloud compute addresses create STATIC_IP_NAME \
--region=LOCATION \
--subnet=SUBNET_NAME \
--purpose=GCE_ENDPOINT \
--project=PROJECT_ID
# Capture the reserved IP address
IP=$(gcloud compute addresses describe STATIC_IP_NAME \
--region=LOCATION \
--project=PROJECT_ID \
--format=value(address))
# Create the PSC endpoint
gcloud compute forwarding-rules create PSC_ENDPOINT_NAME \
--region=LOCATION \
--network=NETWORK_NAME \
--address=STATIC_IP_NAME \
--target-service-attachment=PSC_SERVICE_ATTACHMENT \
--project=PROJECT_ID
# Create a DNS A record for the policy engine
gcloud dns record-sets create SGP_DNS_HOSTNAME \
--zone=DNS_ZONE_NAME \
--type=A \
--ttl=300 \
--rrdatas=$IP \
--project=PROJECT_ID
次のように置き換えます。
STATIC_IP_NAME: 予約済み IP アドレスの名前(例:sgp-psc-ip)。PSC_ENDPOINT_NAME: PSC エンドポイントの名前(例:sgp-psc-endpoint)。PSC_SERVICE_ATTACHMENT: プロビジョニング レスポンスから保存されたpscServiceAttachment値。SGP_DNS_HOSTNAME: プライベート DNS ゾーンのホスト名(LOCATION.DNS_ZONE_SUFFIX形式)。DNS_ZONE_SUFFIXは、プライベート DNS ゾーンの作成時に指定した DNS 名です。たとえば、ロケーションがus-west1で、DNS ゾーンのサフィックスがinternal.example.comの場合は、us-west1.internal.example.comを使用します。
5. Agent Gateway で VPC 接続を構成する
ネットワーク リソースを作成したら、Agent Gateway にネットワーク アタッチメントと DNS ピアリングを登録して、プライベート ネットワーク経由で Policy Engine にアクセスできるようにする必要があります。
詳細な手順については、Agent Gateway 設定ガイドの VPC 接続を構成するをご覧ください。少なくとも、次のことを行う必要があります。
- ステップ 3 で作成したネットワーク アタッチメントを Agent Gateway の下り(外向き)構成に登録します。
- DNS ピアリングを登録して、ゲートウェイがステップ 4 で作成したプライベート DNS ホスト名を解決できるようにします。
Policy Engine を Agent Gateway に接続する
ネットワークを構成したら、Agent Gateway が評価のためにトラフィックを Policy Engine に転送できるように、認可拡張機能と認可ポリシーを作成する必要があります。
認可拡張機能を作成する: Policy Engine の DNS ホスト名を指す認可拡張機能を作成します。ネットワークの構成(ステップ 4)で DNS レコードを作成したのと同じ
SGP_DNS_HOSTNAMEを使用します。これは、Agent Gateway が評価のためにトラフィックを Policy Engine に送信するメカニズムです。gcloud
YAML ファイル(
authz-ext.yaml)で拡張機能の構成を定義して、インポートします。name: AUTHZ_EXTENSION_NAME service: SGP_DNS_HOSTNAME authority: SGP_DNS_HOSTNAME failOpen: false loadBalancingScheme: LOAD_BALANCING_SCHEME_UNSPECIFIEDgcloud service-extensions authz-extensions import AUTHZ_EXTENSION_NAME \ --source=authz-ext.yaml \ --location=LOCATION \ --project=PROJECT_IDREST
curl -X POST \ "https://networkservices.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzExtensions?authzExtensionId=AUTHZ_EXTENSION_NAME" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "service": "SGP_DNS_HOSTNAME", "authority": "SGP_DNS_HOSTNAME", "failOpen": false, "loadBalancingScheme": "LOAD_BALANCING_SCHEME_UNSPECIFIED" }'SGP_DNS_HOSTNAMEは、ネットワークの構成(手順 4)で A レコードを作成した DNS ホスト名に置き換えます。このコマンドは、長時間実行オペレーションを返します。オペレーションが完了するまで待ってから、次の手順に進みます。
認可ポリシーを作成する: 拡張機能を Agent Gateway にバインドする認可ポリシーを作成します。これにより、Agent Gateway はトラフィックを Policy Engine に送信して評価します。
gcloud
YAML ファイル(
authz-policy.yaml)で認可ポリシー構成を定義し、インポートします。name: AUTHZ_POLICY_NAME target: loadBalancingScheme: LOAD_BALANCING_SCHEME_UNSPECIFIED resources: - projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME httpRules: - to: operations: - paths: - prefix: / when: "!request.headers['content-type'].startsWith('application/grpc') && (request.path.endsWith(':generateContent') || request.path.endsWith(':streamGenerateContent'))" action: CUSTOM policyProfile: CONTENT_AUTHZ customProvider: authzExtension: resources: - projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAMEgcloud network-security authz-policies import AUTHZ_POLICY_NAME \ --source=authz-policy.yaml \ --location=LOCATION \ --project=PROJECT_IDREST
curl -X POST \ "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies?authzPolicyId=AUTHZ_POLICY_NAME" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "target": { "loadBalancingScheme": "LOAD_BALANCING_SCHEME_UNSPECIFIED", "resources": ["projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME"] }, "httpRules": [{ "to": { "operations": [{"paths": [{"prefix": "/"}]}] }, "when": "!request.headers['"'"'content-type'"'"'].startsWith('"'"'application/grpc'"'"') && (request.path.endsWith('"'"':generateContent'"'"') || request.path.endsWith('"'"':streamGenerateContent'"'"'))" }], "action": "CUSTOM", "policyProfile": "CONTENT_AUTHZ", "customProvider": { "authzExtension": { "resources": ["projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAME"] } } }'このコマンドは、長時間実行オペレーションを返します。オペレーションが完了するまで待ってから、次の手順に進みます。
ポリシーを作成する
Policy Engine が有効になると、エージェントの技術的および行動上のガードレールを定義できます。
- 範囲を定義する: ポリシーがエージェントのすべてのアクションに適用されるか、特定のツールを対象とするかを判断します。
- 制約を作成する: ビジネスルールを平易な英語で指定します。
コンソール
- Cloud de Confiance コンソールで、[セマンティック ガバナンス ポリシー] ページに移動します。
- [+ ポリシーを追加] をクリックします。
- [ポリシーを追加] サイドパネルで、次のように構成します。
- 名前: ポリシーの一意の ID を入力します。名前に使用できるのは、小文字、数字、ハイフンのみです。
- 説明: (省略可)ポリシーの目的の簡単な説明を入力します。
- エージェントの選択: このルールが適用される特定のエージェントまたはすべてのエージェントを選択します。選択ツールが空の場合や、想定しているエージェントが表示されない場合は、エージェントの資格要件をご覧ください。
- アクセス ターゲット:
- すべての操作に制約を適用するには、[すべてのツールに制約を適用する] チェックボックスをオンにします。
- 特定のリソースをターゲットにするには、プルダウン メニューから [MCP サーバー] と個々の [ツール] を選択します。
- 制約: ビジネスルールを自然言語で入力します(最大 5,000 文字)。
- 拒否メッセージ: (省略可)このポリシーでリクエストが拒否されたときに、ポリシーの根拠の代わりにユーザーに表示するメッセージ(最大 1,000 文字)を入力します。REST API では、これはポリシー リソースの
agentResponseCustomization.denialMessageにマッピングされます。Google Cloud CLI では、gcloud beta ai semantic-governance-policies createまたはgcloud beta ai semantic-governance-policies updateで--agent-response-denial-messageを使用します(下記の gcloud タブをご覧ください)。情報漏洩のリスクと複数のポリシーを含む拒否メッセージをご覧ください。
- [作成] をクリックします。
gcloud
gcloud beta ai semantic-governance-policies create コマンドを使用すると、エージェント スコープ(すべてのツールに適用)またはツール スコープで制約を構成できます。
エージェント ID を確認する
ポリシーを作成するには、Agent Registry からエージェントの一意の ID を取得する必要があります。プロジェクト内のエージェントを一覧表示して ID を確認します。
gcloud alpha agent-registry agents list \
--project=PROJECT_ID \
--location=LOCATION
エージェント ID は name フィールドの最後のセグメントです(例: agentregistry-00000000-0000-0000-abcd-012345678901)。この値は、次のコマンドが --agent に渡す完全修飾エージェント名 projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID の AGENT_ID セグメントに使用します。
セマンティック ガバナンス ポリシー コマンドを実行する前に、リージョン API エンドポイントのオーバーライドを設定します。
gcloud config set api_endpoint_overrides/aiplatform \
https://LOCATION-aiplatform.googleapis.com/
エージェント スコープ ポリシーを作成する
gcloud beta ai semantic-governance-policies create POLICY_ID \
--location=LOCATION \
--display-name="Semantic governance policy for ShippingAgent-1" \
--description="Applies to all tool calls from the Cymbal shipping assistant agent" \
--agent=projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID \
--natural-language-constraint="Always use UPS as the shipping provider for shipments within the USA. Always use DHL as the shipping provider for shipments within the EU." \
--project=PROJECT_ID
拒否メッセージを構成するには(コンソール タブの拒否メッセージの箇条書きと、複数のポリシーを含む拒否メッセージを参照)、--agent-response-denial-message を追加します。
gcloud beta ai semantic-governance-policies create POLICY_ID \
--location=LOCATION \
--display-name="Semantic governance policy for ShippingAgent-1" \
--agent=projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID \
--natural-language-constraint="Always use UPS as the shipping provider for shipments within the USA. Always use DHL as the shipping provider for shipments within the EU." \
--agent-response-denial-message="Sorry, I can only book shipments through the approved carriers for your region." \
--project=PROJECT_ID
gcloud beta ai semantic-governance-policies update を使用して、既存のポリシーに --agent-response-denial-message を追加または更新することもできます。
MCP サーバーを見つける
gcloud alpha agent-registry mcp-servers list \
--project=PROJECT_ID \
--location=LOCATION
ツールスコープ ポリシーを作成する
gcloud beta ai semantic-governance-policies create POLICY_ID \
--location=LOCATION \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--agent=projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID \
--mcp-tools="mcp-server=MCP_SERVER,tools=TOOL_NAME" \
--natural-language-constraint="NLC_TEXT" \
--project=PROJECT_ID
複数のポリシーを含む拒否メッセージ
1 つのリクエストが複数のポリシーで拒否をトリガーすると、ポリシー エンジンは、これらのポリシーで構成された拒否メッセージを結合してから、ユーザーに応答を返します。次の動作が適用されます。
- 拒否判定のポリシーからの拒否メッセージは、空白行で区切られてまとめて表示されます。
- 重複するメッセージは 1 回表示されます。
- 一部のファイアリング ポリシーに拒否メッセージが構成され、他のポリシーに構成されていない場合、一般的な行「このリクエストは別のビジネス ポリシーにより拒否されました」が追加され、拒否メッセージのないポリシーをカバーします。
- リクエストごとに最大 5 件の拒否メッセージが表示されます。それ以上のメッセージは省略されます。
ドライラン モードの有効化
ドライラン モード(DRY_RUN)を有効にできます。ドライランは、ポリシーを適用せずに評価できる監査専用モードまたはシミュレーション モードです。このモードでは、Policy Engine はすべてのツール呼び出しを制約に照らして評価し、判定をログに記録しますが、アクションをブロックすることはありません。これにより、適用を有効にする前に制約をテストして検証できます。
ドライラン モードを有効にするには、認可拡張機能のメタデータに sgpEnforcementMode: DRY_RUN を追加します。
curl -X PATCH \
"https://networkservices.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAME?updateMask=metadata" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"sgpEnforcementMode": "DRY_RUN"
}
}'
ドライラン モードの場合:
- 判定に関係なく、すべてのツール呼び出しが許可されます。
- 判定と理由は審査のために記録されます。
- ログを確認して、ブロックされるアクションを特定し、自動適用モードに切り替える前に制約を調整できます。
通常の自動適用モードに戻すには、メタデータから sgpEnforcementMode を削除します。
curl -X PATCH \
"https://networkservices.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAME?updateMask=metadata" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"metadata": {}
}'
ポリシー評価ログを表示する
Policy Engine は、各評価の構造化ログエントリをプロジェクトの Cloud Logging に書き込みます。エントリには、全体的な verdict と、各ツールまたはアクションの verdict と rationale を含む evaluations 配列が記録されます。
- コンソールから: [ポリシー] ページで、ポリシーを選択します。
- [詳細] パネルの [オブザーバビリティ] セクションで、[Cloud Logging] > [詳細を表示] をクリックします。
ログ エクスプローラの場合: クエリ ボックスに
semantic-governance-policyと入力するか、次の明示的なフィルタを使用します。logName="projects/PROJECT_ID/logs/semantic-governance-policy"
次の例は、ログエントリの例です。
{
"jsonPayload": {
"token_usage": 1859,
"verdict": "ALLOW",
"token_usage_breakdown": {"output": 43, "thinking": 0, "input": 1816, "total": 1859},
"evaluations": [
{
"toolName": "process_refund",
"verdict": "ALLOW",
"actionName": "process_refund",
"rationale": "The action is aligned with the user's request to process a refund and complies with the constraints regarding order ID length."
}
]
},
"resource": {"type": "global", "labels": {"project_id": "PROJECT_NUMBER"}},
"logName": "projects/PROJECT_ID/logs/semantic-governance-policy"
}
主なフィールド:
verdict: 全体的な決定(ALLOWまたはDENY)。evaluations[].rationale: Policy Engine が各ツールまたはアクションに対して特定の判定に達した理由。token_usage: 評価で使用されたモデルトークンの数。
リクエスト トレースを有効にする
ポリシー エンジンは、評価するリクエストごとにトレースをプロジェクトの Cloud Trace にエクスポートします。これにより、リクエストごとのレイテンシとポリシーの適用を検査できます。これらのトレースを受信するには、Cloud Trace API を有効にして、トレースを書き込む権限を Vertex AI サービス アカウント(P4SA)に付与します。
Cloud Trace API を有効にします。
gcloud services enable cloudtrace.googleapis.com \ --project=PROJECT_IDVertex AI サービス アカウントに Cloud Trace エージェント ロール(
roles/cloudtrace.agent)を付与します。このロールは、トレース書き込み権限(cloudtrace.traces.patch)のみを付与します。export PROJECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
両方を構成したら、エージェントを介してリクエストを送信し、プロジェクトの Trace エクスプローラでトレースを表示します。
ポリシー構成を管理する
セマンティック ガバナンス ポリシーの実行後、個々のポリシーを削除するか、Agent Gateway からエンジンを切断できます。
ポリシーを削除する
セマンティック ガバナンス ポリシーの統合全体に影響を与えずに個々のポリシーを削除するには:
gcloud beta ai semantic-governance-policies delete POLICY_ID \
--location=LOCATION \
--project=PROJECT_ID
または、次の curl コマンドを使用します。
curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicies/POLICY_ID" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
Policy Engine のプロビジョニングを解除する
REST
curl -X POST "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine:deprovision" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{}'
gcloud
gcloud beta ai semantic-governance-policy-engine deprovision \
--location=LOCATION \
--project=PROJECT_ID
Policy Engine を Agent Gateway から切断する
ポリシー エンジンを Agent Gateway から切断すると、制約に対してツール呼び出しが評価されなくなります。
セマンティック ガバナンス ポリシーの適用をエージェント ゲートウェイにバインドする認可ポリシーを削除します。
gcloud network-security authz-policies delete AUTHZ_POLICY_NAME \
--location=LOCATION \
--project=PROJECT_ID
後でポリシー エンジンを再接続するには、ポリシー エンジンを Agent Gateway に接続するの説明に従って認可ポリシーを再作成します。
(省略可)認可拡張機能を削除する
セットアップ時に作成された認可拡張機能を削除します。
gcloud network-services authz-extensions delete AUTHZ_EXTENSION_NAME \
--location=LOCATION \
--project=PROJECT_ID
(省略可)顧客管理のリソースをクリーンアップする
エンジンのプロビジョニング解除では、Google が管理するバッキング リソースのみが削除されます。設定時に独自のプロジェクトで作成したリソースが不要になった場合は、手動で削除する必要があります。
限定公開 DNS ゾーンを削除する
gcloud dns managed-zones delete DNS_ZONE_NAME \
--project=PROJECT_ID
サブネットと VPC を削除する
gcloud compute networks subnets delete SUBNET_NAME \
--region=LOCATION \
--project=PROJECT_ID
gcloud compute networks delete NETWORK_NAME \
--project=PROJECT_ID
(省略可)IAM バインディングを削除する
Vertex AI サービス アカウント(P4SA)に権限を付与した場合は、次の手順で削除できます。
export PROJECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/compute.networkAdmin"
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/dns.admin"
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/cloudtrace.agent"
(省略可)Cloud Trace API を無効にする
gcloud services disable cloudtrace.googleapis.com --project=PROJECT_ID
(省略可)Agent Platform API を無効にする
gcloud services disable aiplatform.googleapis.com --project=PROJECT_ID
ポリシーの適用をデバッグする
| 症状 | 考えられる原因 | 確認ポイント |
|---|---|---|
| ツール呼び出しが許可されたが、ブロックが想定されていた | ポリシーがスコープとエージェントに一致しないか、制約が緩すぎる | 評価ログで、ポリシーが一致したことを確認し、判定を読み取ります。NLC を調整します。 |
| ツール呼び出しが拒否されたが、許可されるはずである | 制約が厳しすぎるか、ルールが競合している | ログの rationale を読み取り、NLC を調整して、ドライラン モードで反復処理を行う |
| 評決なし | エンジンがアクティブでないか、ゲートウェイがバインドされていない | エンジン state が ACTIVE で、認可ポリシー、拡張機能、またはその両方が存在することを確認する |
予期しない判定をデバッグするには:
- ポリシー評価ログで判定と根拠を確認します。
- リクエストをトレースする - リクエスト トレースを有効にするをご覧ください。
- ドライラン モードで変更を安全に検証します。
- デプロイを確認する - エンジンの状態が
ACTIVEで、ゲートウェイ バインディングが確立されている。
エラーカタログ
次の表に、セマンティック ガバナンス ポリシーの管理時に発生する可能性のあるエラーと、その解決手順を示します。
| エラー名 | 説明 | 提案された操作 |
|---|---|---|
SEMANTIC_GOVERNANCE_POLICY_ALREADY_EXISTS |
指定したポリシー ID は、このプロジェクトとロケーションにすでに存在します。 | 一意のポリシー ID を使用するか、PATCH リクエストを使用して既存のポリシーを更新します。 |
SEMANTIC_GOVERNANCE_POLICY_ETAG_MISMATCH |
リクエストの etag がリソースの現在のバージョンと一致しません。 | 更新を試みる前に、ポリシーの最新バージョンを取得して現在の ETag を取得します。 |
SEMANTIC_GOVERNANCE_POLICY_AGENT_REQUIRED |
リクエストに agent フィールドがありません。 |
このポリシーを適用するエージェントのリソース名を指定します。 |
SEMANTIC_GOVERNANCE_POLICY_CONSTRAINT_REQUIRED |
natural_language_constraint フィールドがありません。 |
制約フィールドにビジネスルールを平易な英語で入力します。 |
SEMANTIC_GOVERNANCE_POLICY_AGENT_INVALID_NAME |
エージェントのリソース名が不正な形式です。 | 形式 projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID を確認します。 |
SEMANTIC_GOVERNANCE_POLICY_AGENT_UNSUPPORTED_REGION |
エージェントに指定されたリージョンは、エージェント レジストリでサポートされていません。 | Agent Registry とセマンティック ガバナンス ポリシーの両方でサポートされているリージョンを使用します。 |
SEMANTIC_GOVERNANCE_POLICY_AGENT_NOT_FOUND |
指定されたエージェントが見つかりませんでした。 | 指定されたプロジェクトとロケーションのエージェント レジストリにエージェントが存在することを確認します。 |
SEMANTIC_GOVERNANCE_POLICY_AGENT_NOT_CONFIGURED |
エージェントに有効な RuntimeIdentity がありません。 |
ポリシーを適用する前に、有効なランタイム ID を使用してエージェントを構成します。 |
SEMANTIC_GOVERNANCE_POLICY_MCP_SERVER_NOT_FOUND |
指定された MCP サーバーが見つかりませんでした。 | MCP サーバーがプロジェクトの Agent Registry に登録されていることを確認します。 |
SEMANTIC_GOVERNANCE_POLICY_MCP_SERVER_INVALID_NAME |
MCP サーバーのリソース名が不正な形式です。 | 形式 projects/PROJECT_ID/locations/LOCATION/mcpServers/SERVER_ID を確認します。 |
SEMANTIC_GOVERNANCE_POLICY_MCP_SERVER_UNSUPPORTED_REGION |
MCP サーバーに指定されたリージョンはサポートされていません。 | MCP サーバーでサポート対象の地域を使用します。 |
SEMANTIC_GOVERNANCE_POLICY_REGISTRY_DENIED |
権限がないため、システムはエージェント レジストリをクエリできません。 | Agent Registry API を有効にして、アカウントに agentregistry.viewer ロールがあることを確認します。 |
SEMANTIC_GOVERNANCE_POLICY_ENGINE_NOT_ENABLED_IN_REGION |
リクエストされたリージョンでポリシー エンジンがアクティブになっていません。 | プロビジョニングと有効化の手順に沿って、リージョンでエンジンを有効にします。 |
SEMANTIC_GOVERNANCE_POLICY_ENGINE_SERVICE_NOT_AVAILABLE_IN_LOCATION |
セマンティック ガバナンス ポリシー エンジン サービスは、リクエストされたロケーションでは使用できません。 | セマンティック ガバナンス ポリシー エンジン サービスで、サポートされているロケーションのいずれかを使用します。 |
次のステップ
- Vertex AI gcloud CLI コマンドの詳細を確認する。
- ログ エクスプローラでポリシーの判定をモニタリングします。