什么是 SPIFFE 和 SPIRE?

复制 URL

SPIFFE 和 SPIRE 是一对开源项目,用于在动态且多样化的计算环境中进行身份管理。

SPIFFE(发音为“spiffy”)是 Secure Production Identity Framework for Everyone(面向所有人的安全生产身份框架)的英文缩写。它为身份建立了一个统一的框架,并提供了一种可通过加密方式验证 ID、确认其可信度的机制。

SPIRE 是 SPIFFE Runtime Environment(SPIFFE 运行时环境)的英文缩写,也是 SPIFFE 的参考实现。

SPIFFE 与 SPIRE 共同定义了在复杂的混合云环境中实施零信任架构的方法。SPIFFE/SPIRE 框架可解决诸多安全问题,包括:

SPIFFE 和 SPIRE 都是云原生计算基金会(CNCF)的成熟项目。红帽提供了一个企业就绪型 SPIFFE/SPIRE 实施方案,即红帽® 零信任工作负载身份管理器,现作为红帽 OpenShift® Operator 的技术预览版发布。

SPIFFE 的支持者有时称其为“底层乌龟问题”的解决方案。SPIFFE 项目的发起者甚至以乌龟这一比喻作为该技术相关书籍的书名。 

那么,什么是底层乌龟问题呢?

在一个古老的故事中,有人坚称世界建在一只巨龟背上。当被问到“那这只乌龟又立在何处?”,这人回答说,“在另一个更大的龟背上。”那这只更大的乌龟又在什么上呢?“下面全都是乌龟,一层叠一层!”

计算机安全防护领域也存在着类似的底层乌龟问题:密码和应用编程接口(API)密钥等秘密凭机密是不同平台与服务间建立信任的基石。而要保护这些机密,又需要叠加额外的安全防护层,例如私有加密密钥以及用于存储密钥的机密存储库。那么如何保护机密存储库呢?只能依赖更多机密。这样很快就会陷入“机密层层嵌套,无穷无尽”的困局。

SPIFFE 标准和 SPIRE 实施旨在确立“底层乌龟”,为系统中的所有交互建立基础信任层级。

SPIFFE 和 SPIRE 是提升 IT 安全性的一种方式。它们共同构成了一个框架,确保仅向具有经过验证的身份的交互授予访问权限。类比来看,您可以将 SPIFFE 和 SPIRE 视为针对工作负载的多重身份验证(MFA)。

SPIFFE:框架

SPIFFE 制定了一套规范,用于在不同环境中为服务签发和管理加密身份。该标准的核心是 SPIFFE 可验证身份文档(SVID),这是一种短期有效的凭证,用于标识工作负载的身份。

在零信任架构中,系统中的任何组件都不会被默认信任,而 SPIFFE 可在不依赖机密的情况下完成工作负载身份验证。当工作负载需要与其他服务交互时,可出示其 SVID,该凭证通常采用 X.509 证书或 JSON Web 令牌(JWT)形式。

然后,其他工作负载可以在本地验证 SVID,从而实现可信的点对点身份验证,而无需在每次交互时都联系中央机构。这一精简流程通过可验证的标准化身份来维持信任,从而简化并保护服务通信。

SPIRE:运行时环境

SPIRE 描述了一种实施 SPIFFE 标准的方法。它定义了一个设置 API 的流程,从而在工作负载(发出请求的应用或代理)和节点(服务器或计算机)之间建立信任。

SPIRE 会同时考虑工作负载和节点的认证情况。这意味着,在签发签名证书之前,它会确认应用和资源是否与它们声称的身份一致。

SPIRE 服务器充当其 SPIFFE 域内身份的签名授权机构,同时还会在一个注册表中记录工作负载身份信息。 

除 SPIRE 服务器外,每个运行工作负载的节点上还需部署 SPIRE 代理。这些代理会缓存 SVID,并证明工作负载的身份。SVID 验证可通过内核级自检在本地完成。换言之,工作负载无需调用外部服务即可判断某个操作是否被授权。

SPIRE 支持联合认证机制,通过这一机制,不同系统可以交换包含公钥及验证所需证书的信任包。 

SPIFFE 和 SPIRE 有助于在分布式多云环境中进行身份验证。一些常见用例包括:

混合云环境中的身份验证

在混合云和多云环境中,应用可能跨越多个云提供商和管理边界。这使得在这些域之间实现可信通信的复杂度显著提升。 

借助 SPIFFE 联合机制,在不同位置运行的 SPIRE 服务器可以通过信任包交换公钥和证书;信任包是特定 SPIFFE 签发机构所使用的公钥集合的格式。这有助于应用建立信任,即便跨越不同的云提供商或管理边界,也无需依赖私钥或复杂的网络配置。

