全部產品
Search
文件中心

Elastic Compute Service:快速使用Enclave CLI

更新時間:Apr 18, 2025

本文介紹如何在支援阿里雲虛擬化Enclave的執行個體中使用CLI構建、啟動和停止一個Enclave,以協助您快速掌握其操作方法。

操作步驟

  1. 建立一個支援Enclave的執行個體並為Enclave進行資源預分配。

    具體操作,請參見構建Enclave機密計算環境

  2. 構建Enclave鏡像檔案。

    安裝Enclave CLI後,在/usr/share/ali-enclaves/examples/hello目錄中包含一個Dockerfile樣本,可用於構建Enclave鏡像檔案。

    1. 執行如下命令,構建名為hello、標籤為latest的Docker鏡像。

      sudo docker build /usr/share/ali-enclaves/examples/hello -t hello
    2. 執行如下命令,檢查Docker鏡像是否已構建成功。

      sudo docker images hello:latest

      當返回資訊中有名為hello、標籤為latest的Docker鏡像的相關資訊時,表示Docker鏡像已構建成功。

      image.png

    3. 執行如下命令,使用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****"
        }
      }
  3. 執行如下命令,啟動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
    }
  4. 執行如下命令,查看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!,方括弧中的數字表示列印的當前次數。

  5. 執行如下命令,終止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
    }