SPIRE

简要概述

SPIRE 是 SPIFFE API 规范下的实现,可用于生产环境,执行节点和工作负载认证,以安全地向工作负载发布SVID,并基于预定义的一组条件验证其他工作负载的SVID。

SPIRE 旨在提供一个可靠的解决方案,用于在云原生环境中实现安全的身份验证和授权。

架构组件

架构图

SPIRE 由 spire-server 和一个或多个 spire-agent 组成,服务端充当身份签发机构,通过 agent 向一组工作负载颁发身份,同时还维护一个工作负载身份的注册表以及必须验证的条件,以便颁发这些身份。代理在本地向工作负载公开 SPIFFE Sorkload API 并且必须安装在每个运行工作负载的节点上。

jpg

spire-server

负责管理和颁发其配置的 SPIFFE 信任域中的所有身份,它存储注册条目(指定确定特定 SPIFFE ID 应在其下颁发的条件的选择器)和签名密钥,使用节点认证自动验证代理的身份,并在经过身份验证的代理请求时为工作负载创建 SVID。

jpg

服务端的行为是通过一系列插件确定的,默认内置了一些插件,但可以通过编写自定义插件以扩展 SPIRE 适应特定的用例,插件的类型包括:

  • Node Attestor Plugins

用于执行节点证明的插件。节点证明是通过验证节点的身份,确保其可信,并为其颁发身份的过程。

  • Node resolver plugins

节点解析插件扩展了服务器用于通过验证节点的附加属性来识别节点的选择器集。

  • Datastore Plugins

使用数据存储插件来存储、查询和更新各种信息,例如注册条目、哪些节点已经进行了认证以及这些节点的选择器是什么。

内置了一个数据存储插件,可以使用 MySQL、SQLite 3 或 PostgresSQL 来存储必要的数据。

默认情况下,它使用SQLite。

  • Key manager Plugins

控制服务端存储用于签署 X.509-SVID 和 JWT-SVID 私钥的方式。

  • Upstream authority Plugins

默认情况下,SPIRE 服务器充当自己的证书颁发机构。然而,您可以使用上游颁发机构插件来使用来自不同 PKI 系统的不同 CA。

spire-agent

运行已识别工作负载的每个节点上运行。该代理:

  1. 从服务器请求SVID,并将其缓存,直到工作负载请求其SVID。
  2. 向节点上的工作负载公开SPIFFE工作负载API,并对调用它的工作负载进行认证。
  3. 为已识别的工作负载提供其SVID。

SPIRE代理在工作负载的生命周期中充当关键的中介,协助在节点上颁发和管理SVID,并确保工作负载可以有效地获取其身份信息。

jpg




最后修改 2023.11.20: feat: add spire (17d39bb)