Tema ini menjelaskan subperintah yang tersedia di CLI Enclave untuk membantu Anda memahami dan menggunakannya.
Setelah menginstal CLI Enclave, jalankan perintah berikut untuk melihat semua subperintah CLI Enclave beserta catatan penggunaan masing-masing:
enclave-cli --help # Menampilkan semua subperintah CLI Enclave.
enclave-cli <sub-command> --help # Menampilkan catatan penggunaan untuk perintah yang ditentukan.build-enclave
Mengonversi gambar Docker menjadi file gambar enclave dalam format .eif. Untuk menentukan gambar Docker, gunakan direktori lokal yang berisi Dockerfile atau tentukan gambar Docker dari repositori Docker.
Subperintah ini mengembalikan serangkaian pengukuran dari file gambar enclave. Sistem akan membandingkan pengukuran ini dengan pengukuran yang dihasilkan saat enclave berjalan. Jika kedua set pengukuran cocok, enclave diverifikasi.
Dalam CLI Enclave Alibaba Cloud, pengukuran ini disediakan dalam bentuk register konfigurasi platform (PCR). PCR ini dihasilkan oleh modul platform tepercaya virtual (vTPM) dan sesuai dengan standar TPM 2.0.
Sintaksis
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> ]Parameter
Parameter | Wajib | Tipe | Deskripsi |
| Ya | String | Pengenal sumber daya seragam (URI) dari gambar Docker di repositori Docker. URI dalam format Jika Anda menentukan parameter |
| Tidak | String | Path direktori lokal yang berisi Dockerfile. Path digunakan untuk membuat gambar Docker berdasarkan mana gambar enclave dihasilkan. |
| Ya | String | Nama file gambar enclave. |
| Tidak | String | File kunci privat dalam format .pem yang ingin Anda gunakan untuk menandatangani file gambar enclave. Jika Anda menentukan parameter ini, Anda juga harus menentukan parameter |
| Tidak | String | File kunci dalam format .pem yang ingin Anda gunakan untuk menandatangani file gambar enclave. Jika Anda menentukan parameter ini, Anda juga harus menentukan parameter |
Contoh perintah
Dalam contoh ini, gambar Docker dengan URI sample:latest dikonversi menjadi file gambar enclave bernama sample.eif.
enclave-cli build-enclave --docker-uri sample:latest --output-file sample.eifContoh output
Mulai membangun Gambar Enclave...
Gambar Enclave berhasil dibuat.
{
"Measurements": {
"HashAlgorithm": "Sha256 { ... }",
"PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****",
"PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****",
"PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****"
}
}Parameter
Parameter | Deskripsi |
Measurements | Pengukuran file gambar enclave dalam format JSON. |
HashAlgorithm | Algoritma hashing yang digunakan untuk menghasilkan pengukuran. |
PCR8 | Pengukuran file gambar enclave. |
PCR9 | Pengukuran kernel dan bootloader. |
PCR11 | Pengukuran aplikasi. |
run-enclave
Memulai enclave baru berdasarkan file gambar enclave. Selama proses ini, vCPU dan memori yang dialokasikan diberikan ke enclave baru.
Hanya satu enclave yang dapat dijalankan pada Instance ECS.
Sintaksis
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> ]File konfigurasi JSON untuk subperintah ini memiliki format berikut:
{
"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
}Parameter
Parameter | Wajib | Tipe | Deskripsi |
| Tidak | String | Path file konfigurasi JSON yang berisi parameter startup enclave. Jika Anda menentukan parameter ini, tidak ada parameter lain yang dapat ditentukan karena semua parameter ditentukan dalam file konfigurasi JSON. |
| Tidak | int | Jumlah vCPU yang akan dialokasikan ke enclave. Jumlah tersebut harus kurang dari jumlah total vCPU instance. Jika tidak, instance tidak dapat bekerja seperti yang diharapkan karena kurangnya vCPU yang tersedia.
Catatan Jika hyper-threading dinonaktifkan untuk instance, Anda dapat mengalokasikan setidaknya satu vCPU ke enclave. Jika hyper-threading diaktifkan untuk instance (pengaturan default), jumlah vCPU harus genap, yaitu minimal dua untuk enclave dan minimal empat untuk instance. Anda dapat menjalankan perintah |
| Tidak | int | ID vCPU yang akan dialokasikan ke enclave. Jumlah vCPU harus kurang dari jumlah total vCPU instance. Jika tidak, instance tidak dapat bekerja seperti yang diharapkan karena kurangnya vCPU yang tersedia. Jika hyper-threading diaktifkan untuk instance, jumlah vCPU harus genap. Untuk informasi lebih lanjut, lihat deskripsi parameter
|
| Ya | int | Jumlah memori yang akan dialokasikan ke enclave. Unit: MiB. Ukuran memori harus lebih besar dari atau sama dengan 64 MiB dan kurang dari ukuran memori total instance. Ukuran memori juga harus cukup besar untuk mendukung operasi enclave. |
| Ya | String | Path file gambar enclave dalam format |
| Tidak | int | Pengidentifikasi konteks (CID) enclave, yang digunakan untuk menentukan alamat VM Sockets (vsock) enclave. Hanya CID 4 atau lebih yang dapat ditentukan. Jika Anda tidak menentukan parameter ini, sistem menetapkan CID yang tersedia ke enclave. |
| Tidak | String | Menentukan apakah akan menjalankan enclave dalam mode debug. Tentukan parameter ini untuk mengaktifkan mode debug, atau biarkan parameter ini kosong untuk menonaktifkan mode debug. Anda dapat menjalankan perintah |
Contoh perintah
Dalam contoh ini, file gambar sample.eif digunakan untuk menjalankan enclave dengan alokasi 2 vCPU dan 1.024 MiB memori serta CID 10.
enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path sample.eif --enclave-cid 10Contoh output
Mulai mengalokasikan memori...
Enclave dimulai dengan enclave-cid: 10, memori: 1.024 MiB, cpu-ids: [2, 3]
{
"EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
"ProcessID": 1234,
"EnclaveCID": 10,
"NumberOfCPUs": 2,
"CPUIDs": [
2,
3
],
"MemoryMiB": 1024
}Parameter
Parameter | Deskripsi |
EnclaveID | ID unik enclave. |
ProcessID | Pengidentifikasi proses (PID) dari proses yang mengelola sumber daya enclave. |
EnclaveCID | CID enclave. |
NumberOfCPUs | Jumlah vCPU yang dialokasikan ke enclave dari instance. |
CPUIDs | ID vCPU yang dialokasikan ke enclave dari instance. |
MemoryMiB | Jumlah memori yang dialokasikan ke enclave dari instance. Unit: MiB. |
describe-enclaves
Meminta informasi tentang enclave yang sedang berjalan.
Sintaksis
enclave-cli describe-enclavesContoh perintah
Dalam contoh ini, informasi tentang enclave yang sedang berjalan diminta.
enclave-cli describe-enclavesContoh output
[
{
"EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
"ProcessID": 1234,
"EnclaveCID": 10,
"NumberOfCPUs": 2,
"CPUIDs": [
2,
3
],
"MemoryMiB": 1024,
"State": "RUNNING",
"Flags": "DEBUG_MODE"
}
]Parameter
Parameter | Deskripsi |
EnclaveID | ID unik enclave. |
ProcessID | PID proses yang mengelola sumber daya enclave. |
EnclaveCID | CID enclave. |
NumberOfCPUs | Jumlah vCPU yang dialokasikan ke enclave dari instance. |
CPUIDs | ID vCPU yang dialokasikan ke enclave dari instance. |
MemoryMiB | Jumlah memori yang dialokasikan ke enclave dari instance. Unit: MiB. |
State | Status enclave. Nilai valid: |
Flags | Menunjukkan apakah enclave berjalan dalam mode debug. Nilai valid: DEBUG_MODE dan NONE. |
console
Meminta output dari enclave yang sedang berjalan. Ini membantu Anda mendiagnosis aplikasi di dalam enclave.
Output perintah adalah output standar enclave saat berjalan. Tidak ada informasi tambahan, sehingga output perintah tidak dijelaskan.
Subperintah ini hanya dapat dijalankan pada enclave yang dijalankan dengan parameter --debug-mode ditentukan.
Sintaksis
enclave-cli console --enclave-id <enclave-id>Parameter
Parameter | Wajib | Tipe | Deskripsi |
| Ya | String | ID enclave. |
Contoh perintah
Dalam contoh ini, output dari enclave yang berjalan dalam mode debug dengan ID 12345678-1234-5678-1234-12345678****-enc1 diminta.
enclave-cli console --enclave-id 12345678-1234-5678-1234-12345678****-enc1Contoh output
Output perintah mencakup log startup kernel dan output runtime aplikasi. Jika enclave berjalan seperti yang diharapkan, output serupa dengan berikut ini dikembalikan:
[ 1] Halo dari sisi enclave!
[ 2] Halo dari sisi enclave!
[ 3] Halo dari sisi enclave!
...terminate-enclave
Mengakhiri enclave yang sedang berjalan.
Sintaksis
enclave-cli terminate-enclave --enclave-id <enclave-id>Parameter
Parameter | Wajib | Tipe | Deskripsi |
| Ya | String | ID enclave. |
Contoh perintah
Dalam contoh ini, enclave yang sedang berjalan dengan ID 12345678-1234-5678-1234-12345678****-enc1 diakhiri.
enclave-cli terminate-enclave --enclave-id 12345678-1234-5678-1234-123456781234-enc1Contoh output
Enclave 12345678-1234-5678-1234-123456781234-enc1 berhasil diakhiri.
{
"EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
"Terminated": true
}Parameter
Parameter | Deskripsi |
EnclaveID | ID unik enclave. |
Terminated | Menunjukkan apakah enclave telah diakhiri. Nilai valid: |
Referensi
Kode kesalahan mungkin dikembalikan saat menggunakan subperintah CLI Enclave. Untuk informasi lebih lanjut, lihat Kode Kesalahan.