Kubernetes 和 KubeVirt 中的身份管理

Kubernetes 环境通常包含众多在隔离容器中运行的小型工作负载,而且它们必须相互协作。SPIFFE 和 SPIRE 可以为容器化应用提供身份验证(无论它们在网络中的哪个位置运行),从而增强 Kubernetes 环境的安全性。这种增强的安全防护也适用于在基于 KubeVirt 的解决方案(如红帽 OpenShift 虚拟化)上运行的虚拟机。这有助于实现精细化访问控制,而这也是零信任架构的核心原则之一。

AI 代理的工作流

AI 代理的应用正日益普及,它们能够接受指令,然后与其他系统交互以实现目标。但在涉及敏感信息的场景中,部署 AI 代理并非易事。向 AI 代理授予访问权限时,需要为机器工作负载提供可靠且可验证的身份,而在混合云平台环境下,这一问题会变得更加复杂。SPIFFE 和 SPIRE 可通过提供可验证的短期凭据,让 AI 服务以可控方式访问敏感数据,从而为解决该问题提供关键支持。

服务网格信任

服务网格是处理服务间通信的一层架构,尤其适用于容器化应用。通过实施 SPIFFE 和 SPIRE,可以向服务网格添加集成式安全管理,使服务网格能够依赖于可加密验证的身份。这种级别的信任可简化系统之间的互操作性,同时还有助于在服务网格内部和外部实施策略。

边缘计算安全防护

由于 SPIFFE 和 SPIRE 可将身份控制平面扩展到本地环境,二者非常适合边缘计算场景。可加密验证的 SVID 意味着,可以在网络上的任何位置实施强身份验证,即使对于分布广泛的边缘服务也同样适用。

在云端运行现代应用需要一定程度的自动化。为此,Kubernetes 成为了广受欢迎的选择,它是一个用于在容器中部署、管理和扩展应用的开源平台。Kubernetes 是红帽 OpenShift 的基础。

以 SPIFFE 和 SPIRE 作为身份控制平面(即我们之前提到的“底层乌龟”),您就可以在 Kubernetes 中使用可验证身份。关于在 Kubernetes 中使用 SPIFFE 和 SPIRE,有三点关键事项需要了解:

  1. SPIRE 是用于实施 SPIFFE 的框架。您需要在 Kubernetes 集群内部署 SPIRE 组件,其中包括 SPIRE 服务器和 SPIRE 代理,SPIRE 服务器负责管理身份和签名,而每个 Kubernetes 节点都需要运行一个 SPIRE 代理。这些组件可以创建基础身份基础架构,并让您的集群做好以加密方式验证身份的准备。在红帽 OpenShift 环境中,红帽零信任工作负载身份管理器可为此提供支持。
  2. SPIRE 代理同时执行节点和工作负载认证。代理可以检查应用的特征(如 Kubernetes 命名空间、服务帐户或容器镜像),以验证应用的合法性。
  3. 获得认证后,应用可访问 SPIRE 代理公开的本地 SPIFFE 工作负载 API,以获取其唯一的短期 SVID。这些 SVID 有助于建立双向传输层安全性(mTLS)连接,确保服务之间的可信通信。

学习路径:红帽 OpenShift 上的 SPIFFE/SPIRE

红帽解决方案在打造过程中就充分考虑了全面的安全防护。它们可以帮助您构建零信任基础,以确保数据主权,同时支持云原生和 AI 驱动型工作负载的部署与管理。红帽专家可以协助您开始在多云环境中采用零信任架构。 

红帽的零信任工作负载身份管理器是一个红帽 OpenShift Operator,可简化 SPIFFE 和 SPIRE 的安装与生命周期管理。您可以将它安装到现有集群上,而且它经过验证可在红帽 OpenShift 上运行,同时还配有全面的文档来提供安装与故障排除方面的支持。

试用红帽 OpenShift

试用红帽 OpenShift 在您的云上进行全托管;在您的云端、计算机或数据中心进行自我管理;在开发人员沙盒中进行即时管理。

扩展阅读

什么是零信任?

深入了解零信任,零信任是一种安全防护架构设计方法,其核心理念是所有交互默认处于不可信状态。

什么是机密管理?

机密管理是一种对日常运维所需的敏感信息进行保密处理的方法。

什么是基于角色的访问控制(RBAC)?

基于角色的访问控制是一种管理访问权限的方法,根据用户在团队或更大部门中的角色来管理用户对系统、网络或资源的访问权限。

安全防护 相关资源

相关文章