すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Enclave CLIのサブコマンド

最終更新日:Aug 22, 2024

このトピックでは、Enclave CLIで使用できるサブコマンドについて説明します。

Enclave CLIをインストールした後、次のコマンドを実行して、すべてのEnclave CLIサブコマンドと各サブコマンドの使用状況を表示できます。

enclave-cli --help # Lists all Enclave CLI subcommands.
enclave-cli <sub-command> --help # Displays the usage notes for the specified command.

build-enclave

でDockerイメージをエンクレーブイメージファイルに変換します。eif形式。 Dockerイメージを指定するには、Dockerfileを含むオンプレミスディレクトリを指定するか、DockerリポジトリでDockerイメージを指定します。

サブコマンドは、エンクレーブイメージファイルの測定値のセットを返す。 システムは、これらの測定値を、エンクレーブが動作するときに生成される測定値と比較する。 2組の測定値が一致する場合、エンクレーブは証明される。

説明

Alibaba CloudのEnclave CLIでは、これらの測定値はプラットフォーム設定レジスタ (PCR) の形式で提供されます。 これらのPCRは、仮想トラステッドプラットフォームモジュール (vTPM) によって生成され、TPM 2.0規格に準拠する。

構文

enclave-cli build-enclave \
  --docker-uri <repository>:<tag> \
  --output-file <enclave-image-filename> \
  [ --docker-dir <path-to-dockerfile-directory> ] \
  [ --private-key <private-key> --signing-certificate <certificate> ]

パラメーター

パラメーター

必須/任意

種類

説明

-- docker-uri

String

Dockerリポジトリ内のDockerイメージのユニフォームリソース識別子 (URI) 。 URIは <repository >:< tag> 形式です。

-- docker-dirパラメーターを指定すると、-- Docker-URIパラメーターで指定されたuriを使用してオンプレミスのdockerイメージが作成され、エンクレーブイメージの生成に役立ちます。

-- docker-dir

任意

String

Dockerfileを含むオンプレミスディレクトリのパス。 このパスは、エンクレーブイメージが生成されるDockerイメージを作成するために使用されます。

-- 出力ファイル

String

エンクレーブ画像ファイルの名前。

-- private-key

任意

String

の秘密鍵ファイル。エンクレーブイメージファイルの署名に使用するpem形式。

このパラメーターを指定する場合は、-- signing-certificateパラメーターも指定する必要があります。 これらのパラメーターを指定すると、署名付きエンクレーブイメージファイルが作成されます。 コマンド出力には、証明プロセス中に署名済みファイルの作成者を証明するために使用できる追加のPCR12値が含まれています。 PCR12は、署名されたファイルに対して指定された署名証明書の尺度である。

-- 署名証明書

任意

String

キーファイル。The key file in. エンクレーブイメージファイルの署名に使用するpem形式。 このパラメーターを指定する場合は、-- private-keyパラメーターも指定する必要があります。

サンプルコマンド

この例では、URIがsample:latestであるDockerイメージは、sample.eifという名前のエンクレーブイメージファイルに変換されます。

enclave-cli build-enclave --docker-uri sample:latest --output-file sample.eif

サンプル出力

Start building the Enclave Image...
Enclave Image successfully created.
{
  "Measurements": {
    "HashAlgorithm": "Sha256 { ... }",
    "PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****",
    "PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****",
    "PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****"
  }
}

パラメーター

項目

説明

測定

JSON形式のエンクレーブ画像ファイルの測定値。

HashAlgorithm

測定値を生成するために使用されるハッシュアルゴリズム。

PCR8

エンクレーブ画像ファイルの測定。

PCR9

カーネルとブートローダーの測定。

PCR11

アプリケーションの測定。

run-enclave

エンクレーブイメージファイルに基づいて新しいエンクレーブを開始します。 このプロセスでは、保存されたvCPUとメモリが新しいエンクレーブに割り当てられます。

説明

ECSインスタンスで実行できるエンクレーブは1つだけです。

構文

