第 10 章 Zero Trust Workload Identity Manager


10.1. Zero Trust Workload Identity Manager 概述

重要

Zero Trust Workload Identity Manager 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

Zero Trust Workload Identity Manager 将安全生产身份框架用于每个人(SPIFFE)和 SPIFFE 运行时环境(SPIRE)来为分布式系统提供全面的身份管理解决方案。SPIFFE 和 SPIRE 提供标准化的工作负载身份方法,允许工作负载在同一集群中或另一个环境中与其他服务通信。

Zero Trust Workload Identity Manager 替换长生命期的,使用加密验证身份手动管理的 secret。它提供强大的身份验证,确保互相通信的工作负载都是其声明的身份。SPIRE 可自动化发布、轮转和撤销 SPIFFE 详细身份文档(SVID),从而减少开发人员和管理员管理 secret 的工作负载。

SPIFFE 可在不同的基础架构中工作,包括内部环境、云和混合环境。加密启用的 SPIFFE 身份为审计和合规性提供了一个基础。

以下是 Zero Trust Workload Identity Manager 架构的组件:

10.1.1. SPIFFE

Secure Production Identity Framework for Everyone (SPIFFE) 提供了一种标准化方法,以建立分布式系统中软件工作负载之间的信任。SPIFFE 分配唯一 ID,称为 SPIFFE ID。这些 ID 是包含了一个信任域和一个工作负载标识符的 Uniform Resource Identifiers (URI)。

SPIFFE ID 包含在 SPIFFE Verifiable Identity Document (SVID) 中。工作负载使用 SVID 来验证其与其他工作负载的身份,以便工作负载可以相互通信。两个主要的 SVID 格式是:

  • X.509-SVID: X.509 证书,其中 SPIFFE ID 嵌入在 Subject Alternative Name (SAN) 字段中。
  • JWT-SVID :JSON Web Tokens (JWTs),SPIFFE ID 作为 sub 声明包括。

如需更多信息,请参阅 SPIFFE 概述

10.1.2. SPIRE 服务器

SPIRE 服务器负责在信任域中管理和发布 SPIFFE 身份。它存储注册条目(决定在哪些条件下应发布 SPIFFE ID 的选择器)和签名密钥。SPIRE 服务器与 SPIRE 代理结合使用,以通过节点插件执行节点。如需更多信息 ,请参阅关于 SPIRE 服务器

10.1.3. SPIRE 代理

SPIRE 代理负责测试工作负载,确保工作负载在请求通过 SPIFFE Workload API 进行身份验证时收到验证的身份。它通过使用配置的工作负载 attestor 插件来实现此目的。在 Kubernetes 环境中,使用 Kubernetes 工作负载 attestor 插件。

SPIRE 和 SPIRE 代理通过节点插件在测试时执行节点。插件用于验证代理运行的节点的身份。如需更多信息,请参阅关于 SPIRE 代理

10.1.4. Attestation

Attestation 是在发布 SPIFFE ID 和 SVID 前验证节点和工作负载身份的过程。SPIRE 服务器收集 SPIRE 代理在其上运行的工作负载和节点的属性,然后将它们与工作负载注册时定义的一组选择器进行比较。如果比较成功,则会通过凭证提供实体。这样可确保只有信任域中的合法和预期实体接收加密身份。SPIFFE/SPIRE 中的 attestation 两个主要类型是:

  • 节点 attestation:验证系统中机器或节点的身份,然后该节点上运行的 SPIRE 代理可以被信任以请求工作负载的身份。
  • 工作负载测试:验证在该节点上的 SPIRE 代理之前在测试的节点上运行的应用程序或服务的身份,可以为它提供 SPIFFE ID 和 SVID。

如需更多信息,请参阅 Attestation

10.1.5. Zero Trust Workload Identity Manager 组件

以下组件作为 Zero Trust Workload Identity Manager 的初始发行版本的一部分提供。

10.1.5.1. SPIFFE CSI 驱动程序

SPIFFE 容器存储接口(CSI)是一个插件,它可以帮助 pod 通过向 pod 提供 Workload API 套接字来安全地获取其 SPIFFE Verifiable Identity Document (SVID)。SPIFFE CSI 驱动程序部署在集群中,确保每个节点上运行的驱动程序实例。驱动程序使用 Kubernetes 的临时内联卷功能,允许 pod 请求由 SPIFFE CSI 驱动程序提供的卷。这简化了需要临时存储的应用程序使用。

