添加一个字段来接受默认的 verify_ca 路径¶
https://bugs.launchpad.net/ironic/+bug/2040236
此规范为每个驱动程序添加一个设置 [driver]verify_ca 的选项。此值随后将被 Ironic 用于证书验证,而不是该驱动程序的默认系统 CA 捆绑包。如果需要,每个驱动程序可以使用不同的 CA 证书来实现此目的。
问题描述¶
目前,Ironic 使用系统范围的 CA 证书捆绑包来验证 HTTPS 连接。但是,在某些情况下,此默认行为可能与组织的特定要求或策略不一致。特别是,当用户指定需要证书验证时,管理员可能更喜欢不要依赖系统的默认证书路径来与 BMC 进行身份验证。相反,他们可能需要使用定制的 CA 证书,这些证书是根据其组织的安全策略或特定用例量身定制的。
目前,如果操作员希望为 Ironic 与受管裸机服务器的 BMC 之间的通信配置自定义 CA 证书,他们可以在相关节点上配置 <driver>_verify_ca 选项。此选项可以配置为 true、false 或设置为特定的证书路径。当 ‘<driver>_verify-ca’ 设置为 true 时,Ironic 默认使用系统的 CA 捆绑包进行证书验证。此外,在操作员希望指定系统 CA 捆绑包之外的 CA 证书的情况下,这种方法存在一个严重缺陷:它要求操作员知道文件系统中预先存在的 CA 证书的确切位置。虽然此配置选项通过 Ironic API 在每个节点级别设置,但操作员无法通过这些 API 上传 CA 证书,也无法确定该证书的文件系统路径。这并非理想的情况。此选项也不适用于操作员只能通过编写配置文件和发出 API 调用与 Ironic 交互的用例(例如在 metal3 中)。
为了克服此限制,我们建议一个新的配置选项,该选项在驱动程序级别(而不是节点级别)上设置范围:[driver]verify_ca。这样,所需的 CA 证书可以在部署时部署到已知位置,并且 Ironic 配置可以为每个驱动程序编写,引用这些路径。
提议的变更¶
为每个驱动程序添加新的 verify_ca 选项
为每个驱动程序的 conf 添加一个 verify_ca 选项以接受指定的值。在每个驱动程序级别上配置此选项与现有的配置选项(例如 kernel_append_params)保持一致。它也清楚地表明了此特定 CA 证书的用途。
在节点验证之前检索路径
在执行节点验证之前,检索证书路径,并将其传递给 verify_ca 进行验证。此实现因不同的供应商而异。
备选方案¶
管理员可能需要登录到安装 Ironic 的系统并手动添加所需的证书。注意:这需要修改运行 Ironic 的机器上受信任的 CA 证书集合,这可能或可能不希望发生;在某些情况下,操作员可能希望仅信任用于连接到 BMC 的特定 CA,而不信任涉及运行 Ironic 的服务器的其他加密通信。
可以考虑使用类似于 [conductor]verify_ca 的全局配置选项,而不是 [driver]verify_ca,但是这可能会导致混淆,关于设置它所产生的影响(是否适用于所有 conductor 连接?BMC 连接?其他?)并且与其它类似的选项(例如 kernel_append_params)不一致。
使用现有的 <driver>_verify_ca 设置是另一种选择,但是它要求在运行 Ironic 的文件系统中预先存在所需的 CA 证书,以及操作员知道确切的路径,不应依赖于此,因此不希望这样做。
数据模型影响¶
无
状态机影响¶
无
REST API 影响¶
无
客户端 (CLI) 影响¶
无
RPC API 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
Ramdisk 影响¶
无
安全影响¶
在 Ironic 的驱动程序中引入 verify_ca 配置选项可能存在一些安全隐患
敏感数据处理
此更改涉及 CA 证书的路径,这些证书对于安全的通信至关重要。虽然该选项本身不处理敏感数据(如令牌或密钥),但它将 Ironic 指向敏感加密材料的位置。为了防止未经授权的访问,必须正确管理和设置此路径的权限。
受管硬件的可访问性
通过允许自定义 CA 路径,此更改可能会影响 Ironic 管理的硬件的安全性。如果指定了不正确或不受信任的 CA 路径,则可能会危及与 BMC 的 SSL/TLS 连接的完整性,从而影响硬件的安全管理。
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
在部署时,一个或多个自定义 CA 证书可能会安装到运行 Ironic 的机器上的已知路径下。
在部署时创建的 Ironic 配置会将自定义 CA 证书分配给预期使用它的驱动程序。
每个驱动程序可以使用不同的 CA 证书,或者如果需要,多个驱动程序可以使用相同的 CA 证书。
verify_ca 的默认 None 值可确保向后兼容性,除非被覆盖,否则使用系统的默认 CA 捆绑包。这种方法在提供自定义配置灵活性的同时,保持现有部署的运行稳定性。
Ironic 将被增强,以动态检索每个硬件驱动程序的 verify_ca 值,并将其传递给 verify_ca 函数。此机制可确保与不同硬件类型的 BMC 的 SSL/TLS 通信可以利用指定的自定义 CA 证书。
该功能需要部署者显式启用。此更改不会自动激活。
开发人员影响¶
开发人员需要确保他们的驱动程序正确解释和利用指定的 CA 路径。
实现¶
负责人¶
- 主要负责人
周浩 <zhouhao@fujitsu.com>
- 其他贡献者
邹宇 <zouy.fnst@fujitsu.com> 冯广文 <fenggw-fnst@fujitsu.com>
工作项¶
为每个供应商实现 verify_ca 选项。
更新文档。
依赖项¶
无
测试¶
测试驱动程序,以验证在执行证书验证时是否使用了设置的路径。
升级和向后兼容性¶
无
文档影响¶
随着功能的实现,应更新每个硬件供应商的文档。
参考资料¶
无