本文介紹如何在支援阿里雲虛擬化Enclave的執行個體中使用CLI構建、啟動和停止一個Enclave,以協助您快速掌握其操作方法。
操作步驟
建立一個支援Enclave的執行個體並為Enclave進行資源預分配。
具體操作,請參見構建Enclave機密計算環境。
構建Enclave鏡像檔案。
安裝Enclave CLI後,在
/usr/share/ali-enclaves/examples/hello目錄中包含一個Dockerfile樣本,可用於構建Enclave鏡像檔案。執行如下命令,構建名為
hello、標籤為latest的Docker鏡像。sudo docker build /usr/share/ali-enclaves/examples/hello -t hello執行如下命令,檢查Docker鏡像是否已構建成功。
sudo docker images hello:latest當返回資訊中有名為
hello、標籤為latest的Docker鏡像的相關資訊時,表示Docker鏡像已構建成功。
執行如下命令,使用Enclave CLI構建名為
hello.eif的Enclave鏡像檔案。sudo enclave-cli build-enclave --docker-uri hello:latest --output-file hello.eif若Enclave CLI未報錯,則Enclave鏡像檔案
hello.eif構建成功。Enclave CLI輸出的PCR值為Enclave的特徵雜湊值,可用於遠程證明。返回樣本如下所示:Start building the Enclave Image... Enclave Image successfully created. { "Measurements": { "HashAlgorithm": "Sha256 { ... }", "PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****", "PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****", "PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****" } }
執行如下命令,啟動Enclave。
使用建立完成的
hello.eif鏡像檔案啟動一個Enclave,以下命令會基於此Enclave鏡像檔案以偵錯模式啟動一個Enclave。該Enclave擁有2 vCPU和1024 MiB記憶體。更多參數說明,請參見運行Enclave。sudo enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path hello.eif --debug-mode以下返回資訊表示Enclave啟動成功。在以下輸出範例中,該Enclave的ID為
4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1,後續使用Enclave CLI管理該Enclave時需指定此ID。說明該Enclave的CID(context identifier,即vsock地址)為4,為系統自動分配。此CID在vsock通訊中類似於標準網路通訊中的IP地址,vsock是執行個體與非偵錯模式Enclave之間唯一的可用通道。
Start allocating memory... Started enclave with enclave-cid: 4, memory: 1024 MiB, cpu-ids: [2, 3] { "EnclaveID": "4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1", "ProcessID": 1234, "EnclaveCID": 4, "NumberOfCPUs": 2, "CPUIDs": [ 2, 3 ], "MemoryMiB": 1024 }執行如下命令,查看Enclave運行狀態。
enclave-cli describe-enclaves返回資訊中會展示Enclave ID、vCPU數量、記憶體大小和狀態等資訊,其狀態為
RUNNING,表示Enclave運行正常。[ { "EnclaveID": "4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1", "ProcessID": 1234, "EnclaveCID": 4, "NumberOfCPUs": 2, "CPUIDs": [ 2, 3 ], "MemoryMiB": 1024, "State": "RUNNING", "Flags": "DEBUG_MODE" } ]此外,由於該Enclave以偵錯模式運行,您還可以通過如下命令查看Enclave的調試輸出。
enclave-cli console --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1當Enclave運行正常時,其輸出應為如下所示內容。
[ 1] Hello from the enclave side! [ 2] Hello from the enclave side! [ 3] Hello from the enclave side! ...說明本樣本中Enclave會每五秒列印一句
Hello from the enclave side!,方括弧中的數字表示列印的當前次數。執行如下命令,終止Enclave。
sudo enclave-cli terminate-enclave --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1以下返回資訊表示終止Enclave成功。
Successfully terminated enclave 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1. { "EnclaveID": "12345678-1234-5678-1234-12345678****-enc1", "Terminated": true }