构建Enclave机密计算环境

更新时间:2025-04-17 02:11:27

本文介绍如何使用阿里云虚拟化Enclave创建一个可信的隔离空间,从而保护您的应用程序和数据的安全。

背景信息

数据一般分为三种形态:静态数据传输中的数据以及使用中的数据

  • 静态数据传输中的数据可以通过加密等方式来保障数据安全。

  • 使用中的数据的安全性保障十分困难,目前一般使用机密计算(Confidential Computing)来保护使用中的数据的安全性。

阿里云虚拟化EnclaveECS实例内部提供一个可信的隔离空间,将合法软件的安全操作封装在一个Enclave中,保障您的代码和数据的机密性与完整性,不受恶意软件的攻击。 适用于对敏感和机密数据有强保护需求的业务,例如金融服务、互联网、医疗等。

Enclave的工作原理

使用阿里云虚拟化Enclave构建机密计算环境的工作原理,是在ECS实例(即主VM)内切分计算资源(包括vCPU和内存),创建一个Enclave VM(简称EVM)作为可信执行环境。EVM的安全性保障体现在以下几方面:

  • 由底层虚拟化技术提供安全隔离,EVM和主VM之间隔离,并且和其他ECS实例也隔离。

  • EVM运行独立的、定制化的可信操作系统,没有持久化存储、交互式连接或外部网络通路,仅允许通过本地安全信道(基于vsock)与主VM进行通信,最大程度缩小攻击面。您可以将涉及机密数据的应用放入EVM中运行,通过安全调用的形式与运行在主VM上的应用进行交互。

阿里云虚拟化Enclave的工作原理图如下所示。

image

阿里云虚拟化Enclave提供的安全性由多个方面结合实现。底层基于带有TPM/TCM芯片的第三代神龙架构,且为EVM提供vTPM/vTCM设备来增强其安全性和可信能力;上层提供高兼容性的SDK,方便您快速搭建Enclave环境并使用。在可信证明能力方面,您可以对运行在机密执行环境中的代码进行验证,例如借助SDK,机密应用可在运行时生成证明材料(包括平台、应用信息、签名等),再通过远程证明服务端(可结合KMS)验证证明材料的有效性。当主VM切分资源给EVM,并且EVM开始运行时,底层会执行资源访问隔离,确保主VM无法访问这些已经切分出去的vCPU或内存资源,保障EVM的正常运行和私密性。

阿里云虚拟化Enclave功能的架构图如下所示。

image

使用限制

  • g8i、c8i、r8i规格族中4 vCPU以上的实例规格支持阿里云虚拟化Enclave。

  • 每台ECS实例只允许创建一个Enclave。

  • 使用Enclave前,您必须至少为主VM保留一个处理器物理核以及部分内存,剩余的处理器和内存资源可以灵活地分配给Enclave。如果您开启了超线程,则代表保留了属于一个物理核的两个处理器超线程,因此启用Enclave特性的ECS实例至少需要具备4 vCPU。

其他通用限制,请参见使用限制

创建Enclave实例

在控制台创建具备Enclave特性的实例步骤与创建普通实例类似,但需要注意一些特定选项。本步骤重点介绍Enclave实例相关的特定配置,如果您想了解其他通用配置,请参见自定义购买实例

  1. 访问ECS管理控制台-实例

  2. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  3. 单击创建实例,按照以下配置创建对应实例。

    配置项

    说明

    配置项

    说明

    实例规格

    g8i、c8i、r8i规格族中4 vCPU以上的实例规格。

    镜像

    选中Enclave复选框,选择Alibaba Cloud Linux 2.1903 LTS 64位 UEFI镜像。

    说明

    选择Enclave时,会默认安装可信系统。

    image

    实例RAM角色

    选择阿里云提供的服务角色AliyunECSInstanceForYundunSysTrustRole

安装Enclave CLI

  1. Enclave实例中安装Docker

  2. 使用Workbench工具以SSH协议登录Enclave实例

  3. 安装Enclave CLIRPM包。

    1. 执行如下命令,下载Enclave CLIRPM包。

      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
    2. 执行如下命令,安装Enclave CLI。

      sudo rpm -ivh enclave-cli-1.0.8-1.x86_64.rpm
    3. 执行如下命令,查看Enclave CLI版本。

      enclave-cli --version

      当返回Enclave CLI的版本信息时,说明Enclave CLI已安装成功。

      image.png

  4. 将当前用户添加到de用户组和docker用户组。

    1. 执行如下命令,将当前用户添加到de用户组。

      sudo usermod -aG de <username>
      说明

      <username>请替换成实际的用户名,如test

    2. 执行如下命令,将当前用户添加到docker用户组。

      sudo usermod -aG docker <username>
      说明

      <username>请替换成实际的用户名,如test

    3. 重新登录实例,使上述配置生效。

  5. Enclave预分配供其使用的vCPU和内存。

    1. 执行如下命令,打开allocator.yaml配置文件。

      sudo vim /etc/ali-enclaves/allocator.yaml
    2. i键进入编辑模式。

    3. 修改配置项内容,具体的配置项说明如下:

      • 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
    4. Esc键,输入:wq,按Enter键退出并保存文件。

  6. 执行如下命令,启动并设置开启自启动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
  7. 执行如下命令,查看Enclave资源分配服务状态。

    systemctl status ali-enclaves-allocator.service

    当返回信息如下所示时,表示Enclave资源分配服务已启动。

    image.png

  8. 执行如下命令,启动并设置开机自启动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
  • 相关文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等