From a61b09754aa56713d0d104a1beff7525cc19ee01 Mon Sep 17 00:00:00 2001 From: liuxu Date: Mon, 19 May 2025 06:33:28 +0800 Subject: [PATCH] kuasar coco:decrypt image Signed-off-by: liuxu --- ...onfidential-containers-deployment-guide.md | 64 +++++++++++++++++-- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/docs/zh/docs/Container/isulad+kuasar-confidential-containers-deployment-guide.md b/docs/zh/docs/Container/isulad+kuasar-confidential-containers-deployment-guide.md index 707754493..58d435653 100644 --- a/docs/zh/docs/Container/isulad+kuasar-confidential-containers-deployment-guide.md +++ b/docs/zh/docs/Container/isulad+kuasar-confidential-containers-deployment-guide.md @@ -55,11 +55,13 @@ cri-sandboxers 和 cri-runtimes指定启动sandbox运行时的相关配置。其 默认情况下kuasar可以使用普通镜像仓库,如果需要使用机密镜像仓库,可以修改/var/lib/kuasar/cc-config.toml中的kernel_params参数,参考下表,以key=value的形式补充需要的参数。 -值得注意的是,由于机密容器需要在沙箱内拉容器镜像,因此需要保证主机上镜像网站的TLS证书验证通过,能正常访问镜像网站。 - |Key|Type|Description| |---|---|---| -|task.aa_kbc_params|String|远程证明代理和密钥代理配置的参数。| +|task.aa_kbc_params|String|远程证明代理的IP和端口。| +|task.aa_kbc_key_provider|String|key provider类型,目前支持"secgear"类型。| +|task.aa_ser_url|String|远程证明密钥托管服务器地址。| +|task.aa_cert|String|远程证明根证书文件路径。| +|task.aa_proto|String|与远程证明服务器通信的协议类型。| |task.https_proxy|String|拉取镜像时的https代理环境变量。| |task.no_proxy|String|拉取镜像时不使用代理地址的环境变量。| |task.enable_signature_verification|bool|安全验证开关控制。| @@ -67,7 +69,58 @@ cri-sandboxers 和 cri-runtimes指定启动sandbox运行时的相关配置。其 |task.image_registry_auth|String|鉴权文件路径。| |task.simple_signing_sigstore_config|String|用于简单签名的Sigstore配置文件。| -修改/var/lib/kuasar/cc-config.toml后,重启cc-kuasar-vmm.service后配置生效,用于拉起下一个机密沙箱。 +修改/var/lib/kuasar/cc-config.toml后,重启cc-kuasar-vmm.service后配置生效,用于拉起之后的机密沙箱。 + +值得注意的是,由于机密容器需要在沙箱内拉容器镜像,因此需要重新打包目标镜像网站的CA证书到机密虚机的rootfs镜像,方法示例如下: + +1.在镜像仓服务器:如果是本地镜像仓,需要先将镜像仓证书写入镜像本地仓所在服务器根证书,如果domain.crt文件为镜像仓证书,执行如下命令: + +```sh +$cat domain.crt >> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem +$cat domain.crt >> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt +``` + +2.在机密容器服务器:需要将访问远程镜像仓库所需的证书,打包到机密沙箱镜像:比如当机密容器服务器已经可以成功访问镜像仓服务器时,将机密容器服务器上的证书和镜像仓服务器证书domain.crt都打包到机密沙箱镜像: + +```sh +$ls /var/lib/kuasar/cc-rootfs.img +/var/lib/kuasar/cc-rootfs.img +$mkdir cc-rootfs +$mount /var/lib/kuasar/cc-rootfs.img ./cc-rootfs +$cp -r /etc/pki/ca-trust ./cc-rootfs/etc/pki/ca-trust +$cat domain.crt >> ./cc-rootfs/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem +$cat domain.crt >> ./cc-rootfs/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt +$umount ./cc-rootfs +``` + +如果还需使用远程代理和加密镜像的功能,需要做如下配置: + +1.上传加密镜像到远程镜像服务器时,需要为镜像的manifest添加注解,格式如下: + +```json +"org.opencontainers.image.enc.keys.provider.secgear": "<远程托管的密钥路径的base64编码>" +``` + +2.为远程证明服务节点预置远程证明根证书,如果该证书文件为as_cert.pem,示例步骤如下: + +```sh +$mount /var/lib/kuasar/cc-rootfs.img ./cc-rootfs +$mkdir -p ./cc-rootfs/etc/attestation/attestation-agent +$cp as_cert.pem ./cc-rootfs/etc/attestation/attestation-agent/as_cert.pem +$umount ./cc-rootfs +``` + +3.为远程证明和镜像解密服务配置参数,示例如下: + +```bash +$cat /var/lib/kuasar/cc-config.toml +... ... +kernel_params = "task.aa_kbc_params=127.0.0.1:8088 task.aa_kbc_key_provider=secgear task.aa_ser_url=xx.xx.xx.xx:8080: task.aa_cert=/etc/attestation/attestation-agent/as_cert.pem task.aa_proto=http ... ..." +``` + +当前task.aa_kbc_key_provider只支持"secgear",task.aa_proto只支持"http",默认为"http"。 + +配置完毕上述参数后,重启cc-kuasar-vmm.service后配置生效,用于拉起之后的机密沙箱。 ### 准备容器配置文件 @@ -128,6 +181,9 @@ cat pod.json #### container 配置文件 +>[!WARNING]注意 +>如果要使用加密镜像的话,在配置完毕,将`"docker.io/library/busybox-aarch64:latest"`替换为加密镜像的地址,比如:`x.x.x.x:5000/test_encryted_image:latest`。 + ```json cat local_container.json { -- Gitee