您可以建立 Identity and Access Management (IAM) 統一存取政策 (UAP),協助安全控管代理主體與目的地資源之間的通訊,例如目的地代理、MCP 伺服器和端點。這些政策會繫結至含有 Agent Gateway 執行個體的專案。
Agent Gateway 會使用 Identity-Aware Proxy (IAP) 評估及強制執行 UAP。
IAP 也與情境感知存取權整合,提供端對端代理程式身分驗證和授權。
如要為 Agent Gateway 設定 UAP,請參閱「設定 IAM UAP」。
您也可以在代理程式身分上建立主體存取邊界 (PAB)。Agent Gateway 可使用 IAP 強制執行主體存取邊界政策。
啟用 Agent Gateway
如要使用代理功能通訊政策,請務必設定 Agent Gateway。
建議您在預備環境中,以試執行模式 (DRY_RUN) 設定 Agent Gateway,確認政策是否正常運作。
確認政策運作正常後,即可更新 Agent Gateway 設定,將強制執行模式設為 ENFORCE。在這個模式下,系統會禁止違反政策的代理通訊,並封鎖與資源的通訊。
UAP 總覽
UAP 可控管一或多個代理主體是否能存取一或多個目的地資源。UAP 支援單一政策中的多項規則,可擴充 IAM 政策模型。與 IAM 允許和拒絕政策不同,UAP 中的每項規則都可以同時具有允許和拒絕效果。進一步瞭解 IAM 政策類型。
規則也包含以一般運算語言 (CEL) 表示的條件。條件是控管閘道後資源存取權的主要機制。透過 Agent Gateway 和 IAP 強制執行 UAP,可嚴格控管企業部署的代理行為。您可以在單一政策中,表示現實世界中精細的代理程式控管用途。
一般政策至少包含兩項不同的規則:
- 允許規則:允許規則具有允許效果,可讓代理主體存取特定安全作業,例如對工具執行讀取作業,以擷取追蹤資料或查看登錄項目。
- 拒絕規則:拒絕規則具有拒絕效果,可禁止代理執行非預期動作,例如對重要資源執行未經指令的刪除或更新作業。
舉例來說,假設自動化客戶服務專員需要與內部工具互動,而這些工具具有客戶資料庫的特殊存取權。管理員會透過 IAP 設定 Agent Gateway,強制執行 IAM UAP。管理員可以設定 UAP,其中包含授權代理主體讀取支援單的允許規則,以及禁止代理主體刪除或更新資料庫記錄的拒絕規則。
如果 UAP 同時包含允許和拒絕規則,機構就能直接在基礎雲端基礎架構上部署單一企業法規遵循政策,限制代理程式行為。
最佳做法
設定代理程式輸出政策時,請遵循下列最佳做法:
- 使用模擬測試模式:先在模擬測試模式下部署新政策或修改後的政策,確保政策運作正常,不會封鎖作用中代理程式的流量。
- 落實最小權限原則:只授予必要的權限。在 CEL 條件中使用特定工具名稱或路徑,而非萬用字元。
- 使用拒絕規則做為安全防護措施:使用明確的拒絕規則,實作重要的安全防護措施,例如封鎖生產端點上的破壞性工具。使用拒絕規則做為防護措施非常有效,因為拒絕規則會覆寫允許規則。
- 定期執行稽核:定期檢查 Cloud 稽核記錄 記錄和政策設定,確認這些項目符合貴機構的安全政策。
UAP 元件
UAP 包含一或多個規則。規則包含下列元件:
代理主體
在 IAM UAP 中,您可以定義一或多個代理主體。代理主體是您授予存取權的成員。您可以依據代理身分指定代理,也就是啟動與資源通訊的代理身分。如要進一步瞭解不同類型的代理程式如何接收身分,請參閱「代理程式身分」。代理身分由主體 ID代表,其中包含代理的 SPIFFE 格式身分 (例如 principal://agents.global.org-...)。
您可以指定個別代理程式身分陣列或主體集陣列。
系統會在各項服務 (例如 Agent Runtime (推論引擎)、Gemini Enterprise (Discovery Engine) 和設定代理程式身分的 Cloud Run 服務) 中,佈建內建代理程式身分。 Cloud de Confiance 這些代理主體的形式為 principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER,其中 ID 代表代理主體在代管服務上的資源路徑。您也可以使用 Workload Identity 聯盟主體 ID 指定代理程式。
規則效用
規則作用會定義規則是否允許代理主體存取資源。
目的地資源
IAM UAP 可管理代理主體對目的地資源的存取權。目的地資源是指代理程式主體嘗試存取的資源。目的地資源是在規則條件中指定。目的地資源可以是已註冊的資源,也可以是未註冊的資源。
已註冊的資源
已註冊的資源是指在 Agent Registry 登錄中註冊的資源。
已註冊的資源包括:
- 登錄:專案中的整個代理程式登錄。
- MCP 伺服器:在代理程式登錄中註冊的 MCP 伺服器。
- 代理:在代理註冊表中註冊的代理。您可以透過代理程式 ID 個別指定代理程式。主體組合 ID 可指定一組代理。
- 端點:在代理程式登錄檔中註冊的端點。
您可以在 Agent Registry 註冊個別服務。如果您將代理程式登錄項目區域化,且規則會管理已登錄資源的存取權,則 UAP 只會套用至登錄項目區域中的資源。
未註冊的資源
未註冊的資源是指未在代理程式登錄中註冊的資源。如要允許或拒絕存取 UAP 規則中未註冊的資源,您必須使用包含未註冊主機和路徑屬性的一般運算語言 (CEL) 運算式,在規則條件中指定未註冊的資源。
條件
在 UAP 規則中,您可以使用 conditions 區塊中的一般運算語言 (CEL) 運算式,定義目標資源範圍和精細存取條件:
目標資源範圍:識別規則控管哪些目的地資源。在 JSON 格式的政策檔案中,您可以指定目的地屬性,例如
destination.agent_registry.mcp_server.name或destination.unregistered.host。在 Cloud de Confiance 控制台中,選取「目標資源」下方的目的地,系統會自動將這些資源條件新增至規則的條件運算式。存取條件:使用布林運算式判斷規則效果的適用時間和限制條件。舉例來說,您可以使用 UAP CEL 屬性,根據工具名稱、唯讀狀態、HTTP 方法或路徑前置字串限制存取權。只有在整個 CEL 運算式評估結果為
true時,規則效果 (允許或拒絕) 才會生效。
在 gcloud CLI 和 REST API 中,您可以在規則定義的 conditions 欄位中指定這些 CEL 運算式。
在 Cloud de Confiance 控制台中,您可以使用條件建構工具設定標準規則,或直接在條件編輯器中編寫自訂 CEL 運算式。
權限
在採用 IAM UAP 的 IAP V2 中,系統一律會對目的地資源授予 iap.googleapis.com/resources.egressViaIAP 權限。在 gcloud CLI 和 REST API 中,您可以在政策檔案的 operation.permissions 欄位中指定權限。
建立政策的選項
您可以在 Cloud de Confiance 控制台的「政策」頁面中建立 IAM UAP。建議您只建立使用者存取權政策 (IAM v3 政策)。
在 gcloud CLI 和 REST API 中,您都可以先建立 JSON 格式的檔案,然後設定 IAM UAP。建議您只建立 UAP。
端對端驗證和授權
IAP 和情境感知存取權會使用下列通訊協定,提供預設的端對端代理程式身分驗證和授權:
- 相互傳輸層安全標準 (mTLS)
- 示範擁有權證明 (DPoP)
代理身分會佈建 X.509 憑證和與憑證綁定的權杖。IAP 會強制代理身分使用相互傳輸層安全性 (mTLS) 向 Agent Gateway 進行驗證。當閘道允許代理程式輸出及存取 Cloud de Confiance API、MCP 伺服器、其他代理程式和端點時,代理程式會嘗試存取 mTLS 邊界外部的內容。為保護通訊安全,情境感知存取權會強制執行 Google 管理的情境感知存取權政策。這項政策規定 DPoP 驗證與 Agent Identity 綁定的憑證繫結權杖。如要進一步瞭解情境感知存取權如何使用 mTLS 和 DPoP,請參閱「情境感知存取權代理程式安全性」。
UAP CEL 屬性
您可以在 UAP 中使用條件運算式定義條件。運算式可以包含多個子運算式。您在每個關係子條件中使用的目的地資源類型,會決定可使用的屬性。
舉例來說,在下列條件中,子運算式 destination.unregistered.path.startsWith('/v1/statements') 的資源類型是未註冊的目的地,屬性是 destination.unregistered.path,而 startsWith() 是 CEL 函式。
destination.unregistered.host == 'finance.example.com' &&
destination.unregistered.path.startsWith('/v1/statements')
下表列出各資源類型可用的屬性:
| 目的地資源類型 | 屬性 | 詳細資料 | ||||||
|---|---|---|---|---|---|---|---|---|
Agent Registry |
destination.is_registered |
|
||||||
destination.agent_registry.resource_type |
|
|||||||
destination.agent_registry.location |
|
|||||||
destination.agent_registry.project_id |
|
|||||||
代理 |
destination.agent_registry.agent.name |
|
||||||
MCP 伺服器 |
destination.agent_registry.mcp_server.name |
|
||||||
destination.agent_registry.mcp_server.method |
|
|||||||
destination.agent_registry.mcp_server.tool.name |
|
|||||||
destination.agent_registry.mcp_server.tool.annotations.read_only_hint
|
|
|||||||
destination.agent_registry.mcp_server.tool.annotations.destructive_hint
|
|
|||||||
destination.agent_registry.mcp_server.tool.annotations.idempotent_hint
|
|
|||||||
destination.agent_registry.mcp_server.tool.annotations.open_world_hint
|
|
|||||||
destination.agent_registry.mcp_server.prompt.name |
|
|||||||
destination.agent_registry.mcp_server.resource.name |
|
|||||||
端點 |
destination.agent_registry.endpoint.name |
|
||||||
未註冊目的地 |
destination.unregistered.host |
|
||||||
destination.unregistered.path |
|
|||||||
destination.unregistered.method |
|
後續步驟
程式碼研究室:確保跨雲端代理式 AI 應用程式安全
請參閱「Securing Cross-Cloud Agentic AI Applications」程式碼研究室,瞭解如何保護代理式應用程式。