代理程式身分總覽

Agent Identity 會根據 SPIFFE 標準,為每個代理提供經過嚴格驗證的加密身分。透過代理程式身分,代理程式可以安全地向 MCP 伺服器、雲端資源、端點和其他代理程式進行驗證,代表自己或使用者執行動作。代理身分會使用代理自己的憑證代理身分驗證管理員。您可以使用驗證管理工具建立及管理驗證供應商,這些供應商是專用設定,用於取得、管理及保護 API 金鑰、OAuth 用戶端 ID、OAuth 用戶端密鑰和委派的 OAuth 終端使用者權杖。

與服務帳戶不同,代理程式身分預設不會由多個工作負載共用,且無法模擬,也不允許開發人員產生長期有效的服務帳戶金鑰。為 Google Cloud產生的存取權杖會以加密方式繫結至代理程式專屬的 X.509 憑證,防止權杖遭竊。

將代理身分與代理閘道和 Gemini Enterprise 搭配使用時,授權管理員會加密使用者憑證 (例如 Gemini Enterprise 連接器佈建的憑證),並在閘道解密,確保代理永遠無法存取原始憑證。

下列服務支援代理程式身分:

驗證模式

如要使用各種工具和服務進行驗證,Agent Identity 支援多種驗證模型。代理程式使用的模型取決於目標資源提供的驗證方法,以及代理程式是自行授權還是代表使用者。

權限 驗證方式 目標資源 應用實例和解決方案
使用者委派的授權 OAuth 2.0 (三足式) (預先發布版) 外部工具和服務 當代理程式代表特定使用者執行動作時 (例如存取使用者的 Jira 工作或 GitHub 存放區)。您可以在代理程式身分驗證管理員中設定三足式 OAuth 驗證供應商,管理使用者同意聲明和權杖。詳情請參閱「使用三足式 OAuth 搭配驗證管理工具進行驗證」。
代理商的自有授權 雲端身分 (代理程式身分) Google Cloud 服務 當 Google Cloud 上代管的代理程式需要使用自己的身分存取其他 Google Cloud 服務時,詳情請參閱使用專員身分驗證
OAuth 2.0 (雙足式) (預覽版) 外部工具和服務 建議用於與支援 OAuth 的外部服務進行機器對機器驗證。您可以在 Agent Identity 驗證管理工具中設定雙足式 OAuth 驗證供應商,處理用戶端憑證和存取權杖。詳情請參閱「使用雙向 OAuth 搭配驗證管理工具進行驗證」。
API 金鑰 (預先發布版) 外部工具和服務 需要加密編譯金鑰或密碼才能驗證的外部服務。您可以在 Agent Identity 驗證管理工具中設定 API 金鑰驗證提供者,安全地儲存及管理金鑰。詳情請參閱「使用驗證管理工具,透過 API 金鑰進行驗證」。
HTTP 基本驗證 外部工具和服務 使用純文字密碼。我們不建議使用這個方法。您可以儲存密碼,方式與儲存 API 金鑰類似。詳情請參閱「使用 API 金鑰和驗證管理工具進行驗證」。

核心元件

代理程式身分包含多個重要元件,共同提供安全驗證和授權。

以 SPIFFE 為基礎的身分

系統會根據 SPIFFE 標準,為每個代理指派專屬身分字串或 SPIFFE ID。這個身分經過嚴格認證,與代理程式的生命週期相關聯,並直接對應至代理程式的資源 URI。

身分證件須符合以下格式:

spiffe://TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH

例如:

  • spiffe://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agent

在 IAM 允許政策中使用代理程式身分時,主體 ID 格式如下:

principal://TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH

範例:

  • Agent Platform Agent Engine: principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agent
  • Gemini Enterprise: principal://agents.global.org-123456789012.system.id.goog/resources/discoveryengine/projects/9876543210/locations/global/collections/default_collection/engines/my-test-agent

這些 ID 使用下列項目:

  • TRUST_DOMAIN:貴機構的信任網域 (例如 agents.global.org-123456789012.system.id.goog)。
  • SERVICE: Google Cloud 服務的簡稱 (例如 aiplatformdiscoveryengine)。
  • RESOURCE_PATH:代管代理程式的資源完整路徑。

由於代理程式本身就是主體,因此您可以直接將權限授予這個 ID,控管代理程式可存取的資源。

代理憑證