enclave-cli run-enclave \
  --cpu-count <vcpu-count> \
  --cpu-ids <list-of-vcpu-ids> \
  --memory <amount-of-memory-in-MiB> \
  --eif-path <enclave-image-file-path> \
  [ --enclave-cid <enclave-cid> ] \
  [ --debug-mode ] \
  [ --config <json-config-file> ]

このサブコマンドのJSON設定ファイルは、次の形式です。

{
    "cpu_count": <vcpu-count>,
    "cpu_ids": <list-of-vcpu-ids>,
    "memory_mib": <amount-of-memory-in-MiB>,
    "eif_path": "<enclave-image-file-path>",
    "enclave_cid": <enclave-cid>,
    "debug_mode": true|false
}

パラメーター

パラメーター

必須/任意

種類

説明

-- config

任意

String

エンクレーブの起動パラメーターを含むJSON設定ファイルのパス。

このパラメーターを指定した場合、すべてのパラメーターはJSON設定ファイルで指定されているため、他のパラメーターは指定できません。

--cpu-count

任意

int

エンクレーブに割り当てるvCPUの数。 この数は、インスタンスのvCPUの総数未満である必要があります。 そうしないと、使用可能なvCPUが不足しているため、インスタンスは期待どおりに動作できません。

  • -- cpu-idsパラメーターを指定しない場合は、-- cpu-countパラメーターを指定する必要があります。

  • -- cpu-idsパラメーターを指定した場合、-- cpu-countパラメーターは指定できません。

説明

インスタンスのハイパースレッドが無効になっている場合、少なくとも1つのvCPUをエンクレーブに割り当てることができます。 インスタンスでハイパースレッディングが有効になっている場合 (デフォルト設定) 、vCPUの数は偶数である必要があります。これは、エンクレーブでは少なくとも2つ、インスタンスでは少なくとも4つです。 lscpuコマンドを実行し、コマンド出力でThread per coreの値を表示して、インスタンスのハイパースレッドが有効になっているかどうかを確認できます。 値が2の場合、ハイパースレッドが有効になります。

-- cpu-ids

任意

int

エンクレーブに割り当てるvCPUのID。 vCPUの数は、インスタンスのvCPUの総数よりも少なくする必要があります。 そうしないと、使用可能なvCPUが不足しているため、インスタンスは期待どおりに動作できません。

インスタンスに対してハイパースレッディングが有効になっている場合、vCPUの数は偶数でなければなりません。 詳細については、-- cpu-countパラメーターの説明をご参照ください。

  • -- cpu-countパラメーターを指定しない場合は、-- cpu-idsパラメーターを指定する必要があります。

  • -- cpu-countパラメーターを指定した場合、-- cpu-idsパラメーターは指定できません。

--memory

int

エンクレーブに割り当てるメモリの量。 単位:MiB。 メモリサイズは、64 MiB以上で、インスタンスの合計メモリサイズ未満である必要があります。 メモリサイズは、エンクレーブの動作をサポートするのに十分な大きさでなければならない。

-- eif-path

String

内のエンクレーブ画像ファイルのパス。eif形式

-- enclave-cid

任意

int

エンクレーブのVMソケット (vsock) アドレスを定義するために使用される、エンクレーブのコンテキスト識別子 (CID) 。 4以上のCIDのみを指定できます。

このパラメーターを指定しない場合、システムは使用可能なCIDをエンクレーブに割り当てます。

--debug-mode

任意

String

エンクレーブをデバッグモードで実行するかどうかを指定します。 このパラメーターを指定してデバッグモードを有効にするか、このパラメーターを空のままにしてデバッグモードを無効にします。

エンクレーブがデバッグモードで実行されている場合にのみ、enclave-cli consoleコマンドを実行して、エンクレーブのランタイム出力を取得できます。 エンクレーブがデバッグモードで実行されるときに生成される測定値はすべてゼロです。 飛び地を証明することはできません。

サンプルコマンド

この例では、sample.eifイメージファイルを使用して、2つのvCPUと1,024メモリのMiBが割り当てられ、10のCIDが割り当てられたエンクレーブを実行します。

enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path sample.eif --enclave-cid 10

サンプル出力

