ECS örneklerinde enclave'leri oluşturmak, çalıştırmak, incelemek, hata ayıklamak ve sonlandırmak için Enclave CLI'yı kullanın.
Enclave CLI'yı yükledikten sonra alt komutları ve kullanımı görüntülemek için aşağıdaki komutları çalıştırın:
enclave-cli --help # List all subcommands
enclave-cli <sub-command> --help # Show usage for a specific subcommand
build-enclave
Bir Docker görüntüsünden bir enclave görüntü dosyası (.eif) oluşturur. Yerel bir Dockerfile dizini veya bir Docker depo görüntüsü adı belirtin.
Çıktı, enclave görüntüsünün temel ölçümlerini içerir. Uzak doğrulama sırasında bu ölçümler, enclave bütünlüğünü doğrulamak için çalışma zamanı değerleriyle karşılaştırılır.
Alibaba Cloud sanallaştırma enclave'lerinde ölçümler (Platform Yapılandırma Kaydedicileri veya PCR'ler), çalışma zamanında bir vTPM tarafından oluşturulur ve TPM 2.0 ile uyumludur.
Kullanım
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> ]
Parametreler
|
|
|
|
|
|
|
|
|
Docker görüntüsü URI'si
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Enclave görüntüsünü imzalamak için PEM formatındaki özel anahtar dosyası.
|
|
|
|
|
|
Örnek
Docker görüntüsü sample:latest üzerinden sample.eif adlı bir enclave görüntüsü oluşturun:
enclave-cli build-enclave --docker-uri sample:latest --output-file sample.eif
Çıktı
Start building the Enclave Image...
Enclave Image successfully created.
{
"Measurements": {
"HashAlgorithm": "Sha256 { ... }",
"PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****",
"PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****",
"PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****"
}
}
Çıktı alanları
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
run-enclave
Belirtilen sanal CPU sayısı ve bellek miktarıyla bir görüntü dosyasından bir enclave başlatır.
Bir ECS örneğinde aynı anda yalnızca bir enclave çalışabilir.
Sözdizimi
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> ]
Alternatif olarak, tüm parametreleri bir JSON yapılandırma dosyasında belirtebilirsiniz:
{
"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
}
Parametreler
|
Parametre |
Gerekli |
Tür |
Açıklama |
|
|
Hayır |
Dize |
Enclave başlatma parametrelerini içeren JSON yapılandırma dosyasının yolu. Belirtilirse diğer parametreleri kullanmayın. Tüm parametreler bu dosyada JSON formatında tanımlanmalıdır. |
|
|
Hayır |
int |
Enclave'e atanacak sanal CPU sayısı. Örnek üzerindeki toplam sanal CPU sayısından az olmalıdır. Bu parametrenin gerekli olup olmadığı,
Not
Hyper-threading devre dışı bırakılırsa enclave 1 sanal CPU kullanabilir. Hyper-threading etkinse (varsayılan) enclave çift sayıda sanal CPU (minimum 2) gerektirir, bu nedenle örneğin en az 4 sanal CPU'su olmalıdır. Hyper-threading'i doğrulamak için |
|
|
Hayır |
int |
Enclave'e atanacak sanal CPU kimliklerinin listesi. Sayı, örnek üzerindeki toplam sanal CPU sayısından az olmalıdır. Hyper-threading etkinse sanal CPU sayısı çift olmalıdır. Ayrıntılar için Bu parametrenin gerekli olup olmadığı,
|
|
|
Evet |
int |
Enclave için MiB cinsinden bellek boyutu. Geçerli değerler: 64 MiB ile örnek toplam belleğinden daha az. Ayrıca minimum enclave çalışma zamanı gereksinimini de karşılamalıdır. |
|
|
Evet |
Dize |
|
|
|
Hayır |
int |
Enclave için vsock CID'si. En az 4 olmalıdır. Atlanırsa sistem mevcut bir CID atar. |
|
|
Hayır |
Dize |
Hata ayıklama modunu etkinleştirir. Normal modda çalıştırmak için atlayın. Hata ayıklama modunda çalışma zamanı çıktısını görüntülemek için |
Örnek: Satır içi parametrelerle başlatma
2 sanal CPU, 1.024 MiB bellek ve CID 10 ile sample.eif üzerinden bir enclave başlatın:
enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path sample.eif --enclave-cid 10
Çıktı:
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
}
Çıktı alanları
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
describe-enclaves
Geçerli örnekteki enclave hakkında bilgi döndürür.
Sözdizimi
enclave-cli describe-enclaves
Örnek
enclave-cli describe-enclaves
Çıktı:
[
{
"EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
"ProcessID": 1234,
"EnclaveCID": 10,
"NumberOfCPUs": 2,
"CPUIDs": [
2,
3
],
"MemoryMiB": 1024,
"State": "RUNNING",
"Flags": "DEBUG_MODE"
}
]
Çıktı alanları
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console
Sorun giderme amacıyla çalışan bir enclave'in çekirdek başlatma günlükleri ve uygulama çıktısı dahil olmak üzere çalışma zamanı çıktısını okur.
Enclave'in --debug-mode ile başlatılmasını gerektirir.
Sözdizimi
enclave-cli console --enclave-id <enclave-id>
Parametreler
|
|
|
|
|
|
|
|
|
|
Örnek
Kimliği 12345678-1234-5678-1234-12345678****-enc1 olan hata ayıklama modundaki bir enclave'ten çıktıyı okuyun:
enclave-cli console --enclave-id 12345678-1234-5678-1234-12345678****-enc1
Çıktı:
[ 1] Hello from the enclave side!
[ 2] Hello from the enclave side!
[ 3] Hello from the enclave side!
...
terminate-enclave
Çalışan bir enclave'i sonlandırır ve kaynaklarını serbest bırakır.
Sözdizimi
enclave-cli terminate-enclave --enclave-id <enclave-id>
Parametreler
|
|
|
|
|
|
|
|
|
|
Örnek
12345678-1234-5678-1234-123456781234-enc1 enclave'ini sonlandırın:
enclave-cli terminate-enclave --enclave-id 12345678-1234-5678-1234-123456781234-enc1
Çıktı:
Successfully terminated enclave 12345678-1234-5678-1234-123456781234-enc1.
{
"EnclaveID": "12345678-1234-5678-1234-123456781234-enc1",
"Terminated": true
}
Çıktı alanları
|
|
|
|
|
|
|
|
|
Başvurular
Enclave CLI alt komutları hata kodları döndürebilir.