带你读《云原生机密计算最佳实践白皮书》——基于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


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
3天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
13 2
|
13天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
3天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
1天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
2天前
|
Cloud Native API 持续交付
云原生之旅:从容器到微服务的演进之路
【10月更文挑战第39天】在这篇文章中,我们将一起探索云原生技术的奥秘。通过浅显易懂的语言和生动的比喻,我们将了解云原生技术如何改变软件开发的世界。文章将带领读者从容器的基本概念出发,逐步深入到微服务架构的实践,揭示这些技术如何助力现代应用的快速迭代与可靠部署。准备好,让我们启程进入云原生的精彩世界吧!
|
4天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
12天前
|
Kubernetes Cloud Native 微服务
云原生之旅:从容器到微服务
【10月更文挑战第29天】在这篇文章中,我们将一起探索云原生的奥秘。云原生不仅仅是一种技术,更是一种文化和方法论。我们将从容器技术开始,逐步深入到微服务架构,最后探讨如何在云平台上实现高效的服务部署和管理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的技能。让我们一起踏上这段激动人心的云原生之旅吧!
|
12天前
|
运维 Kubernetes Cloud Native
云原生之旅:容器化与微服务的融合
【10月更文挑战第28天】 在数字化转型的浪潮中,云原生技术如星辰般璀璨,引领着企业IT架构的未来。本文将带你穿梭于云原生的世界,探索容器化技术和微服务架构如何携手共舞,打造灵活、高效的应用部署和运维模式。我们将通过实际代码示例,揭示这股力量背后的奥秘,并展现它们是如何为现代软件开发带来革新。准备好了吗?让我们启航,驶向云原生技术的深海。
|
14天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
44 4
|
12天前
|
Cloud Native 持续交付 云计算
云原生入门指南:从容器到微服务
【10月更文挑战第28天】在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本篇文章将带你了解云原生的基本概念,探索它如何通过容器化、微服务架构以及持续集成和持续部署(CI/CD)的实践来提升应用的可伸缩性、灵活性和可靠性。你将学习到如何利用这些技术构建和部署在云端高效运行的应用,并理解它们对DevOps文化的贡献。
33 2