Amazon Linux 2023 이미지 설명 샘플 빌드 - Amazon Elastic Compute Cloud

Amazon Linux 2023 이미지 설명 샘플 빌드

AWS는 워크로드에 대한 자체 사용자 지정 증명 가능 AMI를 생성하기 위한 시작점으로 사용할 수 있는 Amazon Linux 2023 이미지 설명 샘플을 제공합니다. 이미지 설명 샘플에는 기본 운영 체제로 Amazon Linux 2023, 파일 시스템 불변성에 대한 dm-verityerofs 구성이 포함되어 있으며, 모든 대화형 액세스(예: SSH, EC2 Instance Connect 및 직렬 콘솔)를 제거하여 격리된 컴퓨팅 환경을 생성합니다. 이미지 설명 샘플에 대한 자세한 내용은 Github repo를 참조하세요.

이미지 설명 샘플은 /usr/bin/ 디렉터리의 빌드된 이미지에 NitroTPM 도구(nitro-tpm-pcr-computenitro-tpm-attest)를 자동으로 설치합니다. 이를 통해 하면 AMI에서 시작된 인스턴스에 도구가 사전 설치됩니다.

이미지 설명 샘플에는 참조 측정값을 생성하는 데 필요한 명령이 포함된 edit_boot_install.sh 스크립트가 포함되어 있습니다. 스크립트는 KIWI NG에서 생성한 원시 디스크 이미지 파일(.raw)을 루프백 디바이스에 탑재하고 파일 확장자가 .efi인 UKI를 찾은 다음 nitro-tpm-pcr-compute 유틸리티를 실행하여 AMI에 대한 참조 측정값을 생성합니다. 스크립트는 빌드 시간 중에 KIWI NG에 의해 자동으로 실행됩니다.

이 자습서에서는 이미지 설명 샘플을 빌드하여 증명 가능한 AMI를 생성하는 방법을 보여줍니다.

자체 이미지 설명 생성에 대한 자세한 내용은 다음 KIWI NG 설명서를 참조하세요.

KIWI NG를 사용하여 샘플 Amazon Linux 2023 이미지 설명을 빌드하는 방법
  1. 최신 AL2023 AMI를 사용하여 Amazon EC2 인스턴스를 시작하세요. 인스턴스에 AMI를 빌드하기에 충분한 스토리지 공간이 있는지 확인하려면 최소 12GB의 스토리지를 프로비저닝해야 합니다.

  2. 필요한 종속 항목을 설치합니다. 다음 명령은 다음 유틸리티를 설치합니다.

    • 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. coldsnap 유틸리티를 설치하세요. 이 유틸리티를 사용하면 원시 이미지 데이터에서 Amazon EBS 스냅샷을 생성할 수 있습니다. 이 유틸리티를 사용하여 KIWI NG에서 생성한 원시 디스크 이미지 파일에서 EBS 스냅샷을 생성합니다.

    git clone https://github.com/awslabs/coldsnap.git cd coldsnap cargo install --locked coldsnap cd ..
  4. 이미지 설명 샘플 파일을 가져오세요.

    sudo dnf install kiwi-image-descriptions-examples

    이미지 설명 샘플 파일은 /usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example 디렉터리에 다운로드됩니다.

  5. KIWI NG system build 명령을 사용하여 샘플 이미지 설명을 빌드하세요. 다음 명령은 ./image 디렉터리에서 원시 디스크 이미지 파일을 생성합니다.

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

    자세한 내용은 kiwi-ng system build 설명서를 참조하세요.

  6. AMI에 대한 참조 측정값을 가져오세요. 측정값은 이전 단계의 이미지 빌드 시간 중에 nitro-tpm-pcr-compute 유틸리티에 의해 생성됩니다. 참조 측정값은 ./image/pcr_measurements.json 파일에서 찾을 수 있습니다.

    측정값은 다음 JSON 형식으로 제공됩니다.

    { "Measurements": { "HashAlgorithm": "SHA384 { ... }", "PCR4": "PCR4_measurement", "PCR7": "PCR7_measurement" } }
  7. coldsnap 유틸리티를 사용하여 KIWI NG에서 생성한 원시 디스크 이미지를 EBS 스냅샷에 업로드하세요. 명령은 스냅샷 ID를 반환합니다. 다음 단계에 필요하므로 ID를 기록하세요

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

    coldsnap 유틸리티에 대한 자세한 내용은 coldsnap GitHub repo를 참조하세요.

  8. 이전 단계의 스냅샷을 사용하여 TPM 2.0 지원 AMI를 UEFI 부팅 모드로 등록하세요. --architecture의 경우 Intel에 대해 x86_64 또는 Graviton에 대해 arm64를 지정하세요.

    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