当 pod 启动时,Kubelet 调用 SPIFFE CSI 驱动程序来置备和挂载卷到 pod 的容器中。SPIFFE CSI 驱动程序将包含 SPIFFE Workload API 的目录挂载到 pod 中。然后,pod 中的应用程序与 Workload API 通信以获取其 SVID。驱动程序保证每个 SVID 都是唯一的。

10.1.5.2. SPIRE OpenID Connect Discovery Provider

SPIRE OpenID Connect Discovery Provider 是一个独立组件,通过公开开放 ID 配置端点和用于令牌验证的 JWKS URI,使 SPIRE-issued JWT-SVIDs 与标准 OpenID Connect (OIDC)用户兼容。对于将基于 SPIRE 的工作负载身份与需要 OIDC 兼容令牌的系统(特别是外部 API)集成非常重要。虽然 SPIRE 主要为工作负载发布身份,但可通过配置 SPIRE 将其他工作负载相关声明嵌入到 JWT-SVID 中,这些声明包含在令牌中并由 OIDC 兼容客户端验证。

10.1.5.3. SPIRE Controller Manager

SPIRE Controller Manager 使用自定义资源定义(CRD) 来方便注册工作负载。为了便于工作负载注册,SPIRE Controller Manager 会针对 pod 和 CRD 注册控制器。当在这些资源上检测到更改时,会触发工作负载协调过程。这个过程根据现有 pod 和 CRD 确定应存在哪些 SPIRE 条目。协调过程会根据情况创建、更新和删除 SPIRE 服务器上的条目。

SPIRE Controller Manager 设计为部署在与 SPIRE 服务器相同的 pod 中。管理器使用共享卷中的私有 UNIX 域套接字与 SPIRE 服务器 API 通信。

10.1.6. Zero Trust Workload Identity Manager 功能

10.1.6.1. SPIRE 服务器和代理遥测

SPIRE 服务器和代理遥测可让您了解 SPIRE 部署的健康状况。指标采用 Prometheus Operator 提供的格式。公开的指标有助于了解服务器健康和生命周期、SPIRE 组件性能、测试和 SVID 颁发,以及插件统计信息。

以下是 Red Hat OpenShift 集群中 Zero Trust Workload Identity Manager 的高级别工作流。

  1. SPIRE、SPIRE 代理、SPIFFE CSI 驱动程序和 SPIRE OIDC Discovery Provider 操作对象通过关联的客户资源定义(CRD)部署和管理。
  2. 然后,监视会注册到相关的 Kubernetes 资源,并将所需的 SPIRE CRD 应用到集群。
  3. 名为 cluster 的 ZeroTrustWorkloadIdentityManager 资源的 CR 由控制器部署和管理。
  4. 要部署 SPIRE 服务器、SPIRE Agent、SPIFFE CSI Driver 和 SPIRE OIDC Discovery Provider,您需要为每个特定类型的自定义资源并命名为 cluster。自定义资源类型如下:

    • SPIRE Server - SpireServer
    • SPIRE Agent - SpireAgent
    • SPIFFE CSI 驱动程序 - SpiffeCSIDriver
    • SPIRE OIDC 发现供应商 - SpireOIDCDiscoveryProvider
  5. 当节点启动时,SPIRE 代理会初始化并连接到 SPIRE 服务器。
  6. SPIRE 代理从测试过程开始节点。代理收集节点的身份的信息,如标签名称和命名空间。代理安全地提供通过测试到 SPIRE 服务器收集的信息。
  7. 然后,SPIRE 服务器会根据其配置的 attestation 策略和注册条目评估此信息。如果成功,服务器会生成一个代理 SVID 和 Trust Bundle (CA 证书),并安全地将此发送回 SPIRE 代理。
  8. 工作负载在节点上启动,需要安全的身份。工作负载连接到代理的 Workload API 并请求 SVID。
  9. SPIRE 代理接收请求,并开始测试工作负载,以收集有关工作负载的信息。
  10. 在 SPIRE 代理收集信息后,信息将发送到 SPIRE 服务器,服务器会检查其配置的注册条目。
  11. SPIRE Agent 接收工作负载 SVID 和 Trust Bundle,并将其传递给工作负载。工作负载现在可以将其 SVID 呈现给其他 SPIFFE 感知设备,以便与它们通信。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat