智能体身份基于 SPIFFE 标准为每个智能体提供经过强认证的加密身份。借助代理身份,您的代理可以安全地向 MCP 服务器、云资源、端点和其他代理进行身份验证,无论是代表自身还是代表最终用户。代理身份使用代理自己的凭据和代理身份身份验证管理器。您可以使用身份验证管理器创建和管理身份验证提供程序,这些提供程序是用于获取、管理和保护 API 密钥、OAuth 客户端 ID、OAuth 客户端密钥和委托的最终用户 OAuth 令牌的特定配置。
与服务账号不同,代理身份默认情况下不会被多个工作负载共享,无法被模拟,并且不允许开发者生成长期有效的服务账号密钥。为 Google Cloud生成的访问令牌以加密方式绑定到代理的唯一 X.509 证书,以防止令牌被盗。
将代理身份与代理网关和 Gemini Enterprise 搭配使用时,最终用户凭据(例如由 Gemini Enterprise 连接器预配的凭据)会由身份验证管理器加密,并在网关处解密,从而确保代理永远无法访问原始凭据。
以下服务支持代理身份:
- Gemini Enterprise Agent Platform Runtime(Agent Runtime)
- Gemini Enterprise
身份验证模型
为了通过各种工具和服务进行身份验证,代理身份支持多种身份验证模型。代理使用的模型取决于目标资源提供的身份验证方法,以及代理是自行授权还是代表最终用户授权。
| 职权 | 身份验证方法 | 目标资源 | 使用情形和解决方案 |
|---|---|---|---|
| 用户委托的权限 | OAuth 2.0(三方模式)(预览版) | 外部工具和服务 | 当代理代表特定用户执行操作时(例如,访问用户的 Jira 任务或 GitHub 代码库)。您可以在代理身份验证管理器中配置三方模式 OAuth 身份验证提供方,以管理用户同意情况和令牌。如需了解详情,请参阅使用三方 OAuth 和身份验证管理器进行身份验证。 |
| 代理的自有权限 | 基于云的身份(代理身份) | Google Cloud 服务 | 当托管在 Google Cloud 上的代理需要使用自己的身份访问其他 Google Cloud 服务时。如需了解详情,请参阅使用代理的自有身份进行身份验证。 |
| OAuth 2.0(双向)(预览版) | 外部工具和服务 | 建议用于与支持 OAuth 的外部服务进行机器对机器身份验证。您可以在代理身份验证管理器中配置双向 OAuth 身份验证提供程序,以处理客户端凭据和访问令牌。如需了解详情,请参阅使用双腿 OAuth 和身份验证管理器进行身份验证。 | |
| API 密钥(预览版) | 外部工具和服务 | 需要使用加密密钥或密码进行身份验证的外部服务。您可以在代理身份验证管理器中配置 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 允许政策中使用代理身份时,主账号标识符采用以下格式:
principal://TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH
示例:
- Vertex AI 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
标识符使用以下内容:
TRUST_DOMAIN:您组织的信任网域(例如agents.global.org-123456789012.system.id.goog)。SERVICE: Google Cloud 服务的简称(例如aiplatform或discoveryengine)。RESOURCE_PATH:托管代理的资源的完整路径。
由于代理本身就是正文,因此您可以直接向此标识符授予权限,以控制代理可以访问哪些资源。
智能体凭据
代理凭据可提供代理身份的加密证明。系统支持 X.509 证书和 Google Cloud 访问令牌。系统会在代理上自动预配和管理 X.509 证书,以帮助支持更强的身份验证。
Agent Identity Auth Manager
Agent Identity Auth Manager 是一种凭据保险库,旨在帮助保护凭据。它允许客服人员使用 API 密钥或 OAuth 客户端 ID 和密钥进行身份验证,也可以通过 OAuth 委托使用最终用户访问令牌代表用户进行身份验证。在身份验证管理器中,您可以配置身份验证提供方,以定义特定第三方应用的身份验证类型和凭据。
对 Agent Identity Auth Manager 的访问权限受 IAM 约束,并且代理使用自己的代理 SPIFFE ID 向身份验证管理器进行身份验证。所有最终用户访问事件也可归因于代理的 SPIFFE ID,从而实现轻松治理。
代理身份验证管理器可自动获取 OAuth 凭据,例如打开对话框以供用户登录和同意。它还可让您了解最终用户的访问权限,并允许撤消访问权限,从而更好地管理用户委托的权限。
安全和治理
代理身份与 Google 的政策系统(例如 IAM、Principal Access Boundary (PAB) 和 VPC Service Controls)完全集成,从而增强了安全性和治理能力。它还与审核日志记录功能集成,以确保责任明确,并在代理以自身身份行事以及代表最终用户行事时提供清晰的审核日志。
- 情境感知访问权限:默认情况下,Google 管理的情境感知访问权限政策有助于保护代理身份凭据。除了代理网关之外,该政策还通过对代理的访问令牌进行身份验证来强制执行可证明的持有证明 (DPoP)。该政策还强制要求使用 mTLS 来访问代理网关。这可确保与证书绑定的令牌只能从其预期的可信运行时环境中使用。
- IAM 集成:支持标准 IAM 允许政策和拒绝政策。
- 主账号访问权限边界 (PAB):PAB 会限制代理可访问的资源,无论其他权限如何。
- VPC Service Controls:支持在入站和出站规则中使用代理身份(预览版),以允许访问受服务边界保护的资源。
代理身份的工作原理
代理身份通过旨在帮助增强安全性的工作流来验证和授权代理操作:
- 身份分配:部署代理时, Google Cloud会为其分配唯一的 SPIFFE 身份和 X.509 证书。每个 X.509 证书的有效期为 24 小时,并且 Google Cloud会自动保持最新状态,以确保安全性。
- 凭据获取:智能体获取凭据的方法取决于它们尝试访问的内容。以下是一些示例:
- 访问 Google Cloud 服务:代理请求绑定访问令牌。此令牌以加密方式绑定到代理的唯一 X.509 证书,以防止令牌被盗。如需了解详情,请参阅安全和治理。
- 访问外部工具:智能体使用代理身份验证管理器从身份验证提供程序检索所需的凭据(例如 API 密钥或 OAuth 令牌)。身份验证管理器同时支持用户委托的权限和代理自己的权限。
代理身份的优势
与标准服务账号相比,代理身份可提高安全性。
- 强隔离:与服务账号不同,代理身份默认情况下不会被多个工作负载共享,无法被模拟,并且不允许开发者生成长期有效的服务账号密钥。
- 凭据安全性:默认的情境感知访问权限政策使绑定令牌无法重放,有助于防范令牌盗窃和账户接管(攻击)。将代理身份与代理网关和 Gemini Enterprise 搭配使用时,最终用户凭据(例如由 Gemini Enterprise 连接器预配的凭据)会由身份验证管理器加密,并在网关处解密,从而确保代理永远无法访问原始凭据。
- 最小权限方法:提供每个代理的身份,而不是共享服务账号,以消除权限过高的代理。
- 减少摩擦:自动执行复杂的 OAuth 流程并管理 API 密钥,从而简化工具集成。
- 提升可观测性:提供清晰的审核日志。当代理代表用户执行操作时,日志会同时显示代理和用户的身份。
限制
- Cloud Storage 旧版存储桶角色:您无法向代理身份授予旧版存储桶角色(例如
storage.legacyBucketReader)。
后续步骤
- 详细了解如何将代理身份与 Vertex AI Agent Engine 搭配使用。
- 详细了解如何管理代理。