5.3. 在 IBM Z 和 IBM LinuxONE 上部署机密容器
在部署 OpenShift 沙盒容器后,您可以在 IBM Z® 和 IBM® LinuxONE 上部署机密容器。
IBM Z® 和 IBM® LinuxONE 上的机密容器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
集群要求
- 您已在安装 Confidential compute attestation Operator 的集群上安装了 Red Hat OpenShift Container Platform 4.15 或更高版本。
您可以执行以下步骤来部署机密容器:
- 安装 Confidential compute attestation Operator。
- 为 Trustee 创建路由。
- 启用机密容器功能门。
- 更新对等 pod 配置映射。
-
删除
KataConfig自定义资源(CR)。 - 更新对等 pod secret。
-
重新创建
KataConfigCR。 - 创建 Trustee 身份验证 secret。
- 创建 Trustee 配置映射。
- 获取 IBM Secure Execution (SE)标头。
- 配置 SE 证书和密钥。
- 创建持久性存储组件。
配置 attestation 策略:
- 创建参考值。
- 为 attested 客户端创建 secret。
- 创建资源访问策略。
- 为 SE 创建 attestation 策略。
-
创建
KbsConfigCR。 - 验证 attestation 进程。
5.3.1. 安装 Confidential compute attestation Operator 复制链接链接已复制到粘贴板!
您可以使用 CLI 在 IBM Z® 和 IBM® LinuxONE 上安装 Confidential compute attestation Operator。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。
流程
创建
trustee-namespace.yaml清单文件:apiVersion: v1 kind: Namespace metadata: name: trustee-operator-system
apiVersion: v1 kind: Namespace metadata: name: trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
trustee-operator-system命名空间:oc apply -f trustee-namespace.yaml
$ oc apply -f trustee-namespace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
trustee-operatorgroup.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 operator 组:
oc apply -f trustee-operatorgroup.yaml
$ oc apply -f trustee-operatorgroup.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
trustee-subscription.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建订阅:
oc apply -f trustee-subscription.yaml
$ oc apply -f trustee-subscription.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 Operator 是否已正确安装:
oc get csv -n trustee-operator-system
$ oc get csv -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令可能需要几分钟来完成。
运行以下命令监控进程:
watch oc get csv -n trustee-operator-system
$ watch oc get csv -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME DISPLAY PHASE trustee-operator.v0.1.0 Trustee Operator 0.1.0 Succeeded
NAME DISPLAY PHASE trustee-operator.v0.1.0 Trustee Operator 0.1.0 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.2. 为 Trustee 创建路由 复制链接链接已复制到粘贴板!
您可以为 Trustee 使用边缘 TLS 终止创建安全路由。外部入口流量以 HTTPS 的形式到达路由器 pod,并以 HTTP 的形式传递给 Trustee pod。
先决条件
- 您已启用了 Confidential Containers 功能门。
- 已安装 Confidential compute attestation Operator。
流程
运行以下命令来创建边缘路由:
oc create route edge --service=kbs-service --port kbs-port \ -n trustee-operator-system
$ oc create route edge --service=kbs-service --port kbs-port \ -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意注: 目前,只支持带有有效 CA 签名证书的路由。您不能使用带有自签名证书的路由。
运行以下命令设置
TRUSTEE_HOST变量:TRUSTEE_HOST=$(oc get route -n trustee-operator-system kbs-service \ -o jsonpath={.spec.host})$ TRUSTEE_HOST=$(oc get route -n trustee-operator-system kbs-service \ -o jsonpath={.spec.host})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证路由:
echo $TRUSTEE_HOST
$ echo $TRUSTEE_HOSTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
kbs-service-trustee-operator-system.apps.memvjias.eastus.aroapp.io
kbs-service-trustee-operator-system.apps.memvjias.eastus.aroapp.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.3. 启用机密容器功能门 复制链接链接已复制到粘贴板!
您必须启用 Confidential Containers 功能门。
流程
创建
cc-feature-gate.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建配置映射:
oc apply -f cc-feature-gate.yaml
$ oc apply -f cc-feature-gate.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.4. 更新对等 pod 配置映射 复制链接链接已复制到粘贴板!
您必须为机密容器更新对等 pod 配置映射。
将安全引导设置为 true 以默认启用。默认值为 false,这代表存在安全风险。
流程
根据以下示例创建
peer-pods-cm.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建配置映射:
oc apply -f peer-pods-cm.yaml
$ oc apply -f peer-pods-cm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启
peerpodconfig-ctrl-caa-daemon守护进程集:oc set env ds/peerpodconfig-ctrl-caa-daemon \ -n openshift-sandboxed-containers-operator REBOOT="$(date)"
$ oc set env ds/peerpodconfig-ctrl-caa-daemon \ -n openshift-sandboxed-containers-operator REBOOT="$(date)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.5. 删除 KataConfig 自定义资源 复制链接链接已复制到粘贴板!
您可以使用命令行删除 KataConfig 自定义资源(CR)。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。
流程
运行以下命令来删除
KataConfigCR:oc delete kataconfig example-kataconfig
$ oc delete kataconfig example-kataconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证自定义资源是否已删除:
oc get kataconfig example-kataconfig
$ oc get kataconfig example-kataconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
No example-kataconfig instances exist
No example-kataconfig instances existCopy to Clipboard Copied! Toggle word wrap Toggle overflow
卸载使用云供应商部署的 OpenShift 沙盒容器时,您必须删除所有 pod。任何剩余的 pod 资源都可能会导致云供应商出现意外几率。
5.3.6. 更新对等 pod secret 复制链接链接已复制到粘贴板!
当对等 pod secret 为空并安装 Cloud Credential Operator (CCO)时,OpenShift 沙盒容器 Operator 会使用 CCO 检索 secret。如果卸载了 CCO,您必须手动为 Confidential Containers 创建对等 pod secret,否则对等 pod 将无法操作。
secret 存储用于创建 pod 虚拟机(VM)镜像和对等 pod 实例的凭证。
默认情况下,OpenShift 沙盒容器 Operator 根据用于创建集群的凭证创建 secret。但是,您可以手动创建使用不同的凭证的 secret。
先决条件
-
REDHAT_OFFLINE_TOKEN.您已生成此令牌,以通过 Red Hat API Tokens 下载 RHEL 镜像。 -
HKD_CRT.Host Key Document (HKD)证书在 IBM Z® 上启用安全执行。如需更多信息,请参阅 IBM 文档中的资源链接中的获取 主机密钥文档。
流程
根据以下示例创建
peer-pods-secret.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 secret:
oc apply -f peer-pods-secret.yaml
$ oc apply -f peer-pods-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.7. 重新创建 KataConfig 自定义资源 复制链接链接已复制到粘贴板!
您必须为机密容器重新创建 KataConfig 自定义资源(CR)。
创建 KataConfig CR 会自动重启 worker 节点。重启可能需要 10 到 60 分钟。妨碍重启时间的因素如下:
- 带有更多 worker 节点的大型 OpenShift Container Platform 部署。
- 激活 BIOS 和 Diagnostics 实用程序。
- 在硬盘而不是 SSD 上部署。
- 在物理节点上部署,如裸机,而不是在虚拟节点上部署。
- CPU 和网络较慢。
先决条件
-
您可以使用具有
cluster-admin角色的用户访问集群。
流程
根据以下示例创建
example-kataconfig.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:如果您应用了节点标签在特定节点上安装
kata-remote,请指定键和值,例如cc: 'true'。
运行以下命令来创建
KataConfigCR:oc apply -f example-kataconfig.yaml
$ oc apply -f example-kataconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新的
KataConfigCR 被创建,并在 worker 节点上作为运行时类安装kata-remote。在验证安装前,等待
kata-remote安装完成,以及 worker 节点重新引导。运行以下命令监控安装进度:
watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
$ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装kataNodes下所有 worker 的状态并且条件InProgress为False时,而不指定原因,则会在集群中安装kata-remote。运行以下命令,验证您是否已构建对等 pod 镜像并将其上传到 libvirt 卷中:
oc describe configmap peer-pods-cm -n openshift-sandboxed-containers-operator
$ oc describe configmap peer-pods-cm -n openshift-sandboxed-containers-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,监控
kata-oc机器配置池进度,以确保它处于UPDATED状态,当UPDATED等于 MACHINECOUNT 时:MACHINECOUNTwatch oc get mcp/kata-oc
$ watch oc get mcp/kata-ocCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证守护进程集:
oc get -n openshift-sandboxed-containers-operator ds/peerpodconfig-ctrl-caa-daemon
$ oc get -n openshift-sandboxed-containers-operator ds/peerpodconfig-ctrl-caa-daemonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证运行时类:
oc get runtimeclass
$ oc get runtimeclassCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME HANDLER AGE kata kata 152m kata-remote kata-remote 152m
NAME HANDLER AGE kata kata 152m kata-remote kata-remote 152mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.8. 创建信任身份验证 secret 复制链接链接已复制到粘贴板!
您必须为 Trustee 创建身份验证 secret。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。
流程
运行以下命令来创建私钥:
openssl genpkey -algorithm ed25519 > privateKey
$ openssl genpkey -algorithm ed25519 > privateKeyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建公钥:
openssl pkey -in privateKey -pubout -out publicKey
$ openssl pkey -in privateKey -pubout -out publicKeyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 secret:
oc create secret generic kbs-auth-public-key --from-file=publicKey -n trustee-operator-system
$ oc create secret generic kbs-auth-public-key --from-file=publicKey -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 secret:
oc get secret -n trustee-operator-system
$ oc get secret -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.9. 创建信任配置映射 复制链接链接已复制到粘贴板!
您必须创建配置映射来配置 Trustee 服务器。
先决条件
- 您已为 Trustee 创建了路由。
流程
创建
kbs-config-cm.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建配置映射:
oc apply -f kbs-config-cm.yaml
$ oc apply -f kbs-config-cm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.10. 获取 IBM Secure Execution 标头 复制链接链接已复制到粘贴板!
您必须获取 IBM Secure Execution (SE)标头。
先决条件
- 您有一个网络块存储设备,用于临时存储 SE 标头。
流程
运行以下命令,为 SE 标头创建一个临时文件夹:
mkdir -p /tmp/ibmse/hdr
$ mkdir -p /tmp/ibmse/hdrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从 IBM s390 Linux 存储库下载
pvextract-hdr工具:wget https://github.com/ibm-s390-linux/s390-tools/raw/v2.33.1/rust/pvattest/tools/pvextract-hdr -O /tmp/pvextract-hdr
$ wget https://github.com/ibm-s390-linux/s390-tools/raw/v2.33.1/rust/pvattest/tools/pvextract-hdr -O /tmp/pvextract-hdrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令使工具可执行:
chmod +x /tmp/pvextract-hdr
$ chmod +x /tmp/pvextract-hdrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令设置
$IMAGE_OUTPUT_DIR变量:export IMAGE=$IMAGE_OUTPUT_DIR/se-podvm-commit-short-id.qcow2
$ export IMAGE=$IMAGE_OUTPUT_DIR/se-podvm-commit-short-id.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来设置
$IMAGE变量:export IMAGE=/root/rooo/se-podvm-d1fb986-dirty-s390x.qcow2
$ export IMAGE=/root/rooo/se-podvm-d1fb986-dirty-s390x.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来启用
nbd内核模块:modprobe nbd
$ modprobe nbdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 SE 镜像连接到网络块设备(NBD):
qemu-nbd --connect=/dev/nbd0 $IMAGE
$ qemu-nbd --connect=/dev/nbd0 $IMAGECopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 SE 镜像创建挂载目录:
mkdir -p /mnt/se-image/
$ mkdir -p /mnt/se-image/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来暂停进程:
sleep 1
$ sleep 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令列出块设备:
lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在可用的 NBD 分区上挂载 SE 镜像目录,并运行以下命令来提取 SE 标头:
mount /dev/<nbdXp1> /mnt/se-image/ /tmp/pvextract-hdr \ -o /tmp/ibmse/hdr/hdr.bin /mnt/se-image/se.img
$ mount /dev/<nbdXp1> /mnt/se-image/ /tmp/pvextract-hdr \ -o /tmp/ibmse/hdr/hdr.bin /mnt/se-image/se.imgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
SE header found at offset 0x014000 SE header written to '/tmp/ibmse/hdr/hdr.bin' (640 bytes)
SE header found at offset 0x014000 SE header written to '/tmp/ibmse/hdr/hdr.bin' (640 bytes)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 NBD 不可用,则会显示以下错误:
mount: /mnt/se-image: can't read superblock on /dev/nbd0p1
mount: /mnt/se-image: can't read superblock on /dev/nbd0p1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令卸载 SE 镜像目录:
umount /mnt/se-image/
$ umount /mnt/se-image/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令断开网络块存储设备:
qemu-nbd --disconnect /dev/nbd0
$ qemu-nbd --disconnect /dev/nbd0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.11. 配置 IBM 安全执行证书和密钥 复制链接链接已复制到粘贴板!
您必须为 worker 节点配置 IBM Secure Execution (SE)证书和密钥。
先决条件
- 有堡垒节点的 IP 地址。
- 您有 worker 节点的内部 IP 地址。
流程
通过执行以下步骤来获取 attestation 策略字段:
运行以下命令,从 OpenShift Trustee 存储库下载
se_parse_hdr.py脚本:wget https://github.com/openshift/trustee/raw/main/attestation-service/verifier/src/se/se_parse_hdr.py -O /tmp/se_parse_hdr.py
$ wget https://github.com/openshift/trustee/raw/main/attestation-service/verifier/src/se/se_parse_hdr.py -O /tmp/se_parse_hdr.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 SE Host Key Document (HKD)证书创建一个临时目录:
mkdir /tmp/ibmse/hkds/
$ mkdir /tmp/ibmse/hkds/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将主机密钥文档(HKD)证书复制到临时目录中:
cp ~/path/to/<hkd_cert.crt> /tmp/ibmse/hkds/<hkd_cert.crt>
$ cp ~/path/to/<hkd_cert.crt> /tmp/ibmse/hkds/<hkd_cert.crt>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意HKD 证书必须与您在创建对等 pod secret 时下载的证书相同。
运行
se_parse_hdr.py脚本来获取 attestation 策略字段:python3 /tmp/se_parse_hdr.py /tmp/ibmse/hdr/hdr.bin /tmp/ibmse/hkds/<hkd_cert.crt>
$ python3 /tmp/se_parse_hdr.py /tmp/ibmse/hdr/hdr.bin /tmp/ibmse/hkds/<hkd_cert.crt>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 SE attestation 策略配置映射记录这些值。
通过执行以下步骤来获取证书和证书撤销列表(CRL):
运行以下命令,为证书创建一个临时目录:
mkdir /tmp/ibmse/certs
$ mkdir /tmp/ibmse/certsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,下载
ibm-z-host-key-signing-gen2.crt证书:wget https://www.ibm.com/support/resourcelink/api/content/public/ibm-z-host-key-signing-gen2.crt -O /tmp/ibmse/certs/ibm-z-host-key-signing-gen2.crt
$ wget https://www.ibm.com/support/resourcelink/api/content/public/ibm-z-host-key-signing-gen2.crt -O /tmp/ibmse/certs/ibm-z-host-key-signing-gen2.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令下载
DigiCertCA.crt证书:wget https://www.ibm.com/support/resourcelink/api/content/public/DigiCertCA.crt -O /tmp/ibmse/certs/DigiCertCA.crt
$ wget https://www.ibm.com/support/resourcelink/api/content/public/DigiCertCA.crt -O /tmp/ibmse/certs/DigiCertCA.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 CRL 创建临时目录:
mkdir /tmp/ibmse/crls
$ mkdir /tmp/ibmse/crlsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令下载
DigiCertTrustedRootG4.crl文件:wget http://crl3.digicert.com/DigiCertTrustedRootG4.crl -O /tmp/ibmse/crls/DigiCertTrustedRootG4.crl
$ wget http://crl3.digicert.com/DigiCertTrustedRootG4.crl -O /tmp/ibmse/crls/DigiCertTrustedRootG4.crlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令下载
DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl文件:wget http://crl3.digicert.com/DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl -O /tmp/ibmse/crls/DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl
$ wget http://crl3.digicert.com/DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl -O /tmp/ibmse/crls/DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
生成 RSA 密钥:
运行以下命令来生成 RSA 密钥对:
openssl genrsa -aes256 -passout pass:<password> -out /tmp/encrypt_key-psw.pem 4096
$ openssl genrsa -aes256 -passout pass:<password> -out /tmp/encrypt_key-psw.pem 40961 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 RSA 密钥密码。
运行以下命令,为 RSA 密钥创建一个临时目录:
mkdir /tmp/ibmse/rsa
$ mkdir /tmp/ibmse/rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
encrypt_key.pub密钥:openssl rsa -in /tmp/encrypt_key-psw.pem -passin pass:<password> -pubout -out /tmp/ibmse/rsa/encrypt_key.pub
$ openssl rsa -in /tmp/encrypt_key-psw.pem -passin pass:<password> -pubout -out /tmp/ibmse/rsa/encrypt_key.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
encrypt_key.pem密钥:openssl rsa -in /tmp/encrypt_key-psw.pem -passin pass:<password> -out /tmp/ibmse/rsa/encrypt_key.pem
$ openssl rsa -in /tmp/encrypt_key-psw.pem -passin pass:<password> -out /tmp/ibmse/rsa/encrypt_key.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,验证
/tmp/ibmse目录的结构:tree /tmp/ibmse
$ tree /tmp/ibmseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过执行以下步骤将这些文件复制到 OpenShift Container Platform worker 节点:
运行以下命令,从
/tmp/ibmse目录创建一个压缩文件:tar -czf ibmse.tar.gz -C /tmp/ibmse
$ tar -czf ibmse.tar.gz -C /tmp/ibmseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
.tar.gz文件复制到集群中的堡垒节点:scp /tmp/ibmse.tar.gz root@<ocp_bastion_ip>:/tmp
$ scp /tmp/ibmse.tar.gz root@<ocp_bastion_ip>:/tmp1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定堡垒节点的 IP 地址。
运行以下命令,通过 SSH 连接到 bastion 节点:
ssh root@<ocp_bastion_ip>
$ ssh root@<ocp_bastion_ip>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
.tar.gz文件复制到每个 worker 节点:scp /tmp/ibmse.tar.gz core@<worker_node_ip>:/tmp
$ scp /tmp/ibmse.tar.gz core@<worker_node_ip>:/tmp1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 worker 节点的 IP 地址。
运行以下命令,提取每个 worker 节点上的
.tar.gz:ssh core@<worker_node_ip> 'sudo mkdir -p /opt/confidential-containers/ && sudo tar -xzf /tmp/ibmse.tar.gz -C /opt/confidential-containers/'
$ ssh core@<worker_node_ip> 'sudo mkdir -p /opt/confidential-containers/ && sudo tar -xzf /tmp/ibmse.tar.gz -C /opt/confidential-containers/'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令更新
ibmse文件夹权限:ssh core@<worker_node_ip> 'sudo chmod -R 755 /opt/confidential-containers/ibmse/'
$ ssh core@<worker_node_ip> 'sudo chmod -R 755 /opt/confidential-containers/ibmse/'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.12. 创建持久性存储组件 复制链接链接已复制到粘贴板!
您必须创建持久性存储组件、持久性卷(PV)和持久性卷声明(PVC),以便将 ibmse 文件夹挂载到 Trustee pod。
流程
创建
persistent-volume.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建持久性卷:
oc apply -f persistent-volume.yaml
$ oc apply -f persistent-volume.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
persistent-volume-claim.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建持久性卷声明:
oc apply -f persistent-volume-claim.yaml
$ oc apply -f persistent-volume-claim.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.13. 配置 attestation 策略 复制链接链接已复制到粘贴板!
您可以配置以下 attestation 策略设置:
- 参考值
您可以通过指定硬件平台的可信摘要来配置参考值。
客户端从正在运行的软件、受信任的执行环境(TEE)硬件和固件中收集测量,并将声明中的引用提交到 Attestation Server。这些测量必须与注册到 Trustee 的可信摘要匹配。此过程可确保机密虚拟机(CVM)正在运行预期的软件堆栈,并且未被篡改。
- 客户端的 secret
- 您必须创建一个或多个 secret 与 attested 客户端共享。
- 资源访问策略
您必须为 Trustee 策略引擎配置策略,以确定要访问哪些资源。
不要将 Trustee 策略引擎与 Attestation Service 策略引擎混淆,这决定了 TEE 证据的有效性。
- attestation 策略
- 您必须为 IBM Secure Execution 创建 attestation 策略。
流程
创建
rvps-configmap.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 该值留空。
运行以下命令来创建 RVPS 配置映射:
oc apply -f rvps-configmap.yaml
$ oc apply -f rvps-configmap.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 根据以下示例,创建一个或多个 secret 与 attested 客户端共享:
oc create secret generic kbsres1 --from-literal key1=<res1val1> \ --from-literal key2=<res1val2> -n trustee-operator-system
$ oc create secret generic kbsres1 --from-literal key1=<res1val1> \ --from-literal key2=<res1val2> -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
kbsres1机密有两个条目(key1、key2),信任ee 客户端会检索。您可以根据要求添加更多 secret。创建
resourcepolicy-configmap.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 资源策略
policy.rego的名称必须与 Trustee 配置映射中定义的资源策略匹配。 - 2
- 资源策略遵循 Open Policy Agent 规格。当 TEE 不是 tester 的示例时,此示例允许检索所有资源。
运行以下命令来创建资源策略配置映射:
oc apply -f resourcepolicy-configmap.yaml
$ oc apply -f resourcepolicy-configmap.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
attestation-policy.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 attestation 策略配置映射:
oc apply -f attestation-policy.yaml
$ oc apply -f attestation-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.14. 创建 KbsConfig 自定义资源 复制链接链接已复制到粘贴板!
您必须创建 KbsConfig 自定义资源(CR)来启动 Trustee。
然后,您可以检查 Trustee pod 和 pod 日志以验证配置。
流程
创建
kbsconfig-cr.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
KbsConfigCR:oc apply -f kbsconfig-cr.yaml
$ oc apply -f kbsconfig-cr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令来设置默认项目:
oc project trustee-operator-system
$ oc project trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查 pod:
oc get pods -n trustee-operator-system
$ oc get pods -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE trustee-deployment-8585f98449-9bbgl 1/1 Running 0 22m trustee-operator-controller-manager-5fbd44cd97-55dlh 2/2 Running 0 59m
NAME READY STATUS RESTARTS AGE trustee-deployment-8585f98449-9bbgl 1/1 Running 0 22m trustee-operator-controller-manager-5fbd44cd97-55dlh 2/2 Running 0 59mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令设置
POD_NAME环境变量:POD_NAME=$(oc get pods -l app=kbs -o jsonpath='{.items[0].metadata.name}' -n trustee-operator-system)$ POD_NAME=$(oc get pods -l app=kbs -o jsonpath='{.items[0].metadata.name}' -n trustee-operator-system)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查 pod 日志:
oc logs -n trustee-operator-system $POD_NAME
$ oc logs -n trustee-operator-system $POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
ibmse-pvc持久性卷声明公开给 Trustee pod:oc patch deployment trustee-deployment --namespace=trustee-operator-system --type=json -p='[{"op": "remove", "path": "/spec/template/spec/volumes/5/persistentVolumeClaim/readOnly"}]'$ oc patch deployment trustee-deployment --namespace=trustee-operator-system --type=json -p='[{"op": "remove", "path": "/spec/template/spec/volumes/5/persistentVolumeClaim/readOnly"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
kbs-service是否在节点端口上公开: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 198.51.100.54 <none> 8080:31862/TCP 23h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kbs-service NodePort 198.51.100.54 <none> 8080:31862/TCP 23hCopy to Clipboard Copied! Toggle word wrap Toggle overflow kbs-serviceURL 是https://<worker_node_ip>:<node_port>,例如https://172.16.0.56:31862。
5.3.15. 验证测试过程 复制链接链接已复制到粘贴板!
您可以通过创建测试 pod 并检索其机密来验证 attestation 过程。pod 镜像部署 KBS 客户端,它是一个测试 Key Broker 服务和基本测试流程的工具。
此流程是验证 attestation 是否正常工作的示例。不要将敏感数据写入标准 I/O,因为可使用内存转储捕获数据。只有写入内存的数据才会被加密。
先决条件
- 如果 Trustee 服务器和测试 pod 没有在同一集群中运行,则已创建了路由。
流程
创建
verification-pod.yaml清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 pod:
oc create -f verification-pod.yaml
$ oc create -f verification-pod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
https.crt文件复制到kbs-clientpod 中:oc cp https.crt kbs-client:/
$ oc cp https.crt kbs-client:/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取 pod secret:
oc exec -it kbs-client -- kbs-client --cert-file https.crt \ --url https://kbs-service:8080 get-resource \ --path default/kbsres1/key1
$ oc exec -it kbs-client -- kbs-client --cert-file https.crt \ --url https://kbs-service:8080 get-resource \ --path default/kbsres1/key1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
res1val1
res1val1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 只有当 attestation 成功时才会返回 secret。