CSV机密容器
介绍
Kata Containers 是一个使用虚拟化来提供隔离层的开源安全容器项目。Kata支持机密计算硬件技术,通过利用可信执行环境(Trusted Execution Environments)来保护客户的高度敏感的工作负载,以防止不受信任的实
体(例如:云服务商)访问租客的敏感数据。
在kata container中,您能够在在机密虚拟机中运行POD和容器,将主机/owner/管理员/CSP软件栈从kata 的TCB中移除,从而构建一个更强大的云原生多租户架构。具体做法是:在为每个租户使用的容器加密镜像远程Provisioning解密密钥前,先认证pod或容器是否已经运行在了经过认证的环境中。
海光CPU支持安全虚拟化技术CSV(China Secure Virtualization),CSV的设计目标是通过CSV虚拟机提供可信执行环境,适用的场景包括云计算、机密计算等。海光2号支持CSV1技术,提供虚拟机内存加密能力,采用国
密SM4算法,不同的CSV虚拟机使用不同的加密密钥,密钥由海光安全处理器管理,主机无法解密虚拟机的加密内存。
海光CSV加密虚拟机支持两种远程认证方式:
• pre-attestation指需要在启动TEE之前能够执行attestation过程。在云上的CSV虚拟机启动的时候,对加载的ovmf,kernel,initrd,cmdline进行静态度量,生成measurement。线下的远程证明验证者对measurement进行验证,确保启动的CSV虚拟机是符合预期的。
• runtime-attestation:在云上的CSV虚拟机运行的时候,产生带有硬件可执行环境的Quote的TLS证书。线下的远程证明验证者对TLS证书进行验证,确保CSV虚拟机运行在TEE中。
基于runtime-attestation使用机密容器
本文主要为您介绍如何在kata环境中基于海光安全加密虚拟化功能CSV(China Secure Virtualization)技术,通过runtime-attestation 认证方式,启动一个租户的加密容器镜像。
前提条件
请使用安装Hygon CPU的硬件设备,硬件信息参考如下:
• CPU型号:Hygon C86 7291 32-core Processor
• 固件版本:1600及以上
• BIOS设置:开启SME
BIOS选项SMEE用来控制是否打开内存加密功能,SMEE=Enable表示在BIOS中打开内存加密功能,SMEE=Disable表示在BIOS中关闭内存加密功能。
1. 安装Anolis 8.4 操作系统
请参考Anolis 8.4 GA说明文档安装anolis 8.4 GA。
2. 升级kernel到5.10
Anlois 8.4 的默认内核版本是4.19,5.10的内核上支持CSV远程证明功能。请升级kernel 到5.10版本。
1、请参考以下命令,添加Anolis的Experimental repo,并将kernel升级至5.10。
yum-confifig-manager --add-repo https://mirrors.openanolis.cn/anolis/8/kernel-5.10/x 86_64/os/ && \ yum update kernel
2、配置bootloader。
grubby --update-kernel=ALL --args="mem_encrypt=on kvm_amd.sev=1"
3、重启机器,请输入以下命令查看内核版本
uname -r
预期输出:
5.10.134-12.an8.x86_64
注意!!
如果您使用的是Anolis 8.6 GA镜像,可能会碰到使能SEV之后,机器Hang住无法进入系统的情况。请参考以下步骤降级grub2-efifi之后,可以正常启动这个特性
yum downgrade grub2-efifi
3. 检查CSV使能状态
1、在操作系统内执行:
dmesg | grep -i sev
出现如下结果时,表示CSV已经使能。
[ 9.179127 ] ccp 0000:05:00.2: sev enabled [ 10.297951] ccp 0000:05:00.2: SEV API:1.2 build:0 [ 10.311454] SEV supported: 11 ASIDs
1、检查kvm_amd和ccp模块是否成功安装。
lsmod | grep kvm
4. 使用hag检查固件版本信息
1、安装hag
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 hag
1、通过hag获得平台状态
sudo hag --platform_status api_major: 1 api_minor: 2 platform_state: CSV_STATE_INIT owner: PLATFORM_STATE_SELF_OWN chip_secure: SECURE fw_enc: ENCRYPTED fw_sign: SIGNED es: CSV ES build id: 1600 bootloader version: 0.0.0 guest_count: 0 supported csv guest: 11 platform_status command successful
注意:固件build id要大于等于1600才可以支持远程证明。若版本低于1600,请联系BIOS厂商提供PI版本>=2.1.0.2的BIOS。
《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于runtime-attestation使用机密容器(2) https://developer.aliyun.com/article/1231359?groupCode=aliyun_linux