Compilación de la descripción de imagen de Amazon Linux 2023 de muestra - Amazon Elastic Compute Cloud

Compilación de la descripción de imagen de Amazon Linux 2023 de muestra

AWS proporciona una descripción de imagen de Amazon Linux 2023 de muestra que puede usar como punto de partida para crear sus propias AMI personalizadas con capacidad de atestación para las cargas de trabajo. La descripción de imagen de muestra incluye Amazon Linux 2023 como sistema operativo base, además de las configuraciones dm-verity y erofs para la inmutabilidad del sistema de archivos. También elimina todo acceso interactivo (como SSH, EC2 Instance Connect y consola serie) para crear un entorno de computación aislado. Para obtener más información sobre la descripción de imagen de muestra, consulte el repositorio de GitHub.

La descripción de imagen de muestra instala automáticamente las herramientas NitroTPM (nitro-tpm-pcr-compute y nitro-tpm-attest) en la imagen compilada, dentro del directorio /usr/bin/. Esto garantiza que las herramientas estén preinstaladas en las instancias que se lanzan a partir de la AMI.

La descripción de imagen de muestra incluye un script (edit_boot_install.sh) con los comandos necesarios para generar las mediciones de referencia. El script monta el archivo de imagen de disco sin procesar (.raw) creado por KIWI NG en un dispositivo de bucle (loopback), localiza la imagen de núcleo unificado (UKI), que tiene la extensión de archivo .efi, y luego ejecuta la utilidad nitro-tpm-pcr-compute para generar las mediciones de referencia de la AMI. El script se ejecuta automáticamente mediante KIWI NG durante el proceso de compilación.

Este tutorial muestra cómo compilar la descripción de imagen de muestra para crear una AMI con capacidad de atestación.

Para obtener más información sobre cómo crear sus propias descripciones de imagen, consulte la siguiente documentación de KIWI NG:

Para compilar la descripción de la imagen de muestra de Amazon Linux 2023 con KIWI NG
  1. Lance una instancia de Amazon EC2 con la versión más reciente de la AMI AL2023. Para garantizar que la instancia tenga suficiente espacio de almacenamiento para compilar la AMI, asegúrese de aprovisionar al menos 12 GB de almacenamiento.

  2. Instale las dependencias requeridas. El siguiente comando instala las utilidades necesarias:

    • 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 la utilidad coldsnap. Esta utilidad permite crear instantáneas de Amazon EBS a partir de datos de imágenes sin procesar. Usará esta utilidad para crear una instantánea de EBS a partir del archivo de imagen de disco sin procesar creado por KIWI NG.

    git clone https://github.com/awslabs/coldsnap.git cd coldsnap cargo install --locked coldsnap cd ..
  4. Obtenga los archivos de descripción de imagen de muestra

    sudo dnf install kiwi-image-descriptions-examples

    Los archivos de descripción de imagen de muestra se descargan en el siguiente directorio: /usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example

  5. Compile la descripción de imagen de muestra mediante el comando system build de KIWI NG. El siguiente comando crea un archivo de imagen de disco sin procesar en el directorio ./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 obtener más información, consulte la documentación de compilación del sistema de kiwi-ng.

  6. Obtenga las mediciones de referencia para la AMI. Las mediciones se generan mediante la utilidad nitro-tpm-pcr-compute durante el tiempo de compilación de la imagen, en el paso anterior. Puede ubicar las mediciones de referencia en el siguiente archivo: ./image/pcr_measurements.json.

    Las mediciones se proporcionan en el siguiente formato JSON:

    { "Measurements": { "HashAlgorithm": "SHA384 { ... }", "PCR4": "PCR4_measurement", "PCR7": "PCR7_measurement" } }
  7. Use la utilidad coldsnap para cargar la imagen de disco sin procesar creada por KIWI NG en una instantánea de EBS. El comando devuelve el ID de la instantánea. Anote ese ID, ya que será necesario para el siguiente paso.

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

    Para obtener más información sobre la utilidad coldsnap, consulte el repositorio de GitHub de coldsnap.

  8. Registre una AMI con TPM 2.0 habilitado y modo de arranque UEFI con la instantánea del paso anterior. En --architecture, especifique x86_64 para Intel o 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