このトピックでは、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> ]パラメーター
パラメーター | 必須/任意 | 種類 | 説明 |
| 可 | String | Dockerリポジトリ内のDockerイメージのユニフォームリソース識別子 (URI) 。 URIは
|
| 任意 | String | Dockerfileを含むオンプレミスディレクトリのパス。 このパスは、エンクレーブイメージが生成されるDockerイメージを作成するために使用されます。 |
| 可 | String | エンクレーブ画像ファイルの名前。 |
| 任意 | String | の秘密鍵ファイル。エンクレーブイメージファイルの署名に使用するpem形式。 このパラメーターを指定する場合は、 |
| 任意 | String | キーファイル。The key file in. エンクレーブイメージファイルの署名に使用するpem形式。 このパラメーターを指定する場合は、 |
サンプルコマンド
この例では、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
}パラメーター
パラメーター | 必須/任意 | 種類 | 説明 |
| 任意 | String | エンクレーブの起動パラメーターを含むJSON設定ファイルのパス。 このパラメーターを指定した場合、すべてのパラメーターはJSON設定ファイルで指定されているため、他のパラメーターは指定できません。 |
| 任意 | int | エンクレーブに割り当てるvCPUの数。 この数は、インスタンスのvCPUの総数未満である必要があります。 そうしないと、使用可能なvCPUが不足しているため、インスタンスは期待どおりに動作できません。
説明 インスタンスのハイパースレッドが無効になっている場合、少なくとも1つのvCPUをエンクレーブに割り当てることができます。 インスタンスでハイパースレッディングが有効になっている場合 (デフォルト設定) 、vCPUの数は偶数である必要があります。これは、エンクレーブでは少なくとも2つ、インスタンスでは少なくとも4つです。 |
| 任意 | int | エンクレーブに割り当てるvCPUのID。 vCPUの数は、インスタンスのvCPUの総数よりも少なくする必要があります。 そうしないと、使用可能なvCPUが不足しているため、インスタンスは期待どおりに動作できません。 インスタンスに対してハイパースレッディングが有効になっている場合、vCPUの数は偶数でなければなりません。 詳細については、
|
| 可 | int | エンクレーブに割り当てるメモリの量。 単位:MiB。 メモリサイズは、64 MiB以上で、インスタンスの合計メモリサイズ未満である必要があります。 メモリサイズは、エンクレーブの動作をサポートするのに十分な大きさでなければならない。 |
| 可 | String |
|
| 任意 | int | エンクレーブのVMソケット (vsock) アドレスを定義するために使用される、エンクレーブのコンテキスト識別子 (CID) 。 4以上のCIDのみを指定できます。 このパラメーターを指定しない場合、システムは使用可能なCIDをエンクレーブに割り当てます。 |
| 任意 | String | エンクレーブをデバッグモードで実行するかどうかを指定します。 このパラメーターを指定してデバッグモードを有効にするか、このパラメーターを空のままにしてデバッグモードを無効にします。 エンクレーブがデバッグモードで実行されている場合にのみ、 |
サンプルコマンド
この例では、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。 |
状態 | 飛び地の状態。 有効な値: |
フラグ | エンクレーブがデバッグモードで実行されているかどうかを示します。 有効な値: DEBUG_MODEとNONE。 |
設定
実行中のエンクレーブの出力を照会します。 これは、エンクレーブ内のアプリケーションのトラブルシューティングに役立ちます。
コマンド出力は、エンクレーブが実行されているときのエンクレーブの標準出力です。 追加の情報はありません。 したがって、コマンド出力については説明しない。
このサブコマンドは、-- debug-modeパラメーターを指定して実行されたエンクレーブでのみ実行できます。
構文
enclave-cli console --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>パラメーター
パラメーター | 必須/任意 | 種類 | 説明 |
| 可 | 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。 |
中断 | エンクレーブが終了するかどうかを示します。 有効な値は |
参考資料
Enclave CLIサブコマンドを使用すると、エラーコードが返されることがあります。 詳細については、エラーコードをご参照ください。