在云自动化和多云策略快速发展的背景下,敏感数据(特别是凭证)的安全处理已成为首要关注的问题。传统的存储长期凭证的方法(无论是在配置文件、CI/CD 管道还是专用秘密管理器中)会带来显著的运营开销,更关键的是会使组织面临更高的安全风险。
引入联合身份凭证——一种现代、强大的替代方案,允许工作负载使用受信任的身份提供者颁发的临时令牌进行身份验证。这种方法消除了持久秘密存储的需求,从根本上改变了云自动化的安全方式。
本文探讨了联合身份在两个领先云平台(微软 Entra ID(以前的 Azure AD)和谷歌云平台(GCP))中的机制,强调了其对云自动化的好处。
类似的策略也可以通过AWS 中的 IAM角色无处不在或与服务账户 IAM 角色(IRSA)的 OIDC 集成在 AWS 中应用。
什么是联合身份凭证?
联合身份凭证本质上是基于令牌的凭证,源自外部身份提供者(IdP)。这些令牌随后在云提供商处交换为访问令牌。与静态秘密不同,这些令牌具有以下几个关键优势:
- 短期有效:其短暂的性质大大减少了被泄露的机会窗口。
- 无需秘密存储:消除了与存储静态凭证相关的安全风险。
- 降低泄露风险:短暂的生命周期和不存在存储的秘密本质上降低了潜在泄露的影响。
- 消除证书过期问题:避免了与管理证书生命周期相关的运营负担和安全风险。
微软 Entra ID(以前的 Azure AD)中的联合身份
过去,手动管理证书和客户端秘密、在 Azure 外部存储凭证以及处理过期或意外暴露的秘密给组织带来了持续的挑战。
微软 Entra ID 通过支持联合身份凭证解决了这些问题。此功能允许在 Azure 外部运行的工作负载安全地进行身份验证以访问 Azure 资源。
常见用例包括:
- GitHub Actions
- 在 Azure Kubernetes Service(AKS)之外运行的 Kubernetes Pods
- 其他符合 OpenID Connect(OIDC)的系统
Entra ID 中联合身份凭证的关键属性:
- 受众:通常设置为
api://AzureADTokenExchange
。 - 颁发者:颁发令牌的外部身份提供者的 URL。
- 主体:外部 IdP 中的特定身份(例如,
repo:org/repo:environment
用于 GitHub)。 - 名称:凭证的用户友好标识符。
图 1: 一个基于令牌的身份验证流程,其中外部工作负载使用来自身份提供者的签名令牌从云令牌服务获取访问令牌并访问云资源。
工作原理:
- 在您的身份提供者和微软 Entra ID 之间建立信任关系。
- 您的 IdP 向您的工作负载颁发数字签名令牌。
- 微软 Entra ID 验证此令牌,验证颁发者、受众和主体声明与配置的信任关系匹配。
- 验证成功后,微软 Entra ID 颁发访问令牌。
- 工作负载然后使用此访问令牌访问 Azure 内的指定受保护资源。
注意:所有令牌声明(颁发者、受众、主体)都是区分大小写的。
谷歌云中的联合身份:工作负载身份联合
谷歌云中长期服务账户密钥相关的固有风险(一旦泄露可能授予对云资源的广泛访问权限)通过工作负载身份联合完全消除。此功能完全消除了对这些密钥的需求。
用例:
工作负载身份联合专门设计用于在 Google Cloud 外部运行且需要与 GCP 资源交互的工作负载。这涵盖了广泛的环境,包括:
- 在 AWS、Azure 或本地数据中心托管的工作负载
- GitHub Actions 工作流
- GitLab CI/CD 管道
- Kubernetes 集群(例如,Amazon EKS、Azure AKS、本地 Kubernetes)
- 任何符合 OIDC 或 SAML 2.0 的身份提供者
谷歌云工作负载身份联合中的关键概念:
- 工作负载身份池:作为外部身份的逻辑容器,将被允许对 GCP 进行身份验证的身份分组。
- 提供者:此组件将 Google Cloud 连接到您的外部 IdP(例如,GitHub、Entra ID、Okta)。
- 属性映射:此关键步骤定义了如何将外部 IdP 令牌中的声明转换并分配给 Google Cloud 属性。
身份验证流程:
- 工作负载通过其外部 IdP 进行身份验证。
- IdP 向工作负载颁发签名令牌。
- 此令牌随后发送到 Google 安全令牌服务。
- Google 验证令牌(检查颁发者、受众和主体,并应用任何配置的属性条件)。
- Google 颁发短期联合令牌。
- 工作负载使用此联合令牌进行 GCP API 调用,或者它可以模拟 Google Cloud 服务账户以使用特定的 IAM 角色访问资源。
采用联合身份的好处
实施联合身份策略为云自动化提供了显著的优势:
- 消除静态凭证:不再在代码存储库或 CI/CD 管道中硬编码秘密。
- 降低秘密泄露风险:令牌的短暂性质极大地减少了攻击面。
- 简化轮换和撤销:令牌是短期的,简化了管理其生命周期和在需要时撤销访问的过程。
- 细粒度、动态访问控制:可以根据外部身份的属性动态控制访问,实现细粒度的权限。
- 提高安全态势:通过遵循最小权限原则,组织增强了整体安全性。
关键考虑因素和最佳实践
在将联合身份集成到云环境中时,请牢记以下最佳实践:
- 最小权限原则:始终确保联合身份或它们模拟的服务账户仅被授予执行其任务所需的绝对最小 IAM 角色和权限。
- 全面测试:仔细测试整个身份验证流程和访问控制,以确认工作负载只能访问其预期的资源,而不会访问更多。
- 审计和日志记录:为所有身份验证尝试和资源访问启用全面日志记录。定期监控这些日志以查找任何可能表明滥用或安全事件的可疑活动。
- IdP 配置:验证您的外部身份提供者已正确配置以颁发包含与云提供商的联合设置精确匹配的必要声明(颁发者、主体、受众)的令牌。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。