带你读《云原生机密计算最佳实践白皮书》——基于pre-attestation使用机密容器(1)

简介: 带你读《云原生机密计算最佳实践白皮书》——基于pre-attestation使用机密容器(1)

基于pre-attestation使用机密容器


本文主要为您介绍如何在kata环境中基于海光安全加密虚拟化功能CSV(China Secure Virtualization)技术,通过pre-attestaion 认证方式,启动一个租户的加密容器镜像。


前提条件

请参考《基于runtime-attestation使用机密容器》指南的前提条件一节,完成对系统环境的检查和配置。


背景信息

1685091849302.png

①②③:containerd 调用 kata-runtime创建CSV VM,kata-runtime调用 image-rs 下载加密镜像;

④⑤:kata-runtime 获取 CSV VM 的 launch_measurement发送给 gop-server;

⑥⑦:gop-server 调 用 hag 对 launch_measurement 计算和校验; 验证 gop-server 调用 hag 对 key 进行加密、形成 secret 和 secret_header,发送给 kata-runtime

⑧:kata-runtime 调用 qemu 向 CSV VM 注入 secret;CSV VM 利用固件解密 secret 获取 key 存入指定位置;

⑨:CSV VM 中的 attestation-agent 获取 key,image-rs 使用 key 解密镜像;

⑩:启动镜像运行 workload


步骤一:配置权限

请参考《基于runtime-attestation使用机密容器》指南的步骤一,完成配置权限。


步骤二:安装kata 环境

Kata Containers是一个开源的、致力于用轻量级虚拟机构建一个安全的容器运行时的实现,这些虚拟机在感觉和执行上与容器类似,但使用硬件虚拟化技术作为第二层防御,提供了更强的工作负载隔离。

关于项目的更多信息,请参见kata-container。

1. 安装kata-containers

请执行以下命令,安装kata-containers。

yum-confifig-manager --add-repo https://mirrors.openanolis.org/inclavare-containers/ano
lis8.4 && \
 rpm --import https://mirrors.openanolis.org/inclavare-containers/anolis8.4/RPM-GPG-KEY
-rpm-sign && \
 yum install -y kata-static

2. 安装qemu

pre-attestation过程中,CSV VM的measurement计算需要qemu支持kernel-hashes,在qemu 6.2.0之后开始支持kernel-hashes标志,此处提供的qemu是基于6.2.0版本构建。

yum install -y qemu-system-x86_64

3. 安装guest kernel,initrd,OVMF

ccv0-guest中包含kata运行CSV VM所需的guest kernel、initrd、OVMF、cmdline等文件。 其中:

guest的rootfs和kernel,需使用efifi_secret的内核模块以支持向文件系统中注入secret,加入AA并修改AA设置,自行构建请参考guest Rootfs and Kernel ;

这里提供的OVMF是基于f0f3f5aae7c4d346ea5e24970936d80dc5b60657 进行构建的,也可以使用edk2-stable202108后的版本自行构建,以支持CSV.

yum -y install ccv0-guest

cmdline中记录了CSV VM启动时所需的参数信息,需根据实际使用情况进行修改。可参考以下命令:

cat <<EOF | sudo tee /opt/csv/ccv0-guest/cmdline
tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkbd=1 
i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k console=hvc0 console=hvc1 
cryptomgr.notests net.ifnames=0 pci=lastbus=0 quiet panic=1 nr_cpus=`cat /proc/cpuinfo| grep
processor | wc -l` scsi_mod.scan=none agent.confifig_fifile=/etc/agent-confifig.toml 
EOF

4. 安装kata-runtime

pre-attestation使用的kata-runtime,需要基于confifidential-containers 项目的 kata-containers-CCv0 的CCv0分支,并加入CCv0: SEV prelaunch attestation by jimcadden · Pull Request #3025 · kata-containers/kata-containers · GitHub上的pre-attestation 的支持patch f682220d 和 d2c3f372; 同时也需要使用修改后的CPUID 以支持Hygon CPU。

yum -y install kata-runtime

5. 配置kata-runtime

执行以下命令,配置kata 运行时。

这里修改了kata-runtime默认配置中的qemu、guest kernel && initrd && OVMF路径;

使能confifidential-guest选项并加入guest_attestation_proxy、guest_attestation_keyset、attestation-agent-confifig等配置;

将默认内存大小由2048调整为8000;

将共享文件系统由"virtio-fs"调整为"virtio-9p"。

