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


相关文章
|
5天前
|
存储 Kubernetes Cloud Native
【阿里云云原生专栏】云原生容器存储:阿里云CSI与EBS的高效配合策略
【5月更文挑战第29天】阿里云提供云原生容器存储接口(CSI)和弹性块存储(EBS)解决方案,以应对云原生环境中的数据存储挑战。CSI作为Kubernetes的标准接口简化存储管理,而EBS则提供高性能、高可靠性的块存储服务。二者协同实现动态供应、弹性伸缩及数据备份恢复。示例代码展示了在Kubernetes中使用CSI和EBS创建存储卷的过程。
35 3
|
2天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构之容器技术
容器作为标准化软件单元,它将应用及其所有依赖项打包,使应用不再受环境限制,在不同计算环境间快速、可靠地运行。
18 9
|
3天前
|
Docker 容器
docker: 如何不新建容器 修改运行容器的端口
docker: 如何不新建容器 修改运行容器的端口
|
3天前
|
敏捷开发 Kubernetes Cloud Native
构建高效云原生应用:容器化与微服务架构的融合
【5月更文挑战第31天】 随着云计算技术的不断演进,云原生应用已成为企业数字化转型的核心。本文深入探讨了如何通过容器化技术和微服务架构的有效结合,构建高效、弹性和可扩展的云原生应用。我们将分析容器化的基本概念、优势以及它如何促进微服务架构的实施,同时提供策略和最佳实践,帮助企业实现敏捷开发和持续部署,优化资源利用,并提高系统的可靠性。
|
6天前
|
运维 Cloud Native 开发者
云原生架构的未来演进:从容器化到无服务器
【5月更文挑战第28天】 在现代IT领域,云原生技术正成为推动企业数字化转型的核心力量。本文将探讨云原生架构的关键组成部分,包括容器化、微服务以及无服务器计算,并预测这些技术的发展趋势。文章旨在提供一个全面的视角,以理解云原生生态系统如何适应日益复杂的业务需求,并支持构建更加灵活、可扩展的应用程序。
|
6天前
|
运维 Kubernetes Cloud Native
构建高效云原生应用:采用微服务架构与容器化技术
【5月更文挑战第28天】 在当今数字化转型的浪潮中,企业正迅速采纳云原生技术以保持竞争力。本文深入探讨了构建高效云原生应用的关键要素,重点分析了微服务架构和容器化技术如何共同推动应用的敏捷性、可扩展性和可靠性。通过具体案例分析,揭示了这些技术在实际业务场景中的应用效果及其带来的显著改进。
|
8天前
|
弹性计算 安全 微服务
【阿里云云原生专栏】容器网络技术前沿:阿里云Terway网络方案详解
【5月更文挑战第26天】阿里云Terway是高性能的容器网络方案,基于ECS的ENI实现,提供低延迟高吞吐的网络服务。它简化网络管理,实现安全隔离,并与阿里云服务无缝集成。Terway由CNI、Node和Controller组成,适用于微服务、混合云和多租户环境,为企业数字化转型中的复杂网络需求提供强大支持。
162 1
|
8天前
|
运维 监控 Cloud Native
构建高效云原生应用:容器化与微服务架构的融合
【5月更文挑战第26天】 在数字化转型的浪潮中,企业正迅速将重心转向云原生技术以支撑其业务灵活性和扩展性。本文深入探讨了如何通过结合容器化技术和微服务架构来构建和维护高效的云原生应用。首先概述了云原生的核心概念及其带来的优势,接着详细分析了容器化技术的关键作用以及微服务架构的设计原则。文章还展示了如何通过持续集成/持续部署(CI/CD)流程实现快速迭代,并通过实际案例说明如何应对分布式系统带来的复杂性挑战。最终,文中提出了一系列优化策略,旨在帮助开发者和运维人员提高系统的可靠性、安全性和性能。
|
14天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第20天】 在微服务架构日益普及的今天,Docker作为其重要的实现技术之一,承载着大量应用的运行。然而,随之而来的是对于容器健康状态、资源使用情况以及性能指标的监控需求急剧增加。本文旨在探讨构建一个高效且稳定的Docker容器监控体系,不仅涵盖了监控工具的选择与配置,还详细阐述了监控数据的分析与处理流程。通过精心设计的监控策略和实时响应机制,我们能够确保系统的稳定性,并及时发现及处理潜在的问题。
|
3天前
|
数据管理 Linux Docker
docker 数据管理 与容器互联
docker 数据管理 与容器互联

热门文章

最新文章