从 ESXi 8.0 Update 1 开始,可以在 kickstart 文件中配置外部熵源以进行脚本式安装。

通过使用脚本式安装方法,可以在高度安全的环境中配置 ESXi 以使用外部熵源(例如硬件安全模块 (HSM))中的熵,并符合 BSI 通用准则、EAL4 和 NIST FIPS CMVP 等标准。

ESXi 8.0 Update 1 引入了一个熵守护进程 entropyd,可创建 vAPI 端点以提供 REST API 来查询熵数据并发送到 ESXi 主机。该熵守护进程有多个可配置参数:in-memory-cache sizein-storage-cache sizein-memory-low watermarkentropy-lost-timeout。熵源(内部和外部)收集在熵混合器模块中。该熵守护进程可熵源从混合器转发到内核的熵池。

如果不需要选择外部熵源,则无需更改现有脚本中的任何内容。

只能为新安装配置外部熵源。该熵守护进程在首次引导时使用在安装期间传递的熵数据。
注: 无法使用任何其他方法(如交互式安装、集群映像或 Auto Deploy)配置外部熵源。无法在现有 ESXi 主机上启用该功能。

更新 kickstart 文件之前,必须从外部源(如 HSM)获取合法的二进制熵数据,并将其保存为大小介于 512 KB 到 10 MB 之间的文件,例如 entropy_data.dat。然后,以有效的 base64 格式对 entropy_data 文件的内容进行编码,以创建另一个文件,例如 entropy_data.b64

在 kickstart 文件中,提供以下新参数,作为 entropy 命令的一部分:

  • data - 来自外部源的 base64 编码熵数据。
  • sources - 此位掩码值(0 =默认值1 = interrupts2 = RDRAND4 = RDSEED8 = entropyd。)于安装期间在内核设置中进行设置。如果支持 RDSEED,则默认满足 FIPS 合规性。否则,默认为 entropyd 以外的所有熵源。为实现 EAL4 合规性,8 是唯一的必需值,但可以使用十进制范围 0-15 中的其他源。在安装期间,源值将保留为内核设置。
    注: 如果 ESXi 主机仅配置外部熵源(即 sources 值设置为 8 时),则必须使用熵 API 继续向主机提供外部熵。如果主机中的外部熵耗尽,主机将变得无响应,并且可能需要硬重新引导或重新安装,主机才能从这种情况中恢复。

包含熵参数的示例 kickstart:

vmaccepteula
rootpw xxxxxxxx 
entropy --sources=8 --data=xxxxxxx/xx/xxxxx/xx/xxxx...
install --firstdisk --overwritevmfs 
network --bootproto=dhcp
图 1. 用于添加外部熵源的脚本式安装工作流
用于添加外部熵源的脚本式安装工作流
安装完成后,可以登录到 ESXi 主机,并使用以下 ESXCLI 命令从 shell 为熵守护程序定义一些参数:

ESXCLI 命令

1. 获取命令

## esxcli system entropyd get 命令描述
1 <no argument> 获取所有 entropyd 参数的当前配置值和默认值
2 --default-values 获取默认值

2. 设置命令

## esxcli system entropyd set 命令描述
1 --help 输出“esxcli system entropyd set”命令及其参数的详细信息
2

--reset=all

--reset=memory-cache-size

--reset=memory-cache-low-watermark

--reset=storage-cache-size

--reset=external-entropy-lost-timeout

将某个参数或所有参数重置为其默认值。
3 --memory-cache-size=<value in KiB> 设置内存缓存大小,以 KiB 为单位。
4 --memory-cache-low-watermark=<value in %> 以百分比为单位设置内存缓存低水印。
5 --storage-cache-size=<value in KiB> 设置存储缓存大小,以 KiB 为单位。
6 --external-entropy-lost-timeout=<value in seconds> 设置外部熵丢失超时值,以秒为单位。

例如:

$ esxcli system entropyd set --external-entropy-lost-timeout=70 --memory-cache-low-watermark=30 --memory-cache-size=612 --storage-cache-size=5096
$ esxcli system entropyd get
External Entropy Lost Timeout Seconds: 70
Memory Cache Low Watermark Percentage: 30
Memory Cache Size Kibibytes: 612
Storage Cache Size Kibibytes: 5096
                
$ esxcli system entropyd get --default-values
External Entropy Lost Timeout Seconds: 60
Memory Cache Low Watermark Percentage: 20
Memory Cache Size Kibibytes: 512
Storage Cache Size Kibibytes: 4096

安装过程中,ESXi 安装程序会更新内核设置中的熵源值,以便在安装后保留在 ConfigStore 中。此更改不会影响 ESXi 主机的安全引导。

有关详细信息,请参见《vSphere 安全性》和《vSphere Automation SDK 编程指南》。