mkdir -p /etc/kata-containers/ && \
cp /opt/kata/share/defaults/kata-containers/confifiguration.toml /etc/kata-containers/ && \
cd /etc/kata-containers/ && \
sed -i 's/opt\/kata\/bin\/qemu-system-x86_64/opt\/qemu\/bin\/qemu-system-x86_64/'
confifiguration.toml && \
sed -i 's/kata\/share\/kata-containers\/vmlinux.container/csv\/ccv0-guest\
/vmlinuz-5.15.0-rc5+/' confifiguration.toml && \
sed -i 's/image = \"\/opt\/kata\/share\/kata-containers\/kata-containers/initrd = 
\"\/opt\/csv\/ccv0-guest\/initrd.pre/' confifiguration.toml && \
sed -i 's/\# confifidential_guest/confifidential_guest/' confifiguration.toml && \
sed -i '/confifidential_guest/a\guest_attestation = true\nguest_attestation_proxy = \"local
host:50051\"\nguest_attestation_keyset = \"KEYSET-1\"' confifiguration.toml && \
sed -i 's/kernel_params = \"\"/kernel_params = \"agent.confifig_fifile=\/etc\/agent
confifig.toml\"/' confifiguration.toml && \
sed -i 's/fifirmware = \"\"/fifirmware = \"\/opt\/csv\/ccv0-guest\/OVMF.fd\"/'
confifiguration.toml && \
sed -i 's/default_memory = 2048/default_memory = 8000/' confifiguration.toml && \
sed -i 's/shared_fs = \"virtio-fs\"/shared_fs = \"virtio-9p\"/' confifiguration.toml && \
sed -i 's/\#service_offlfflffload/service_offlfflffload/' confifiguration.toml


步骤三:安装containerd

请参考《基于runtime-attestation使用机密容器》指南的步骤三来安装containerd。


步骤四:搭建运行环境

请参考kubernetes官方指南安装Kubernetes cluster。搭建kubenetes运行环境。




《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于pre-attestation使用机密容器(2) https://developer.aliyun.com/article/1231282?groupCode=aliyun_linux


相关文章
|
6天前
|
Kubernetes 搜索推荐 Docker
K8S容器运行时弃用Docker转型Containerd
K8S容器运行时弃用Docker转型Containerd
96 0
|
6天前
|
Oracle 关系型数据库 数据库
|
6天前
|
运维 Kubernetes Cloud Native
构建高效云原生运维体系:Kubernetes最佳实践
【5月更文挑战第9天】 在动态和快速演变的云计算环境中,高效的运维是确保应用稳定性与性能的关键。本文将深入探讨在Kubernetes环境下,如何通过一系列最佳实践来构建一个高效且响应灵敏的云原生运维体系。文章不仅涵盖了容器化技术的选择与优化、自动化部署、持续集成/持续交付(CI/CD)流程的整合,还讨论了监控、日志管理以及灾难恢复策略的重要性。这些实践旨在帮助运维团队有效应对微服务架构下的复杂性,确保系统可靠性及业务的连续性。
|
6天前
|
Kubernetes Cloud Native 持续交付
构建高效稳定的云原生应用:容器编排与微服务治理实践
【5月更文挑战第14天】 随着企业数字化转型的深入,云原生技术以其弹性、敏捷和可扩展的特性成为现代应用开发的首选模式。本文将探讨如何通过容器编排工具如Kubernetes以及微服务架构的有效治理,构建和维护高效且稳定的云原生应用。我们将分析容器化技术的优势,并结合案例讨论在多云环境下实现持续集成、持续部署(CI/CD)的最佳实践,同时解决微服务带来的分布式复杂性问题。通过本文的阐述,读者将获得一套提升系统可靠性和业务连续性的策略框架。
7 0
|
6天前
|
NoSQL Redis Docker
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
25 0
|
6天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里云函数计算中,容器运行过程中的最大内存使用量获取如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
43 2
|
6天前
|
运维 监控 Linux
【专栏】Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用
【4月更文挑战第28天】本文介绍了Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用。通过基础和高级用法示例,如列出所有容器、搜索特定镜像、监控资源使用等,帮助读者理解和提升容器管理效率。对于Linux运维工程师,掌握`docker ps`是必备技能。
|
6天前
|
人工智能 Kubernetes Serverless
全球首款容器计算产品重磅发布,激活上云用云新范式
随着阿里云的Serverless化演进历程进入了快车道,截至2023年10月,阿里云已拥有超过40款Serverless化云产品,并推出全球首款容器计算服务ACS(Alibaba Cloud Container Compute Service,以下简称ACS)。
|
6天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:容器化与微服务架构的融合
【4月更文挑战第24天】 随着云计算的不断演进,云原生技术已成为企业数字化转型的核心动力。本文深入探讨了如何通过容器化技术和微服务架构的融合,构建高效、可扩展且易于管理的云原生应用。我们分析了容器化带来的隔离性和可移植性优势,以及微服务架构在提升系统灵活性和促进团队协作方面的重要作用。文章还提供了实施策略,包括选择合适的容器平台、确保服务间通信的安全性以及持续集成/持续部署(CI/CD)的实践,以帮助企业实现敏捷开发和快速迭代。
|
6天前
|
安全 Linux Nacos
如何在CentOS使用Docker运行Nacos容器并实现无公网IP远程访问UI界面
如何在CentOS使用Docker运行Nacos容器并实现无公网IP远程访问UI界面

热门文章

最新文章