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

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

基于runtime-attestation使用签名容器


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


前提条件

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


背景信息

1685090515946.png

相较于Confifidential Container v0,Confifidential Container v1增加支持镜像签名和验签,并使用image-rs取代umoci和skopeo来完成镜像的相关管理功能。更多相关信息,请参考ccv1_image_security_design 。

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

④:attestation-agent 通过 vm-attestation hypercall 获取包括 attestation-report 、chip-id 等内容的 CSV VM evidence;

⑤:attestation-agent 发送 CSV VM evidence 给 verdictd server;verdictd 验证 CSV VM evidence 的证书链、签名、digest 等内容;与 attestation-agent 建立基于 rats-tls 的可信硬件环境的安全通道;

⑥⑦:attestation-agent 向verdictd server 请求验签 key和image policy,verdictd 作为 KBS 通过安全通道发送 policy 文件和验签key发送给 attestation-agent;

⑧:image-rs 使用 key 验签镜像;

⑨:启动镜像运行 workload


步骤一:配置权限

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


步骤二:制作签名的应用容器镜像

1.生成GPG密钥对

GPG:GNU Privacy Guard , 用于加密、签名通信内容及管理非对称密钥等。 这里假设用户名为 testing,邮箱为test@higon.cn,请按gpg2提示输入用户名、邮箱、密码等信息。

gpg2 --gen-key

上述执行完成后,执行 gpg2 --list-keys 列举生成的密钥: 可看见类似如下内容:

[root@localhost test]# gpg2 --list-keys
/root/.gnupg/pubring.kbx
------------------------
pub rsa2048 2022-05-11 [SC] [expires: 2024-05-10]
 B0801A210472A10CC22090C8B27A004C4E80D3E5
uid [ultimate] testing <test@hygon.cn>
sub rsa2048 2022-05-11 [E] [expires: 2024-05-10]

由于verdictd不支持kbx格式pubkey,还需执行如下操作生成pubring.gpg

cd /root/.gnupg/
gpg2 --armor --export --output pubring.gpg test@hygon.cn

2. 制作签名的应用容器镜像

以docker.io/library/busybox:latest这个镜像为例,假设用户名为test,则远端的个人仓库为docker.io/test/busybox。

注意:在实际操作中,应将docker.io/test更名为实际操作的用户名,docker.io/xxxx。

首先配置 /etc/containers/registries.d/default.yaml 文件内容如下:

default-docker:
 sigstore-staging: fifile:///var/lib/containers/sigstore

然后用skopeo copy --sign-by进行签名, 以用户test为例:执行成功后在https://hub.docker.com/r/test/busybox/tags 上可观察到sig-test的tag。

skopeo login docker.io --username <$username> --password <$password>
skopeo copy --remove-signatures --sign-by test@hygon.cn \
 docker://docker.io/library/busybox:latest \
 docker://docker.io/test/busybox:sig-test
skopeo logout docker.io/test

以用户test为例:在本地可观察到 /var/lib/containers/sigstore 目录下多出了test目录(这样就完成了签名的准备工作):

tree /var/lib/containers/sigstore
/var/lib/containers/sigstore
└── test
 └── busybox@
sha256=52f431d980baa76878329b68ddb69cb124c25efa6e206d8b0bd797a828f0528e
 └── signature-1


步骤三:安装kata 环境

请参考《基于runtime-attestation使用机密容器》指南的步骤二来安装kata环境,并参考以下步骤更新initrd文件和kata 配置文件。

更新initrd文件

解压initrd image

cp initrd.run.img ./initrd.img.gz
gunzip initrd.img.gz
mkdir initrd
cd initrd/
cpio -ivmd < ../initrd.img

配置待验证镜像签名文件

将 /var/lib/containers/sigstore 目录下的所有内容 复制到initrd/var/lib/containers/sigstore:

sudo cp -rf /var/lib/containers/sigstore/* initrd/var/lib/containers/sigstore

重新打包initrd

cd initrd/
fifind . | cpio -o -H newc > ../initrd.new.img
gzip ../initrd.new.img
cd ../ && mv initrd.new.img.gz initrd.new.img
cp initrd.new.img initrd.run.img


步骤四:安装containerd

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


步骤五:搭建kubenetes运行环境

请参考《基于runtime-attestation使用机密容器》指南的步骤四来搭建kubenetes运行环境。



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

相关文章
|
20小时前
|
Kubernetes Cloud Native 微服务
企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
|
9天前
|
Kubernetes Cloud Native Docker
云原生技术演进之路:从微服务到容器化
在数字化浪潮的推动下,云原生技术不断演进,为现代软件开发带来革命性变化。本文将深入探讨云原生技术的核心要素—微服务和容器化,揭示它们如何促进软件的快速迭代、可扩展性和可靠性提升。通过分析相关数据和案例研究,我们旨在阐明云原生技术在加速企业数字化转型中的关键作用。
|
17天前
|
运维 监控 Cloud Native
探索云原生架构的未来:容器化与微服务
在数字化浪潮的推动下,云原生技术正迅速成为企业数字化转型的核心。本文将深入探讨云原生架构的关键组成部分——容器化和微服务,并分析它们如何共同塑造着现代软件的开发、部署和运维。我们将从容器的基本概念出发,逐步解析微服务架构的设计原则,以及它们如何适应快速变化的市场需求。通过实际案例,我们还将揭示云原生技术带来的挑战与机遇,为读者提供一幅云原生技术发展的全景图。
|
19天前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
|
19天前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
|
20天前
|
运维 Kubernetes Cloud Native
云原生时代的技术革命:Kubernetes与容器编排
【6月更文挑战第17天】在数字化转型的浪潮中,云原生技术正成为推动企业IT架构现代化的核心力量。本文将深入探讨Kubernetes作为云原生生态中的佼佼者,如何引领容器编排的技术革命,并分析其在现代应用部署、管理和扩展中的关键作用。通过实例和案例分析,我们将揭示Kubernetes如何助力企业实现更高效、灵活和可靠的云原生应用管理。
|
1月前
|
存储 安全 Linux
Podman入门全指南:安装、配置与运行容器
Podman入门全指南:安装、配置与运行容器
584 1
|
1月前
|
Kubernetes 负载均衡 Cloud Native
云原生架构之容器技术
容器作为标准化软件单元,它将应用及其所有依赖项打包,使应用不再受环境限制,在不同计算环境间快速、可靠地运行。
60 9
|
2天前
|
边缘计算 物联网 开发者
什么是容器Docker?
什么是容器?容器,也叫Docker,是一个开源的容器化平台,用于开发、测试和部署应用程序。通过将软件打包为标准化的单元(容器),使得应用程序可以在任何地方一致地运行,不论是在开发者的本地机器上,还是在云计算平台上。Docker容器包含了应用程序运行所需的一切,包括代码、运行时、系统工具、系统库等,从而解决了“在我这里可以正常工作,但在服务器上不行”的问题。
16 1
|
6天前
|
缓存 Linux 开发工具
docker的centos容器使用yum报错
docker的centos容器使用yum报错
22 0