本文介紹如何使用阿里雲虛擬化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執行個體相關的特定配置,如果您想瞭解其他通用配置,請參見自訂購買執行個體。
在頁面左側頂部,選擇目標資源所在的資源群組和地區。
單擊建立執行個體,按照以下配置建立對應執行個體。
配置項
說明
執行個體規格
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。