写点什么

从“几年”到“秒”:重新思考公钥基础设施(PKI)

作者:安全乐谷
  • 2024-11-29
    浙江
  • 本文字数:2276 字

    阅读完需:约 7 分钟

公钥基础设施(PKI)最初设计时,是为那些长期存在的身份提供支持的——例如员工加入公司、数据中心中的服务器、设备接入网络。在这样的世界里,证书的颁发和撤销进程与这些长期身份的生命周期非常契合。然而,今天的云原生工作负载(如容器、无服务器函数和微服务)通常在几秒钟内创建和销毁,这种变化打破了传统 PKI 的基本假设。


尽管这些短暂的工作负载仍然依赖于公钥加密技术进行身份验证,但它们的部署和管理方式已经打破了传统的模型。一个存在仅几秒钟、只处理一个请求的容器,无法等待几分钟的证书颁发;一个从零扩展到数千个实例的无服务器函数,无法依赖手动的证书管理。问题的根本不在于加密本身,而是围绕加密构建的基础设施和流程无法适应这种新的工作负载需求。


这一问题并不是公钥基础设施本身不适用,而是我们在现代工作负载的背景下错误地应用了它。新的工作负载模式迫使我们重新思考身份验证和身份管理系统的运作方式——不仅要确保安全性,还要支持云原生基础设施所要求的灵活性、性能和速度。

为什么工作负载如此不同?

与人类或机器身份不同,工作负载天生就是短暂的。人类身份通常可以维持多年,期间可能有一些角色变动;机器身份通常与服务器或设备绑定,可能持续几个月。然而,工作负载是按需创建和销毁的,它们的生命周期通常仅仅足够长以完成任务然后消失。


不同于人类和机器身份中,标识符通常是预先分配的,工作负载的标识符必须在运行时动态分配,基于当前正在运行的内容和所在位置。这种短暂性使得撤销(传统 PKI 的关键功能)变得不重要,因为工作负载的凭证通常在短时间内就过期了。事实上,类似 Kerberos 票证,工作负载凭证的生命周期很短,通常只长到足以满足部署服务水平协议(SLA)的时间。


以下图表清晰展示了不同身份生命周期的差异:


  • 人类身份:持久性强,通常持续多年,随时受合规和审计流程的影响。

  • 机器身份:半持久性,通常持续几周到几个月,更新和续期有时与设备或硬件生命周期挂钩。

  • 工作负载身份:短暂性,生命周期常常只持续几分钟,任务完成后立即消失,且操作通常在大规模分布式环境中进行。


这一差异还有一个重要因素——工作负载的规模和速度。许多工作负载通常会同时创建,且每个工作负载都需要立即认证。传统的 PKI 流程设计时是为了慢节奏的环境,显然无法满足这一需求。此外,工作负载通常并非孤立存在,它们往往分布在多个区域,以减少延迟和避免不必要的故障点。因此,支持的凭证基础设施必须是分布式的,能够在本地发放和验证凭证,避免出现瓶颈和依赖性风险。

治理挑战

人类和机器身份通常受到合规性驱动的流程的影响,聚焦于审计性和安全性;而工作负载的治理则更多依赖于操作优先级:


  • 零停机:工作负载必须快速扩展,且不会中断。

  • 区域性能:认证系统必须与工作负载的区域部署匹配,以避免延迟。

  • 开发者灵活性:身份管理系统必须与开发者已经使用的技术栈无缝集成。


工作负载身份的生命周期反映了现代软件部署周期的即时性,而非硬件或人员管理的结构化进度。

为工作负载重新构建身份基础设施

传统的 PKI 模型并不会消失,它仍然适用于那些稳定、可预测的环境。但对于现代工作负载来说,我们需要一种新的方式。这些工作负载需要的系统包括:


  • 动态凭证颁发:凭证必须按需创建,以支持快速扩展,标识符的分配要根据运行时上下文和工作负载特征自动完成。

  • 短暂生命周期:工作负载凭证应自动过期,无需撤销,生命周期的持续时间应与实际的工作负载运行时需求匹配。

  • 多因素工作负载认证:工作负载必须具备(硬件信任根、加密密钥)、知道(运行时配置)、并且能够证明(证明数据、容器哈希、进程元数据)其身份。

  • 分布式基础设施:区域认证系统确保低延迟和高可用性,具备本地凭证颁发能力。

  • 大规模扩展性:系统必须支持每分钟数千个身份事件,跨多个云或混合环境运行,且能够大规模自动管理标识符。

  • 运行时标识符分配:根据运行内容(容器哈希、进程信息)、运行位置(环境上下文、运行时证明)、运行方式(执行环境验证)分配标识符。


如前所述,工作负载身份不仅仅是机器身份的小型、快速版本,它们的治理模型反映了它们在实现现代基础设施的无缝扩展和开发者赋能中的关键作用。

开发者的角色

或许最大的不同点在于开发者的作用。工作负载身份系统不能强制实施严格的“一刀切”要求。开发者需要:


  • 使用现有的技术栈。

  • 无缝集成身份管理到他们的工作流中。

  • 以现代基础设施要求的速度构建和部署。


因此,工作负载身份管理不仅仅是一个安全任务,而是创新和效率的基础。

从 SPIFFE 开始

SPIFFE(Secure Production Identity Framework For Everyone)是一个开源标准,旨在让工作负载自动获得身份、证书和 OIDC 令牌,从而实现服务间的零信任安全通信。与其在现有系统中做改进,不如在新的项目中早期介入设计阶段,从一开始就构建 SPIFFE 的工作负载身份模式。这种做法解决的问题与传统 PKI 不同,但并不是与之竞争。通过这个绿色田地项目,可以展示如何通过 SPIFFE 利用 PKI 技术解决生产环境中的额外问题。

结语

工作负载重新定义了我们对身份的理解。它们以传统 PKI 未曾预料到的速度和规模运作,受不同的优先级和生命周期影响,反映了现代软件的现实。虽然 PKI 仍将继续作为身份验证的关键组件,但它必须演变以适应短暂、分布式的工作负载需求。


这不仅是要放弃我们依赖的工具,而是要调整它们,以适应一个零停机、开发者灵活性和无缝扩展成为不可妥协的世界。身份的未来将不再是静态的或集中式的,而是动态的、分布式的,并且支持定义现代基础设施的工作负载。


对于那些希望快速高效实施这些模式的组织,SPIRL(我所顾问的公司)提供了一些工具,可以使工作负载身份管理变得更加简单和易于接入。

发布于: 刚刚阅读数: 4
用户头像

安全乐谷

关注

还未添加个人签名 2018-10-25 加入

还未添加个人简介

评论

发布
暂无评论
从“几年”到“秒”:重新思考公钥基础设施(PKI)_Java_安全乐谷_InfoQ写作社区