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 評估用戶端到代理程式流量中的要求和回覆。您可以對兩個方向套用單一範本,或為每個方向設定不同範本。
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 流量中的要求和回覆。您可以對兩個方向套用單一範本,或為每個方向設定不同範本。
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) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
必要的角色
如要取得建立 Model Armor 範本所需的權限,請要求管理員授予您專案的 Model Armor 管理員 (roles/modelarmor.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
如要瞭解使用 Agent Gateway 所需的角色,請參閱 Agent Gateway 說明文件中的「必要角色」。
如要瞭解通過閘道的支援和不支援的酬載,請參閱本文的「支援和不支援的酬載」。
在閘道上設定 Model Armor
如要在閘道上設定 Model Armor,請按照下列步驟操作:
- 在要建立 Model Armor 範本的專案中啟用 Model Armor API。
在您打算新增閘道的相同區域中,建立一或多個 Model Armor 範本。輸入和輸出流量可使用相同範本。
記下範本名稱。如要在Google Cloud 控制台中複製範本名稱,請查看範本的詳細資料,然後按一下範本名稱旁的「複製到剪貼簿」圖示 。
在儲存 Model Armor 範本的相同區域中設定 Agent Gateway。針對「Client-to-Agent (ingress) gateway」,指定您為輸入流量建立的 Model Armor 範本。針對「Agent-to-Anywhere (egress) gateway」(代理程式至任何位置 (輸出) 閘道),指定您為輸出流量建立的 Model Armor 範本。這兩種流量流程可使用相同範本。
將必要的 IAM 角色授予適當的服務代理:
用戶端至代理 (輸入):授予 AI Platform Reasoning Engine 服務代理下列角色:
AI 代理所屬專案中的 Model Armor Callout User (
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) 和服務使用情形用戶 (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」。
- 在含有閘道的專案中,Model Armor Callout 使用者 (
如需授予角色的相關一般資訊,請參閱「授予單一身分與存取權管理角色」。
遮蓋要求和回應中的機密資料
您可以指示 Model Armor 從酬載中遮蓋機密資料,例如國民身分證字號和電話號碼。如要使用這項功能,請按照下列步驟操作:
在 Model Armor 範本中設定進階 Sensitive Data Protection 設定,並加入去識別化範本。
將 Model Armor 範本的強制執行類型設為
INSPECT_AND_BLOCK。
如果您使用 INSPECT_AND_BLOCK 強制執行類型,系統會發生下列其中一種情況:
如果酬載只違反 Sensitive Data Protection 偵測器,Model Armor 會根據進階 Sensitive Data Protection 設定和去識別化範本,遮蓋酬載。
如果酬載違反多個偵測器,Model Armor 不會執行編輯作業,而是封鎖整個酬載。
如果使用 INSPECT_ONLY 執行類型而非 INSPECT_AND_BLOCK,Model Armor 就不會修訂酬載。
無論強制執行類型是 INSPECT_ONLY 或 INSPECT_AND_BLOCK,Model Armor 記錄都會根據進階私密資料保護設定和去識別化範本進行修訂。
如需 Model Armor 偵測器 (也稱為篩選器) 的完整清單,請參閱 Model Armor 篩選器。
支援及不支援的酬載
本節列出 Model Armor 會清除的特定酬載。
用戶端至代理 (輸入) 流量
如果是使用 ADK 通訊協定的用戶端到代理 (傳入) 流量,Model Armor 只會清除使用 Agent Development Kit (ADK) 建構,且在 Agent Runtime 上執行的代理要求和回應。reasoningEngines.streamQuery
所有其他 ReasoningEngine 酬載和 ReasoningEngine 錯誤回應都不會傳送至 Model Armor。非 ADK 酬載 (例如 Langchain 酬載) 也不會傳送至 Model Armor。
代理至任意目的地 (輸出) 流量
對於「代理程式到任何位置」(輸出) 流量,系統支援下列酬載。
A2A 酬載
Model Armor 只會清除 A2A v1 通訊協定的下列酬載:
- 傳送訊息作業
- 代理商資訊卡
- 取得擴充代理資訊卡作業
- JSON-RPC 通訊協定繫結
- HTTP+JSON/REST 通訊協定繫結
Model Armor 允許下列 A2A 酬載,無需經過清理:
- A2A v1 之前的版本中的酬載
SendStreamingMessageGetTaskListTasksCancelTaskSubscribeToTask- CRUD
方法
位於
TaskPushNotificationConfig - 使用 A2A gRPC 通訊協定繫結 (線路上的 protobuf) 的酬載
- A2A 錯誤酬載
MCP 酬載
Model Armor 只會清理下列 MCP 酬載:
tools/call要求和回應prompts/get要求和回應- MCP 工具執行錯誤 (惡意 MCP 工具作者的提示詞注入目標)
Model Armor 允許下列未經過清理的酬載:
tools/listresources/*notifications/*- 適用於 MCP 的可串流 HTTP/SSE
- MCP 通訊協定錯誤 (例如工具執行錯誤以外的所有錯誤)
外部 LLM 酬載
Model Armor 只會清除 OpenAI API 通訊協定 (輸出) 的下列酬載,包括 openai.com 上的 GPT 模型,以及透過 OpenAI API 相容 LLM 伺服器 (例如 vLLM) 的任何其他模型。未列於此處的酬載可直接使用,不必經過清理。
- 聊天完成:建立、刪除、取得、列出及更新 (僅限非串流變體)
- 取得即時通訊訊息
- 回應: 建立、取得及刪除 (僅限非串流變體)
- OpenAI API 錯誤 (包括 vLLM 的變體)
- 舊版完成次數
- 舊版助理: 建立、刪除、列出、修改及擷取
- 舊版訊息: 建立、刪除、列出、修改及擷取
- 舊版執行緒: 建立、刪除、修改及擷取
- 嵌入: 建立
支援的文件
Model Armor 可以篩選傳送給代理程式的檔案。如要瞭解支援的檔案類型和大小,請參閱「文件篩選」。
配額與系統限制
配額會用於存放 Model Armor 範本的專案。如果閘道位於其他專案,閘道專案也會消耗 ExternalProcess 配額。
如要進一步瞭解搭配使用 Model Armor 與其他服務時的配額,請參閱「管理配額」。
如要瞭解 Model Armor 配額和系統限制的一般資訊 (包括輸入大小和權杖限制),請參閱 Model Armor 說明文件中的「配額和系統限制」。