Start allocating memory...
Started enclave with enclave-cid: 10, memory: 1024 MiB, cpu-ids: [2, 3]
{
    "EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
    "ProcessID": 1234,
    "EnclaveCID": 10,
    "NumberOfCPUs": 2,
    "CPUIDs": [
        2,
        3
    ],
    "MemoryMiB": 1024
}

パラメーター

項目

説明

EnclaveID

エンクレーブの一意のID。

プロセスID

エンクレーブのリソースを管理するプロセスのプロセス識別子 (PID) 。

EnclaveCID

飛び地のCID。

NumberOfCPU

インスタンスからエンクレーブに割り当てられるvCPUの数。

CPUIDs

インスタンスからエンクレーブに割り当てられているvCPUのID。

MemoryMiB

インスタンスからエンクレーブに割り当てられるメモリの量。 単位:MiB。

説明-飛び地

実行中のエンクレーブに関する情報を照会します。

構文

enclave-cli describe-enclaves

サンプルコマンド

この例では、実行中のエンクレーブに関する情報が照会されます。

enclave-cli describe-enclaves

サンプル出力

[
  {
    "EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
    "ProcessID": 1234,
    "EnclaveCID": 10,
    "NumberOfCPUs": 2,
    "CPUIDs": [
      2,
      3
    ],
    "MemoryMiB": 1024,
    "State": "RUNNING",
    "Flags": "DEBUG_MODE"
  }
]

パラメーター

項目

説明

EnclaveID

エンクレーブの一意のID。

プロセスID

エンクレーブのリソースを管理するプロセスのPID。

EnclaveCID

飛び地のCID。

NumberOfCPU

インスタンスからエンクレーブに割り当てられるvCPUの数。

CPUIDs

インスタンスからエンクレーブに割り当てられているvCPUのID。

MemoryMiB

インスタンスからエンクレーブに割り当てられるメモリの量。 単位:MiB。

状態

飛び地の状態。 有効な値: RUNNINGおよびTERMINATING

フラグ

エンクレーブがデバッグモードで実行されているかどうかを示します。 有効な値: DEBUG_MODEとNONE。

設定

実行中のエンクレーブの出力を照会します。 これは、エンクレーブ内のアプリケーションのトラブルシューティングに役立ちます。

コマンド出力は、エンクレーブが実行されているときのエンクレーブの標準出力です。 追加の情報はありません。 したがって、コマンド出力については説明しない。

説明

このサブコマンドは、-- debug-modeパラメーターを指定して実行されたエンクレーブでのみ実行できます。

構文

enclave-cli console --enclave-id <enclave-id>

パラメーター

パラメーター

必須/任意

種類

説明

-- enclave-id

String

エンクレーブのID。

サンプルコマンド

この例では、デバッグモードで実行され、12345678-1234-5678-1234-12345678 ****-enc1のIDを持つエンクレーブの出力が照会されます。

enclave-cli console --enclave-id 12345678-1234-5678-1234-12345678****-enc1

サンプル出力

コマンド出力は、カーネル起動ログとアプリケーションのランタイム出力です。 エンクレーブが期待どおりに実行されると、次のようなコマンド出力が返されます。

[   1] Hello from the enclave side!
[   2] Hello from the enclave side!
[   3] Hello from the enclave side!
...

terminate-enclave

実行中のエンクレーブを終了します。

構文

enclave-cli terminate-enclave --enclave-id <enclave-id>

パラメーター

パラメーター

必須/任意

種類

説明

-- enclave-id

String

エンクレーブのID。

サンプルコマンド

この例では、実行中で、12345678-1234-5678-1234-12345678 ****-enc1のIDを持つエンクレーブが終了します。

enclave-cli terminate-enclave --enclave-id 12345678-1234-5678-1234-123456781234-enc1

サンプル出力

Successfully terminated enclave 12345678-1234-5678-1234-123456781234-enc1.
{
  "EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
  "Terminated": true
}

パラメーター

項目

説明

EnclaveID

エンクレーブの一意のID。

中断

エンクレーブが終了するかどうかを示します。 有効な値は truefalse です。

参考資料

Enclave CLIサブコマンドを使用すると、エラーコードが返されることがあります。 詳細については、エラーコードをご参照ください。