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