Skip to main content

FIPS 140-2 启用

FIPS 140-2 是美国联邦政府的安全标准,用于批准加密模块。这份文件解释了 RKE2 是如何使用 FIPS 验证的加密库构建的。

使用 FIPS 兼容的 Go 编译器#

所使用的 Go 编译器可以在这里找到。系统的每个组件都是用这个编译器的版本来构建的,与其他情况下使用的标准 Go 编译器版本一致。

这个版本的 Go 用经过 FIPS 验证的 BoringCrypto 模块取代了标准 Go 密码库。更多细节请参见 readme

此外,这个模块目前正在重新验证,作为 Rancher Kubernetes 加密库,用于 RKE2 支持的其他平台和系统。

这个版本的 Go 用经过 FIPS 验证的 BoringCrypto 模块取代了标准的 Go 加密库。更多细节见 GoBoring 的 readme。该模块已被重新验证为 Rancher Kubernetes Cryptographic Library,以确保在更多的系统上得到支持。

集群组件中的 FIPS 支持#

RKE2 系统的大部分组件是用 GoBoring Go 编译器实现静态编译的。从组件的角度来看,RKE2 被分成了若干部分。下面的列表包含了这些部分和相关的组件。

  • Kubernetes

    • API Server
    • Controller Manager
    • Scheduler
    • Kubelet
    • Kube Proxy
    • Metric Server
    • Kubectl
  • Helm Charts

    • Flannel
    • Calico
    • CoreDNS

运行时#

为了确保系统架构的所有方面都使用符合 FIPS 140-2 标准的算法实现,RKE2 运行时包含了用符合 FIPS 标准的 Go 编译器静态编译的实用程序。这确保了从 Kubernetes 守护程序到容器协调机制的所有层面都是合规的。

  • etcd
  • containerd
    • containerd-shim
    • containerd-shim-runc-v1
    • containerd-shim-runc-v2
    • ctr
  • crictl
  • runc

CNI#

从 v1.21.2 版本开始,RKE2 支持通过 --cni 标志选择不同的 CNI,并绑定了几个 CNI,包括 Canal(默认)、Calico、Cilium 和 Multus。其中,只有 Canal(默认)是为了符合 FIPS 标准而重建的。

Ingress#

RKE2 将 NGNIX 作为其默认的 Ingress Provider。从 V1.21 版本开始,该组件符合 FIPS 标准。NGINX ingress 有两个主要的子组件:

  • controller - 负责监控/更新 Kubernetes 资源并相应配置服务器
  • server - 负责接受和路由流量

Controller 是用 Go 编写的,因此使用我们的FIPS 兼容 Go 编译器进行编译。

Server 是用 C 语言编写的,也需要 OpenSSL 才能正常工作。因此,它利用 FIPS 验证的 OpenSSL 版本来实现 FIPS 兼容。

Last updated on by kingsd041