本文介绍如何使用阿里云虚拟化Enclave创建一个可信的隔离空间,从而保护您的应用程序和数据的安全。
背景信息
数据一般分为三种形态:静态数据、传输中的数据以及使用中的数据。
静态数据和传输中的数据可以通过加密等方式来保障数据安全。
使用中的数据的安全性保障十分困难,目前一般使用机密计算(Confidential Computing)来保护使用中的数据的安全性。
阿里云虚拟化Enclave在ECS实例内部提供一个可信的隔离空间,将合法软件的安全操作封装在一个Enclave中,保障您的代码和数据的机密性与完整性,不受恶意软件的攻击。 适用于对敏感和机密数据有强保护需求的业务,例如金融服务、互联网、医疗等。
Enclave的工作原理
使用阿里云虚拟化Enclave构建机密计算环境的工作原理,是在ECS实例(即主VM)内切分计算资源(包括vCPU和内存),创建一个Enclave VM(简称EVM)作为可信执行环境。EVM的安全性保障体现在以下几方面:
由底层虚拟化技术提供安全隔离,EVM和主VM之间隔离,并且和其他ECS实例也隔离。
EVM运行独立的、定制化的可信操作系统,没有持久化存储、交互式连接或外部网络通路,仅允许通过本地安全信道(基于vsock)与主VM进行通信,最大程度缩小攻击面。您可以将涉及机密数据的应用放入EVM中运行,通过安全调用的形式与运行在主VM上的应用进行交互。
阿里云虚拟化Enclave的工作原理图如下所示。
阿里云虚拟化Enclave提供的安全性由多个方面结合实现。底层基于带有TPM/TCM芯片的第三代神龙架构,且为EVM提供vTPM/vTCM设备来增强其安全性和可信能力;上层提供高兼容性的SDK,方便您快速搭建Enclave环境并使用。在可信证明能力方面,您可以对运行在机密执行环境中的代码进行验证,例如借助SDK,机密应用可在运行时生成证明材料(包括平台、应用信息、签名等),再通过远程证明服务端(可结合KMS)验证证明材料的有效性。当主VM切分资源给EVM,并且EVM开始运行时,底层会执行资源访问隔离,确保主VM无法访问这些已经切分出去的vCPU或内存资源,保障EVM的正常运行和私密性。
阿里云虚拟化Enclave功能的架构图如下所示。
使用限制
仅g8i、c8i、r8i规格族中4 vCPU以上的实例规格支持阿里云虚拟化Enclave。
每台ECS实例只允许创建一个Enclave。
使用Enclave前,您必须至少为主VM保留一个处理器物理核以及部分内存,剩余的处理器和内存资源可以灵活地分配给Enclave。如果您开启了超线程,则代表保留了属于一个物理核的两个处理器超线程,因此启用Enclave特性的ECS实例至少需要具备4 vCPU。
其他通用限制,请参见使用限制。
创建Enclave实例
在控制台创建具备Enclave特性的实例步骤与创建普通实例类似,但需要注意一些特定选项。本步骤重点介绍Enclave实例相关的特定配置,如果您想了解其他通用配置,请参见自定义购买实例。
访问ECS管理控制台-实例。
在页面左侧顶部,选择目标资源所在的资源组和地域。
单击创建实例,按照以下配置创建对应实例。
配置项
说明
配置项
说明
实例规格
g8i、c8i、r8i规格族中4 vCPU以上的实例规格。
镜像
选中Enclave复选框,选择Alibaba Cloud Linux 2.1903 LTS 64位 UEFI版镜像。
选择Enclave时,会默认安装可信系统。
实例RAM角色
选择阿里云提供的服务角色AliyunECSInstanceForYundunSysTrustRole。
安装Enclave CLI
安装Enclave CLI的RPM包。
执行如下命令,下载Enclave CLI的RPM包。
wget https://enclave-cn-beijing.oss-cn-beijing.aliyuncs.com/download/linux/enclave-cli/x86_64/2.1903/enclave-cli-1.0.8-1.x86_64.rpm
执行如下命令,安装Enclave CLI。
sudo rpm -ivh enclave-cli-1.0.8-1.x86_64.rpm
执行如下命令,查看Enclave CLI版本。
enclave-cli --version
当返回Enclave CLI的版本信息时,说明Enclave CLI已安装成功。
将当前用户添加到
de
用户组和docker
用户组。执行如下命令,将当前用户添加到
de
用户组。sudo usermod -aG de <username>
<username>
请替换成实际的用户名,如test
。执行如下命令,将当前用户添加到
docker
用户组。sudo usermod -aG docker <username>
<username>
请替换成实际的用户名,如test
。重新登录实例,使上述配置生效。
为Enclave预分配供其使用的vCPU和内存。
执行如下命令,打开
allocator.yaml
配置文件。sudo vim /etc/ali-enclaves/allocator.yaml
按
i
键进入编辑模式。修改配置项内容,具体的配置项说明如下:
memory_mib:分配的内存大小,单位:MiB。
cpu_count:分配的vCPU个数。
以如下配置为例,表示为Enclave分配1024 MiB内存和2 vCPU。
# Enclave configuration file. # # How much memory to allocate for enclaves (in MiB). memory_mib: 1024 # # How many CPUs to reserve for enclaves. cpu_count: 2
按
Esc
键,输入:wq
,按Enter
键退出并保存文件。
执行如下命令,启动并设置开启自启动Enclave资源分配服务。
sudo systemctl start ali-enclaves-allocator.service && \ sudo systemctl enable ali-enclaves-allocator.service
设置完成后,Enclave资源分配服务会根据设置的vCPU生成一个Enclave可用的vCPU池。ECS实例不能再使用池中的vCPU,Enclave启动时只能从此池中选取其所用的vCPU。
若后续需要修改为Enclave分配的资源,则应再次修改
allocator.yaml
配置文件并执行如下命令重启Enclave资源分配服务。sudo systemctl restart ali-enclaves-allocator.service
执行如下命令,查看Enclave资源分配服务状态。
systemctl status ali-enclaves-allocator.service
当返回信息如下所示时,表示Enclave资源分配服务已启动。
执行如下命令,启动并设置开机自启动Docker服务。
sudo systemctl start docker && sudo systemctl enable docker
若您不再使用阿里云虚拟化Enclave,可以执行
sudo yum remove enclave-cli
卸载Enclave CLI。
相关文档
关于Enclave CLI的更多使用说明,请参见快速使用Enclave CLI。
- 本页导读 (1)
- 背景信息
- Enclave的工作原理
- 使用限制
- 创建Enclave实例
- 安装Enclave CLI
- 相关文档