Buat, jalankan, periksa, debug, dan hentikan enklaf pada Instance ECS menggunakan Enclave CLI.
Setelah menginstal Enclave CLI, jalankan perintah berikut untuk melihat daftar subperintah beserta penggunaannya:
enclave-cli --help # Menampilkan semua subperintah
enclave-cli <sub-command> --help # Menampilkan penggunaan untuk subperintah tertentu
build-enclave
Membuat file image enklaf (.eif) dari image Docker. Anda dapat menentukan direktori lokal yang berisi Dockerfile atau nama image dari repositori Docker.
Output mencakup ukuran garis dasar (baseline measurements) dari image enklaf. Selama remote attestation, ukuran ini dibandingkan dengan nilai waktu proses (runtime) untuk memverifikasi integritas enklaf.
Dalam enklaf virtualisasi Alibaba Cloud, ukuran (Platform Configuration Registers atau PCRs) dihasilkan oleh vTPM saat runtime dan sesuai dengan standar TPM 2.0.
Penggunaan
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 |
URI image Docker dalam format Jika |
|
|
Tidak |
String |
Jalur ke direktori lokal yang berisi Dockerfile. Digunakan untuk membuat image Docker guna menghasilkan image enklaf. |
|
|
Ya |
String |
Nama file output untuk image enklaf. |
|
|
Tidak |
String |
File kunci privat dalam format PEM untuk menandatangani image enklaf. Memerlukan |
|
|
Tidak |
String |
File sertifikat dalam format PEM untuk menandatangani image enklaf. Harus digunakan bersama |
Contoh
Buat image enklaf sample.eif dari image Docker sample:latest:
enclave-cli build-enclave --docker-uri sample:latest --output-file sample.eif
Output
Start building the Enclave Image...
Enclave Image successfully created.
{
"Measurements": {
"HashAlgorithm": "Sha256 { ... }",
"PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****",
"PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****",
"PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****"
}
}
Bidang output
|
Parameter |
Deskripsi |
|
Measurements |
Ukuran garis dasar dari image enklaf dalam format JSON. |
|
HashAlgorithm |
Algoritma hash yang digunakan untuk menghasilkan ukuran. |
|
PCR8 |
Ukuran citra enklaf. |
|
PCR9 |
Pengukuran kernel dan bootloader. |
|
PCR11 |
Ukuran aplikasi. |
run-enclave
Menjalankan enklaf dari file image dengan jumlah vCPU dan memori yang ditentukan.
Hanya satu enklaf yang dapat berjalan pada satu Instance ECS dalam satu waktu.
Sintaks
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> ]
Atau, tentukan semua parameter dalam file konfigurasi 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
}
Parameter
|
Parameter |
Wajib |
Tipe |
Deskripsi |
|
|
Tidak |
String |
Jalur ke file konfigurasi JSON yang berisi parameter startup enklaf. Jika ditentukan, jangan gunakan parameter lain. Semua parameter harus didefinisikan dalam file ini dalam format JSON. |
|
|
Tidak |
int |
Jumlah vCPU yang dialokasikan untuk enklaf. Harus kurang dari total vCPU pada instans. Apakah parameter ini wajib tergantung pada apakah Anda menentukan
Catatan
Jika Hyper-threading dinonaktifkan, enklaf dapat menggunakan 1 vCPU. Jika Hyper-threading diaktifkan (default), enklaf memerlukan jumlah vCPU genap (minimal 2), sehingga instans harus memiliki setidaknya 4 vCPU. Jalankan |
|
|
Tidak |
int |
Daftar ID vCPU yang dialokasikan untuk enklaf. Jumlahnya harus kurang dari total vCPU pada instans. Jika Hyper-threading diaktifkan, jumlah vCPU harus genap. Lihat Apakah parameter ini wajib tergantung pada apakah Anda menentukan
|
|
|
Ya |
int |
Ukuran memori untuk enklaf dalam satuan MiB. Nilai valid: 64 MiB hingga kurang dari total memori instans. Harus juga memenuhi persyaratan minimum waktu proses enklaf. |
|
|
Ya |
String |
Jalur ke file image enklaf |
|
|
Tidak |
int |
CID vsock untuk enklaf. Harus minimal 4. Jika diabaikan, sistem akan menetapkan CID yang tersedia. |
|
|
Tidak |
String |
Mengaktifkan mode debug. Abaikan untuk menjalankan dalam mode normal. Dalam mode debug, gunakan |
Contoh: Jalankan dengan parameter inline
Jalankan enklaf dari sample.eif dengan 2 vCPU, memori 1.024 MiB, dan CID 10:
enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path sample.eif --enclave-cid 10
Output:
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
}
Bidang output
|
Bidang |
Deskripsi |
|
EnclaveID |
ID enklaf. |
|
ProcessID |
PID proses management enklaf. |
|
EnclaveCID |
CID enklaf. |
|
NumberOfCPUs |
Jumlah vCPU. |
|
CPUIDs |
ID vCPU. |
|
MemoryMiB |
Memori yang dialokasikan dalam satuan MiB. |
describe-enclaves
Menampilkan informasi tentang enklaf pada instans saat ini.
Sintaks
enclave-cli describe-enclaves
Contoh
enclave-cli describe-enclaves
Output:
[
{
"EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
"ProcessID": 1234,
"EnclaveCID": 10,
"NumberOfCPUs": 2,
"CPUIDs": [
2,
3
],
"MemoryMiB": 1024,
"State": "RUNNING",
"Flags": "DEBUG_MODE"
}
]
Bidang output
|
Bidang |
Deskripsi |
|
EnclaveID |
ID enklaf. |
|
ProcessID |
PID proses management enklaf. |
|
EnclaveCID |
CID enklaf. |
|
NumberOfCPUs |
Jumlah vCPU. |
|
CPUIDs |
ID vCPU. |
|
MemoryMiB |
Memori yang dialokasikan dalam satuan MiB. |
|
State |
Status enklaf. Nilai valid: |
|
Flags |
Flag mode debug. Nilai valid: |
console
Membaca output waktu proses dari enklaf yang sedang berjalan untuk troubleshooting, termasuk log startup kernel dan output aplikasi.
Memerlukan enklaf yang dijalankan dengan --debug-mode.
Sintaks
enclave-cli console --enclave-id <enclave-id>
Parameter
|
Parameter |
Wajib |
Tipe |
Deskripsi |
|
|
Ya |
String |
ID enklaf. Diperoleh dari output |
Contoh
Baca output dari enklaf dalam mode debug dengan ID 12345678-1234-5678-1234-12345678****-enc1:
enclave-cli console --enclave-id 12345678-1234-5678-1234-12345678****-enc1
Output:
[ 1] Hello from the enclave side!
[ 2] Hello from the enclave side!
[ 3] Hello from the enclave side!
...
terminate-enclave
Menghentikan enklaf yang sedang berjalan dan melepaskan sumber dayanya.
Sintaks
enclave-cli terminate-enclave --enclave-id <enclave-id>
Parameter
|
Parameter |
Wajib |
Tipe |
Deskripsi |
|
|
Ya |
String |
ID enklaf. Diperoleh dari output |
Contoh
Hentikan enklaf 12345678-1234-5678-1234-123456781234-enc1:
enclave-cli terminate-enclave --enclave-id 12345678-1234-5678-1234-123456781234-enc1
Output:
Successfully terminated enclave 12345678-1234-5678-1234-123456781234-enc1.
{
"EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
"Terminated": true
}
Bidang output
|
Bidang |
Deskripsi |
|
EnclaveID |
ID enklaf yang dihentikan. |
|
Terminated |
Apakah enklaf berhasil dihentikan. Nilai valid: |
Referensi
Subperintah CLI Enclave dapat mengembalikan kode kesalahan.