Cette rubrique explique comment utiliser l'Enclave CLI pour créer, démarrer et arrêter une enclave sur une instance compatible avec les enclaves.
Procédure
-
Créez une instance activée pour les enclaves et préallouez les ressources nécessaires à l'enclave.
Pour plus d'informations, consultez la rubrique Configurer un environnement de calcul confidentiel pour les enclaves.
-
Générez un fichier image d'enclave.
Après avoir installé l'Enclave CLI, utilisez le Dockerfile d'exemple situé dans le répertoire
/usr/share/ali-enclaves/examples/hellopour générer un fichier image d'enclave.-
Exécutez la commande suivante pour construire une image Docker nommée
helloavec le taglatest.sudo docker build /usr/share/ali-enclaves/examples/hello -t hello -
Vérifiez la construction de l'image Docker.
sudo docker images hello:latestSi la sortie contient l'image Docker
helloavec le taglatest, la construction a réussi.[test@i22ze8kho0z4u_ ~]$ sudo docker images hello:latest REPOSITORY TAG IMAGE ID CREATED SIZE hello latest 66d39ebd3dbc 22 seconds ago 4.26MB -
Générez un fichier image d'enclave nommé
hello.eif.sudo enclave-cli build-enclave --docker-uri hello:latest --output-file hello.eifEn l'absence d'erreurs, la génération aboutit et crée le fichier image d'enclave
hello.eif. Les valeurs PCR (Platform Configuration Register) affichées correspondent aux hachages de mesure de l'enclave et servent à l'attestation à distance. Voici un exemple de sortie :Start building the Enclave Image... Enclave Image successfully created. { "Measurements": { "HashAlgorithm": "Sha256 { ... }", "PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****", "PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****", "PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****" } }
-
-
Démarrez l'enclave.
Cette commande démarre une enclave à partir du fichier image
hello.eifen mode débogage, avec 2 vCPU et 1 024 MiB de mémoire. Pour plus d'informations sur les paramètres, consultez la section Exécuter une enclave.sudo enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path hello.eif --debug-modeLa sortie suivante confirme le démarrage de l'enclave. Dans cet exemple, l'ID de l'enclave est
4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1. Vous devez spécifier cet ID pour gérer l'enclave via l'Enclave CLI.RemarqueLe CID (Context Identifier) de cette enclave est 4, attribué automatiquement par le système. Le protocole vsock constitue le seul canal de communication entre l'instance et une enclave qui ne s'exécute pas en mode débogage.
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 } -
Consultez l'état de l'enclave.
enclave-cli describe-enclavesLa sortie affiche l'ID de l'enclave, le nombre de vCPU, la taille de la mémoire et l'état. L'état
RUNNINGindique que l'enclave est en cours d'exécution.[ { "EnclaveID": "4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1", "ProcessID": 1234, "EnclaveCID": 4, "NumberOfCPUs": 2, "CPUIDs": [ 2, 3 ], "MemoryMiB": 1024, "State": "RUNNING", "Flags": "DEBUG_MODE" } ]Étant donné que l'enclave s'exécute en mode débogage, vous pouvez également afficher sa sortie console.
enclave-cli console --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1Si l'enclave est en cours d'exécution, la sortie ressemble à ce qui suit :
[ 1] Hello from the enclave side! [ 2] Hello from the enclave side! [ 3] Hello from the enclave side! ...RemarqueDans cet exemple, l'enclave affiche le message
Hello from the enclave side!toutes les cinq secondes. Le nombre entre crochets indique le compteur de messages. -
Arrêtez l'enclave.
sudo enclave-cli terminate-enclave --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1La sortie suivante confirme l'arrêt de l'enclave.
Successfully terminated enclave 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1. { "EnclaveID": "12345678-1234-5678-1234-12345678****-enc1", "Terminated": true }