14.2.3.2. 启用 Tang 磁盘加密
使用以下步骤在 OpenShift Container Platform 安装过程中启用 Tang 模式磁盘加密。
先决条件
- 您已在安装节点上下载了 OpenShift Container Platform 安装程序。
- 您可以使用 Red Hat Enterprise Linux (RHEL) 8 机器来生成 Tang Exchange 密钥的指纹。
流程
- 设置 Tang 服务器或访问现有服务器。具体步骤请查看网络绑定磁盘加密 。
添加内核参数来配置集群在安装 Red Hat Enterprise Linux CoreOS(RHCOS)时的网络。例如:在内核命令行中添加参数来配置 DHCP 网络,指定
ip=dhcp
,或者设置静态网络。对于 DHCP 和静态网络,您必须提供rd.neednet=1
内核参数。重要跳过这一步会导致第二次引导失败。
如果尚未安装,在 RHEL 8 机器上安装
clevis
软件包:$ sudo yum install clevis
在 RHEL 8 计算机上,运行以下命令来生成交换密钥的指纹。使用 Tang 服务器的 URL 替换
http://tang.example.com:7500
:$ clevis-encrypt-tang '{"url":"http://tang.example.com:7500"}' < /dev/null > /dev/null 1
- 1
- 在本例中,
tangd.socket
侦听 Tang 服务器上的端口7500
。
注意此步骤中仅使用
clevis-encrypt-tang
命令,以生成交换密钥的指纹。此时不会将数据传递给命令以进行加密,因此/dev/null
作为输入而不是纯文本提供。加密的输出也会发送到/dev/null
,因为此过程不需要它。输出示例
The advertisement contains the following signing keys: PLjNyRdGw03zlRoGjQYMahSZGu9 1
- 1
- Exchange 键的指纹。
当出现
Do you wish to trust these keys? [ynYN]
提示时,输入Y
。注意RHEL 8 提供 Clevis 版本 15,它使用 SHA-1 哈希算法来生成指纹。些其他发行版提供 Clevis 版本 17 或更高版本,它们使用 SHA-256 哈希算法进行指纹。您必须使用 SHA-1 创建 thumbprint 的 Clevis 版本来防止在 OpenShift Container Platform 集群节点上安装 Red Hat Enterprise Linux CoreOS (RHCOS) 时出现 Clevis 绑定问题。
创建 Base64 编码文件,使用新生成的 Tang server 替换
url
,thumbprint 替换thp
:$ (cat <<EOM { "url": "http://tang.example.com:7500", 1 "thp": "PLjNyRdGw03zlRoGjQYMahSZGu9" 2 } EOM ) | base64 -w0
输出示例
ewogInVybCI6ICJodHRwOi8vdGFuZy5leGFtcGxlLmNvbTo3NTAwIiwgCiAidGhwIjogIlBMak55UmRHdzAzemxSb0dqUVlNYWhTWkd1OSIgCn0K
如果您还没有生成 Kubernetes 清单,请切换到安装节点上包含安装程序的目录,并创建它们:
输出示例
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
- 将
<installation_directory>
替换为您要存储安装文件的目录的路径。
使用 Tang 加密模式,为 control plane 或计算节点创建机器配置文件来加密引导磁盘。
要在 control plane 节点上配置加密,请将以下机器配置示例保存到
<installation_directory>/openshift
目录中的一个文件中。例如,将文件命名为99-openshift-master-tang-encryption.yaml
:apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: name: master-tang labels: machineconfiguration.openshift.io/role: master spec: config: ignition: version: 3.1.0 storage: files: - contents: source: data:text/plain;base64,e30K source: data:text/plain;base64,ewogInVybCI6ICJodHRwOi8vdGFuZy5leGFtcGxlLmNvbTo3NTAwIiwgCiAidGhwIjogIlBMak55UmRHdzAzemxSb0dqUVlNYWhTWkd1OSIgCn0K 1 mode: 420 overwrite: true path: /etc/clevis.json kernelArguments: - rd.neednet=1 2
要在计算节点上配置加密,请将以下机器配置示例保存到
<installation_directory>/openshift
目录中的文件中。例如,将文件命名为99-openshift-worker-tang-encryption.yaml
:apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: name: worker-tang labels: machineconfiguration.openshift.io/role: worker spec: config: ignition: version: 3.1.0 storage: files: - contents: source: data:text/plain;base64,e30K source: data:text/plain;base64,ewogInVybCI6ICJodHRwOi8vdGFuZy5leGFtcGxlLmNvbTo3NTAwIiwgCiAidGhwIjogIlBMak55UmRHdzAzemxSb0dqUVlNYWhTWkd1OSIgCn0K 1 mode: 420 overwrite: true path: /etc/clevis.json kernelArguments: - rd.neednet=1 2
- 创建 YAML 文件的备份副本。创建 Ignition 配置文件时会消耗原始 YAML 文件。
- 继续进行 OpenShift Container Platform 安装的其余部分。