全部產品
Search
文件中心

Elastic Compute Service:構建Enclave機密計算環境

更新時間:Apr 18, 2025

本文介紹如何使用阿里雲虛擬化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執行個體相關的特定配置,如果您想瞭解其他通用配置,請參見自訂購買執行個體

  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 CLI的RPM包。

    1. 執行如下命令,下載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
    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