3.6. 创建 initdata
您可以创建一个 initdata 来在运行时安全地初始化具有敏感或特定于工作负载的数据的对等 pod,以避免在虚拟机镜像中嵌入此数据。这种方法通过降低公开机密信息的风险并消除自定义镜像构建需求来提供额外的安全性。
在生产环境中,您必须创建 initdata 来覆盖默认的 permissive Kata 代理策略。
您可以在对等 pod 配置映射中指定 initdata,用于全局配置,或者在对等 pod 清单中为特定 pod 指定。peer pod 清单中的 initdata 值覆盖对等 pod 配置映射中设置的值。
如果您在红帽构建的 Trustee 的 kbs-config 配置映射中配置 insecure_http = true,则必须删除 kbs_cert 设置。
流程
运行以下命令,获取红帽构建的 Trustee IP 地址:
oc get node $(oc get pod -n trustee-operator-system \ -o jsonpath='{.items[0].spec.nodeName}') \ -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'$ oc get node $(oc get pod -n trustee-operator-system \ -o jsonpath='{.items[0].spec.nodeName}') \ -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
192.168.122.22
192.168.122.22Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取端口:
oc get svc kbs-service -n trustee-operator-system
$ oc get svc kbs-service -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kbs-service NodePort 172.30.116.11 <none> 8080:32178/TCP 12d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kbs-service NodePort 172.30.116.11 <none> 8080:32178/TCP 12dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
initdata.toml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - URL
-
指定红帽构建的 Trustee IP 地址和端口,例如
https://192.168.122.22:32178。 - <kbs_certificate>
- 为 attestation 代理指定 Base64 编码的 TLS 证书。
- kbs_cert
-
如果您在红帽构建的 Trustee 的
kbs-config配置映射中配置insecure_http = true,请删除kbs_cert设置。
运行以下命令,将
initdata.toml文件转换为 gzip 格式的 Base64 编码字符串:cat initdata.toml | gzip | base64 -w0 > initdata.txt
$ cat initdata.toml | gzip | base64 -w0 > initdata.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为对等 pod 配置映射或对等 pod 清单记录此字符串。
运行以下命令,计算
initdata.toml文件的 SHA-256 哈希,并将其值分配给hash变量:hash=$(sha256sum initdata.toml | cut -d' ' -f1)
$ hash=$(sha256sum initdata.toml | cut -d' ' -f1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 32 字节 0s 分配给
initial_pcr变量:initial_pcr=0000000000000000000000000000000000000000000000000000000000000000
$ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,计算哈希和
initial_pcr的 SHA-256哈希,并将其值分配给PCR8_HASH变量:PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASH
$ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASHCopy to Clipboard Copied! Toggle word wrap Toggle overflow 记录下
PCR8_HASH值的.运行以下命令,计算initdata.toml文件的 SHA-256 哈希,并将其值分配给hash变量:hash=$(sha256sum initdata.toml | cut -d' ' -f1)
$ hash=$(sha256sum initdata.toml | cut -d' ' -f1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 32 字节 0s 分配给
initial_pcr变量:initial_pcr=0000000000000000000000000000000000000000000000000000000000000000
$ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,计算哈希和
initial_pcr的 SHA-256哈希,并将其值分配给PCR8_HASH变量:PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASH
$ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASHCopy to Clipboard Copied! Toggle word wrap Toggle overflow 记录 RVPS 配置映射的
PCR8_HASH值。