Crie, inicie e pare um enclave em uma instância ECS com o Enclave CLI.
Procedimento
-
Crie uma instância ECS habilitada para Enclave e pré-aloque recursos para o enclave.
-
Crie um arquivo de imagem de enclave.
O Enclave CLI inclui um Dockerfile de exemplo em
/usr/share/ali-enclaves/examples/hello. Use-o para criar o arquivo de imagem de enclave.-
Crie uma imagem Docker chamada
hellocom a taglatest:sudo docker build /usr/share/ali-enclaves/examples/hello -t hello -
Verifique se a imagem Docker foi criada:
sudo docker images hello:latestSe a saída mostrar a imagem
hellocom a taglatest, a imagem foi criada.
-
Crie o arquivo de imagem de enclave
hello.eif:sudo enclave-cli build-enclave --docker-uri hello:latest --output-file hello.eifSe nenhum erro for retornado, o arquivo
hello.eiffoi criado. Os registros de configuração de plataforma (PCRs) na saída contêm hashes específicos do enclave para atestação remota. Exemplo de saída:Start building the Enclave Image... Enclave Image successfully created. { "Measurements": { "HashAlgorithm": "Sha256 { ... }", "PCR11": "dc5dcd841f87e2b6c0e65a11b46b25ebe2999a8a5f0318e10c0175b60000****", "PCR8": "2c6944f47864f1f8ab276000a9f057fcdf9f56a015c0bc5e2339f24b0000****", "PCR9": "8ef5fe53a7709cc1c1a0aa7b5149a55bcd524cccc9f43e7a3baf44ca0000****" } }
-
-
Inicie o enclave.
Este comando inicia um enclave em modo de depuração com 2 vCPUs e 1024 MiB de memória a partir do arquivo
hello.eif. Para todos os parâmetros, consulte a seção "run-enclave" em Subcomandos do Enclave CLI.sudo enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path hello.eif --debug-modeA saída a seguir indica que o enclave está em execução. O ID do enclave
4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1é necessário para operações subsequentes do Enclave CLI.nullO identificador de contexto (CID) 4 é atribuído automaticamente como o endereço vsock do enclave. No modo não depuração, o vsock é a única forma de comunicação entre o enclave e a instância host.
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 } -
Verifique o estado do enclave:
enclave-cli describe-enclavesA saída mostra o ID do enclave, a contagem de vCPUs, o tamanho da memória e o estado. O estado
RUNNINGindica que o enclave está funcionando.[ { "EnclaveID": "4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1", "ProcessID": 1234, "EnclaveCID": 4, "NumberOfCPUs": 2, "CPUIDs": [ 2, 3 ], "MemoryMiB": 1024, "State": "RUNNING", "Flags": "DEBUG_MODE" } ]Visualize a saída de depuração do enclave:
enclave-cli console --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1Saída esperada:
[ 1] Hello from the enclave side! [ 2] Hello from the enclave side! [ 3] Hello from the enclave side! ...nullA mensagem
[ N] Hello from the enclave side!é exibida a cada cinco segundos. N é o contador de mensagens. -
Pare o enclave:
sudo enclave-cli terminate-enclave --enclave-id 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1A saída a seguir indica que o enclave foi parado:
Successfully terminated enclave 4f39d839-0f7a-4bee-a09d-93b8b1d6****-enc1. { "EnclaveID": "12345678-1234-5678-1234-12345678****-enc1", "Terminated": true }