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

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
5月前
|
存储 监控 安全
【专栏】探讨Docker Compose的核心概念、使用方法及最佳实践,助你轻松驾驭容器编排的世界
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
392 2
|
5月前
|
运维 Kubernetes Cloud Native
构建高效云原生运维体系:Kubernetes最佳实践
【5月更文挑战第9天】 在动态和快速演变的云计算环境中,高效的运维是确保应用稳定性与性能的关键。本文将深入探讨在Kubernetes环境下,如何通过一系列最佳实践来构建一个高效且响应灵敏的云原生运维体系。文章不仅涵盖了容器化技术的选择与优化、自动化部署、持续集成/持续交付(CI/CD)流程的整合,还讨论了监控、日志管理以及灾难恢复策略的重要性。这些实践旨在帮助运维团队有效应对微服务架构下的复杂性,确保系统可靠性及业务的连续性。
|
2月前
|
Kubernetes 安全 Serverless
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
63 5
|
2月前
|
运维 Cloud Native 云计算
云原生架构的演进:从微服务到无服务器计算
在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性和成本效益性,成为推动现代软件开发和运维的关键力量。本文将探讨云原生概念的演变,特别是从微服务架构到无服务器计算的转变,揭示这一进化如何影响应用程序的开发、部署和管理。通过分析实际案例,我们旨在提供对云原生技术未来趋势的洞察,同时指出企业在这一转变过程中可能面临的挑战和机遇。
38 2
|
3月前
|
运维 Cloud Native 持续交付
云原生架构的演进:从微服务到无服务器计算
【7月更文挑战第28天】在数字化浪潮的推动下,云原生技术不断演进,引领着软件开发和运维模式的革新。本文将深入探讨云原生架构的发展历程,着重分析微服务架构与无服务器计算模型如何相互补充,共同推动现代应用的开发与部署。我们将从微服务的基本原则出发,探索其如何赋能团队快速迭代和扩展应用,进而阐述无服务器计算如何简化资源管理,降低运营成本。通过对比分析,揭示两者结合的优势,为读者提供构建未来云原生应用的洞见。
|
2月前
|
人工智能 Kubernetes 持续交付
Kubernetes环境下基于微服务架构的容器化AI应用部署与管理最佳实践
【8月更文第19天】随着AI技术的快速发展,越来越多的企业开始将AI应用部署到生产环境。然而,AI应用往往包含大量的组件和服务,这使得其部署和管理变得非常复杂。微服务架构和容器化技术(如Docker)结合Kubernetes集群管理,为解决这些问题提供了强大的工具。本文将介绍如何在Kubernetes环境中部署和管理基于微服务架构的容器化AI应用。
68 0
|
3月前
|
存储 运维 监控
云原生时代的数据存储与计算优化策略
【7月更文挑战第15天】在数字化转型的浪潮中,云原生技术成为企业创新和效率提升的关键。本文将探索如何通过云原生架构实现数据存储和计算的优化,旨在为开发者和企业决策者提供实用的指导和建议,以应对日益增长的数据挑战。
|
3月前
|
运维 Cloud Native 开发者
云原生架构的演进之路:从微服务到无服务器计算
在数字化转型的浪潮中,企业不断追求更高效、灵活的IT解决方案。云原生技术作为推动现代软件部署的关键力量,其发展经历了从微服务到无服务器计算的转变。本文将深入探讨这一演进过程,揭示它如何重塑应用开发与运维模式,并展望云原生技术的未来趋势。
|
3月前
|
存储 SQL Cloud Native
云原生数据仓库使用问题之运行MySQL命令发现中文内容变成了问号,该如何解决
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
3月前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
267 2
下一篇
无影云桌面