代理憑證會提供代理身分的加密證明。系統支援 X.509 憑證和 Google Cloud 存取權杖。系統會在代理程式上自動佈建及管理 X.509 憑證,以支援更強大的驗證機制。

代理身分驗證管理員

代理程式身分驗證管理員是憑證保險箱,可協助保護憑證。代理程式可使用 API 金鑰或 OAuth 用戶端 ID 和密鑰進行驗證,也可以透過 OAuth 委派,使用使用者存取權杖代表使用者驗證。在驗證管理員中,您可以設定驗證提供者,定義特定第三方應用程式的驗證類型和憑證。

代理程式身分驗證管理員的存取權由 IAM 管理,代理程式會使用自己的代理程式 SPIFFE ID 向驗證管理員進行驗證。所有使用者存取事件也都會歸因於代理程式的 SPIFFE ID,方便進行管理。

代理程式身分驗證管理員會自動取得 OAuth 憑證,例如開啟對話方塊,讓使用者登入及同意授權。此外,這項功能還可讓您查看使用者存取權,並撤銷存取權,確保使用者委派的權限受到更完善的控管。

安全性與管理

代理程式身分完全整合了 Google 的政策系統,例如 IAM、主體存取權界線 (PAB) 和 VPC Service Controls,可強化安全性和管理功能。此外,這項功能也整合了稽核記錄,確保責任歸屬,並在代理程式以自身身分或代表使用者執行動作時,提供清楚的稽核記錄。

  • 情境感知存取權:根據預設,Google 管理的情境感知存取權政策有助於保護代理程式身分憑證。除了 Agent Gateway 之外,這項政策還會驗證代理程式的存取權杖,強制執行可證明的擁有權證明 (DPoP)。這項政策也會強制使用 mTLS 存取代理閘道。確保憑證繫結權杖只能在預期的受信任執行階段環境中使用。
  • 身分與存取權管理整合:支援標準身分與存取權管理允許政策和拒絕政策。
  • 主體存取邊界 (PAB):無論其他權限為何,PAB 都會限制代理程式可存取的資源。
  • VPC Service Controls:支援在輸入和輸出規則中使用代理身分 (搶先版),允許存取受 service perimeter 保護的資源。

代理身分的運作方式

代理程式身分會透過工作流程驗證及授權代理程式動作,有助於提升安全性:

  1. 指派身分:部署代理程式時, Google Cloud會為代理程式指派專屬 SPIFFE 身分和 X.509 憑證。每個 X.509 憑證的效期為 24 小時,且系統會自動更新憑證,確保安全無虞。 Google Cloud
  2. 取得憑證:代理程式取得憑證的方法取決於要存取的內容。以下列舉幾個例子:
    • 存取 Google Cloud 服務:代理程式會要求繫結的存取權杖。這個權杖會以密碼編譯方式繫結至代理程式的專屬 X.509 憑證,防止權杖遭竊。詳情請參閱「安全性與控管」。
    • 存取外部工具:代理會使用代理身分驗證管理員,從驗證提供者擷取必要憑證 (例如 API 金鑰或 OAuth 權杖)。授權管理員同時支援使用者委派的授權代理程式本身的授權

代理身分的好處

與標準服務帳戶相比,代理身分可提升安全性。

  • 嚴密隔離:與服務帳戶不同,根據預設,代理程式身分不會由多個工作負載共用,且無法模擬,也不允許開發人員產生長期有效的服務帳戶金鑰。
  • 憑證安全:預設的情境感知存取權政策會讓繫結的權杖無法重播,有助於防範權杖遭竊和帳戶入侵。將代理程式身分與代理程式閘道和 Gemini Enterprise 搭配使用時,授權管理員會加密使用者憑證 (例如 Gemini Enterprise 連接器佈建的憑證),並在閘道解密,確保代理程式永遠無法存取原始憑證。
  • 最小權限做法:提供每個代理程式的身分,而非共用的服務帳戶,以避免代理程式擁有過多權限。
  • 減少摩擦:自動執行複雜的 OAuth 流程,並管理 API 金鑰,簡化工具整合作業。
  • 提升可觀測性:提供清楚的稽核記錄。如果服務專員代表使用者採取行動,記錄會顯示服務專員和使用者的身分。

限制

  • Cloud Storage 舊版 bucket 角色:您無法將舊版 bucket 角色 (例如 storage.legacyBucketReader) 授予代理程式身分。

後續步驟