Bu konu, enklavları destekleyen bir örnekte Enclave CLI kullanarak enklavın nasıl oluşturulacağını, başlatılacağını ve durdurulacağını açıklar.
Yordam
-
Enklav etkinleştirilmiş bir örnek oluşturun ve enklav için kaynakları önceden ayırın.
Daha fazla bilgi için bkz. Enklavlar için gizli bilgi işlem ortamı kurma.
-
Bir enklav görüntü dosyası oluşturun.
Enclave CLI uygulamasını yükledikten sonra, bir enklav görüntü dosyası oluşturmak için
/usr/share/ali-enclaves/examples/hellodizinindeki örnek Dockerfile dosyasını kullanın.-
latestetiketine sahiphelloadlı bir Docker görüntüsü oluşturmak için aşağıdaki komutu çalıştırın.sudo docker build /usr/share/ali-enclaves/examples/hello -t hello -
Docker görüntüsünün oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın.
sudo docker images hello:latestÇıktıda
latestetiketlihelloDocker görüntüsü yer alıyorsa görüntü başarıyla oluşturulmuş demektir.[test@i22ze8kho0z4u_ ~]$ sudo docker images hello:latest REPOSITORY TAG IMAGE ID CREATED SIZE hello latest 66d39ebd3dbc 22 seconds ago 4.26MB -
hello.eifadlı bir enklav görüntü dosyası oluşturmak için aşağıdaki komutu çalıştırın.sudo enclave-cli build-enclave --docker-uri hello:latest --output-file hello.eifHata bildirilmezse oluşturma işlemi başarılı olur ve
hello.eifenklav görüntü dosyası oluşur. Çıktıda yer alan PCR (Platform Yapılandırma Kaydı) değerleri, enklavın ölçüm karmalarıdır ve uzak onaylama için kullanılabilir. Aşağıda örnek bir çıktı gösterilmektedir:Start building the Enclave Image... Enclave Image successfully created. { "Measurements": { "HashAlgorithm": "Sha256 { ... }", "PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****", "PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****", "PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****" } }
-
-
Enklavı başlatmak için aşağıdaki komutu çalıştırın.
Bu komut,
hello.eifgörüntü dosyasından hata ayıklama modunda bir enklav başlatır ve enklavı 2 vCPU ile 1024 MiB bellek kullanacak şekilde yapılandırır. Parametrelerle ilgili daha fazla bilgi için bkz. Enklav çalıştırma.sudo enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path hello.eif --debug-modeAşağıdaki çıktı, enklavın başarıyla başlatıldığını gösterir. Bu örnekte enklav kimliği
4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1şeklindedir. Enclave CLI kullanarak enklavı yönetirken bu kimliği belirtmeniz gerekir.NotBu enklavın CID'si (Bağlam Tanımlayıcısı) 4'tür ve sistem tarafından otomatik olarak atanır. vsock, hata ayıklama modunda çalışmayan bir enklav ile örnek arasındaki tek iletişim kanalıdır.
Start allocating memory... Started enclave with enclave-cid: 4, memory: 1024 MiB, cpu-ids: [2, 3] { "EnclaveID": "4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1", "ProcessID": 1234, "EnclaveCID": 4, "NumberOfCPUs": 2, "CPUIDs": [ 2, 3 ], "MemoryMiB": 1024 } -
Enklavın durumunu kontrol etmek için aşağıdaki komutu çalıştırın.
enclave-cli describe-enclavesÇıktıda enklav kimliği, vCPU sayısı, bellek boyutu ve durum gibi bilgiler görüntülenir.
RUNNINGdurumu, enklavın çalıştığını gösterir.[ { "EnclaveID": "4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1", "ProcessID": 1234, "EnclaveCID": 4, "NumberOfCPUs": 2, "CPUIDs": [ 2, 3 ], "MemoryMiB": 1024, "State": "RUNNING", "Flags": "DEBUG_MODE" } ]Enklav hata ayıklama modunda çalıştığından konsol çıktısını görüntülemek için aşağıdaki komutu da çalıştırabilirsiniz.
enclave-cli console --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1Enklav çalışıyorsa çıktı aşağıdakine benzer:
[ 1] Hello from the enclave side! [ 2] Hello from the enclave side! [ 3] Hello from the enclave side! ...NotBu örnekte enklav, her beş saniyede bir
Hello from the enclave side!mesajını yazdırır. Parantez içindeki sayı mesaj sayısını gösterir. -
Enklavı sonlandırmak için aşağıdaki komutu çalıştırın.
sudo enclave-cli terminate-enclave --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1Aşağıdaki çıktı, enklavın başarıyla sonlandırıldığını gösterir.
Successfully terminated enclave 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1. { "EnclaveID": "12345678-1234-5678-1234-12345678****-enc1", "Terminated": true }