IAM 統一存取政策總覽

您可以建立 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-...)。

您可以指定個別代理身分陣列或主體集陣列。

內建代理身分會在 Google Cloud 服務中佈建,例如 Agent Runtime (推論引擎)、Gemini Enterprise (Discovery Engine),以及設定代理身分的 Cloud Run 服務。這些代理主體的格式為 principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER,其中 ID 代表代理在託管服務上的資源路徑。您也可以使用 Workload Identity Federation 主體 ID 指定代理。

規則效用

規則作用會定義規則是否允許或禁止代理主體存取資源。

目的地資源

IAM UAP 可管理代理主體對目的地資源的存取權。目的地資源是指代理主體嘗試存取的資源。目的地資源是在規則條件中指定。目的地資源可以是已註冊資源或未註冊資源。

已註冊的資源

已註冊資源是指在 Agent Registry 註冊資料庫中註冊的資源。

註冊的資源包括:

  • 儲存庫:專案中的整個代理儲存庫。
  • MCP 伺服器:在代理程式註冊資料庫中註冊的 MCP 伺服器。
  • 代理:在代理登錄檔中註冊的代理。您可以透過代理身分個別指定代理。您可以使用主體集 ID 指定一組代理。
  • 端點:在代理程式登錄檔中註冊的端點。

個別服務可在 Agent Registry 註冊。如果您將代理程式登錄檔區域化,且規則會管理已註冊資源的存取權,則 UAP 只會套用至登錄檔區域中的資源。

未註冊的資源

未註冊的資源是指未在代理程式登錄檔中註冊的資源。如要在 UAP 規則中授予或拒絕未註冊資源的存取權,您必須使用包含未註冊主機和路徑屬性的一般運算語言 (CEL) 運算式,在規則條件中指定未註冊資源。

條件

在 UAP 規則中,您可以使用 conditions 區塊中的一般運算語言 (CEL) 運算式,定義目標資源範圍和精細存取條件:

  • 目標資源範圍:指出規則控管「哪些」目的地資源。在 JSON 格式的政策檔案中,您需要指定目的地屬性,例如 destination.agent_registry.mcp_server.name 或 destination.unregistered.host。在 Google Cloud 控制台中,選取「Target resources」(目標資源) 下方的目的地,系統會自動將這些資源條件新增至規則的條件運算式。

  • 存取條件:使用布林運算式,決定規則效果的套用時機和限制條件。例如,您可以使用 UAP CEL 屬性,根據工具名稱、唯讀狀態、HTTP 方法或路徑前置字串限制存取權。只有在整個 CEL 運算式的評估結果為 true 時,規則效果 (允許或拒絕) 才會生效。

在 gcloud CLI 和 REST API 中,您可以在規則定義的 conditions 欄位中指定這些 CEL 運算式。

在 Google Cloud 控制台中,您可以使用條件建構工具設定標準規則,或直接在條件編輯器中編寫自訂 CEL 運算式。

權限

在採用 IAM UAP 的 IAP V2 中,目的地資源一律會獲得 iap.googleapis.com/resources.egressViaIAP 權限。在 gcloud CLI 和 REST API 中,您可以在政策檔案的 operation.permissions 欄位中指定權限。

政策建立選項

在 Google Cloud 控制台的「Policies」(政策) 頁面中,您可以建立 IAM UAP。建議您只建立 UAP (IAM v3 政策)。

在 gcloud CLI 和 REST API 中,您可以先建立 JSON 格式的檔案,再設定 IAM UAP。建議您只建立 UAP。

端對端驗證與授權

IAP 和情境感知存取權會使用下列通訊協定,提供預設的端對端代理身分驗證和授權:

  • 雙向傳輸層安全標準 (mTLS)
  • Demonstrating Proof of Possession (DPoP)

代理身分會透過 X.509 憑證和憑證繫結權杖佈建。IAP 會強制要求代理身分使用相互傳輸層安全性 (mTLS),向 Agent Gateway 進行驗證。當閘道允許代理程式輸出及存取 Google Cloud 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
值類型 布林值
支援的值 true、false
支援的操作 ==、!=
destination.agent_registry.resource_type
值類型 字串
支援的值 'AGENT'、'ENDPOINT'、'MCP_SERVER'、'SKILL'
支援的操作 ==、!=、in
destination.agent_registry.location
值類型 字串
支援的值 Google Cloud 位置 ID (例如 'global'、'us-central1')
支援的操作 ==、!=、in
destination.agent_registry.project_id
值類型 字串
支援的值 Google Cloud 專案 ID
支援的操作 ==、!=、in

代理

destination.agent_registry.agent.name
值類型 字串
支援的值 代理資源名稱 (projects/PROJECT_ID/locations/LOCATION/agents/AGENT_NAME)
支援的操作 ==、!=、in

MCP 伺服器

destination.agent_registry.mcp_server.name
值類型 字串
支援的值 MCP 伺服器資源名稱 (projects/PROJECT_ID/locations/LOCATION/mcpServers/MCP_SERVER_NAME)
支援的操作 ==、!=、in
destination.agent_registry.mcp_server.method
值類型 字串
支援的值 MCP 方法名稱 (例如 'tools'、'prompts'、'resources')
支援的操作 ==、!=、in
destination.agent_registry.mcp_server.tool.name
值類型 字串
支援的值 工具名稱 (例如 'search_code'、'execute')
支援的操作 ==、!=、in
destination.agent_registry.mcp_server.tool.annotations.read_only_hint
值類型 布林值
支援的值 true、false
支援的操作 ==、!=
destination.agent_registry.mcp_server.tool.annotations.destructive_hint
值類型 布林值
支援的值 true、false
支援的操作 ==、!=
destination.agent_registry.mcp_server.tool.annotations.idempotent_hint
值類型 布林值
支援的值 true、false
支援的操作 ==、!=
destination.agent_registry.mcp_server.tool.annotations.open_world_hint
值類型 布林值
支援的值 true、false
支援的操作 ==、!=
destination.agent_registry.mcp_server.prompt.name
值類型 字串
支援的值 提示名稱
支援的操作 ==、!=、in
destination.agent_registry.mcp_server.resource.name
值類型 字串
支援的值 資源名稱
支援的操作 ==、!=、in

端點

destination.agent_registry.endpoint.name
值類型 字串
支援的值 端點資源名稱 (projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_NAME)
支援的操作 ==、!=、in

未註冊的目的地

destination.unregistered.host
值類型 字串
支援的值 主機名稱 (例如 'google.com'、'example.com')
支援的操作 ==、!=、in、.startsWith()、.endsWith()、.contains()
destination.unregistered.path
值類型 字串
支援的值 要求路徑 (例如 '/admin'、'/api/v1')
支援的操作 ==、!=、in、.startsWith()、.endsWith()、.contains()
destination.unregistered.method
值類型 字串
支援的值 HTTP 方法 (例如 'get'、'post'、'put'、'delete')
支援的操作 ==、!=、in

後續步驟

程式碼實驗室

如要瞭解如何保護代理應用程式,請參閱「保護跨雲端代理式 AI 應用程式」程式碼實驗室。

總覽

概略瞭解 Agent Gateway。

指南

瞭解 Google Agent Platform 的安全控管機制。