Criar o exemplo de descrição de imagem do Amazon Linux 2023 - Amazon Elastic Compute Cloud

Criar o exemplo de descrição de imagem do Amazon Linux 2023

A AWS fornece um exemplo de descrição de imagem do Amazon Linux 2023 que você pode usar como ponto de partida para criar suas próprias AMIs atestáveis personalizadas para suas workloads. O exemplo de descrição de imagem inclui o Amazon Linux 2023 como sistema operacional básico, as configurações dm-verity e erofs, para garantir a imutabilidade do sistema de arquivos, e remove todo acesso interativo (como SSH, conexão de instância do EC2 e console serial) para criar um ambiente computacional isolado. Para obter mais informações sobre o exemplo de descrição de imagem, consulte o repositório do Github.

O exemplo de descrição de imagem instala automaticamente as ferramentas do NitroTPM (nitro-tpm-pcr-compute e nitro-tpm-attest) na imagem gerada no diretório /usr/bin/. Isso garante que as ferramentas sejam pré-instaladas nas instâncias iniciadas na AMI.

O exemplo de descrição de imagem inclui um script, edit_boot_install.sh, que inclui os comandos necessários para gerar as medidas de referência. O script monta o arquivo da imagem de disco bruta (.raw) criada pelo KIWI NG em um dispositivo de loopback, localiza a UKI, que tem a extensão de arquivo .efi, e executa o utilitário nitro-tpm-pcr-compute para gerar as medidas de referência para a AMI. O script é executado automaticamente pelo KIWI NG durante a compilação.

Este tutorial mostra como compilar o exemplo de descrição de imagem para criar uma AMI atestável.

Para obter mais informações sobre como criar suas próprias descrições de imagem, consulte a seguinte documentação do KIWI NG:

Para compilar o exemplo de descrição de imagem do Amazon Linux 2023 usando o KIWI NG
  1. Inicie uma instância do Amazon EC2 usando a AMI AL2023 mais recente. Para garantir que a instância tenha espaço de armazenamento suficiente para compilar a AMI, provisione pelo menos 12 GB de armazenamento.

  2. Instale as dependências necessárias. O seguinte comando instala estes utilitários:

    • kiwi-cli

    • veritysetup

    • erofs-utils

    • aws-nitro-tpm-tools

    sudo dnf install -y kiwi-cli python3-kiwi kiwi-systemdeps-core python3-poetry-core qemu-img veritysetup erofs-utils git cargo aws-nitro-tpm-tools
  3. Instale o utilitário coldsnap. Esse utilitário permite que você crie snapshots do Amazon EBS a partir de dados de imagem brutos. Você usará esse utilitário para criar um snapshot do EBS a partir do arquivo da imagem de disco bruta criada pelo KIWI NG.

    git clone https://github.com/awslabs/coldsnap.git cd coldsnap cargo install --locked coldsnap cd ..
  4. Obtenha os arquivos de exemplos de descrição de imagem.

    sudo dnf install kiwi-image-descriptions-examples

    Os arquivos de exemplos de descrição de imagem são baixados para o seguinte diretório: /usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example

  5. Compile o exemplo de descrição de imagem usando o comando system build do KIWI NG. O comando a seguir cria um arquivo da imagem de disco bruta no diretório ./image.

    sudo kiwi-ng \ --color-output \ --loglevel 0 \ system build \ --description usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example \ --target-dir ./image

    Para obter mais informações, consulte a documentação do kiwi-ng system build.

  6. Obtenha as medidas de referência da AMI. As medidas são geradas pelo utilitário nitro-tpm-pcr-compute durante a criação da imagem na etapa anterior. Você pode localizar as medidas de referência no seguinte arquivo: ./image/pcr_measurements.json.

    As medidas são fornecidas no seguinte formato JSON:

    { "Measurements": { "HashAlgorithm": "SHA384 { ... }", "PCR4": "PCR4_measurement", "PCR7": "PCR7_measurement" } }
  7. Use o utilitário coldsnap para carregar a imagem de disco bruta criada pelo KIWI NG em um snapshot do EBS. O comando retorna o ID do snapshot. Anote o valor do ID, pois vai precisar dele na próxima etapa.

    SNAPSHOT=$(.cargo/bin/coldsnap upload ./image/kiwi*.raw) echo "Created snapshot: $SNAPSHOT"

    Para obter mais informações sobre o utilitário coldsnap, consulte o repositório do coldsnap no GitHub.

  8. Registre uma AMI habilitada para o TPM 2.0 com o modo de inicialização UEFI usando o snapshot da etapa anterior. Para --architecture, especifique x86_64 para Intel ou arm64 para Graviton.

    aws ec2 register-image \ --name "attestable_isolated_al2023_ami" \ --virtualization-type hvm \ --boot-mode uefi \ --architecture x86_64|arm64 \ --root-device-name /dev/xvda \ --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=${SNAPSHOT}} \ --tpm-support v2.0 \ --ena-support