Amazon Linux 2023 이미지 설명 샘플 빌드
AWS는 워크로드에 대한 자체 사용자 지정 증명 가능 AMI를 생성하기 위한 시작점으로 사용할 수 있는 Amazon Linux 2023 이미지 설명 샘플을 제공합니다. 이미지 설명 샘플에는 기본 운영 체제로 Amazon Linux 2023, 파일 시스템 불변성에 대한 dm-verity 및 erofs 구성이 포함되어 있으며, 모든 대화형 액세스(예: SSH, EC2 Instance Connect 및 직렬 콘솔)를 제거하여 격리된 컴퓨팅 환경을 생성합니다. 이미지 설명 샘플에 대한 자세한 내용은 Github repo
이미지 설명 샘플은 /usr/bin/ 디렉터리의 빌드된 이미지에 NitroTPM 도구(nitro-tpm-pcr-compute 및 nitro-tpm-attest)를 자동으로 설치합니다. 이를 통해 하면 AMI에서 시작된 인스턴스에 도구가 사전 설치됩니다.
이미지 설명 샘플에는 참조 측정값을 생성하는 데 필요한 명령이 포함된 edit_boot_install.sh 스크립트가 포함되어 있습니다. 스크립트는 KIWI NG에서 생성한 원시 디스크 이미지 파일(.raw)을 루프백 디바이스에 탑재하고 파일 확장자가 .efi인 UKI를 찾은 다음 nitro-tpm-pcr-compute 유틸리티를 실행하여 AMI에 대한 참조 측정값을 생성합니다. 스크립트는 빌드 시간 중에 KIWI NG에 의해 자동으로 실행됩니다.
이 자습서에서는 이미지 설명 샘플을 빌드하여 증명 가능한 AMI를 생성하는 방법을 보여줍니다.
자체 이미지 설명 생성에 대한 자세한 내용은 다음 KIWI NG 설명서를 참조하세요.
사전 조건
이 자습서를 완료하려면 IAM 자격 증명에 다음 권한이 있어야 합니다.
-
arn:aws:ec2:*::snapshot/*에 대한ebs:CompleteSnapshot,ebs:StartSnapshot및ebs:PutSnapshotBlock -
모든 리소스에서
ec2:RegisterImage
KIWI NG를 사용하여 샘플 Amazon Linux 2023 이미지 설명을 빌드하는 방법
-
최신 AL2023 AMI를 사용하여 Amazon EC2 인스턴스를 시작하세요. 인스턴스에 AMI를 빌드하기에 충분한 스토리지 공간이 있는지 확인하려면 최소 12GB의 스토리지를 프로비저닝해야 합니다.
-
필요한 종속 항목을 설치합니다. 다음 명령은 다음 유틸리티를 설치합니다.
-
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 -
-
coldsnap유틸리티를 설치하세요. 이 유틸리티를 사용하면 원시 이미지 데이터에서 Amazon EBS 스냅샷을 생성할 수 있습니다. 이 유틸리티를 사용하여 KIWI NG에서 생성한 원시 디스크 이미지 파일에서 EBS 스냅샷을 생성합니다.git clone https://github.com/awslabs/coldsnap.git cd coldsnap cargo install --locked coldsnap cd .. -
이미지 설명 샘플 파일을 가져오세요.
sudo dnf install kiwi-image-descriptions-examples이미지 설명 샘플 파일은
/usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example디렉터리에 다운로드됩니다. -
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
설명서를 참조하세요. -
AMI에 대한 참조 측정값을 가져오세요. 측정값은 이전 단계의 이미지 빌드 시간 중에
nitro-tpm-pcr-compute유틸리티에 의해 생성됩니다. 참조 측정값은./image/pcr_measurements.json파일에서 찾을 수 있습니다.측정값은 다음 JSON 형식으로 제공됩니다.
{ "Measurements": { "HashAlgorithm": "SHA384 { ... }", "PCR4": "PCR4_measurement", "PCR7": "PCR7_measurement", "PCR12": "PCR12_measurement" } } -
coldsnap유틸리티를 사용하여 KIWI NG에서 생성한 원시 디스크 이미지를 EBS 스냅샷에 업로드하세요. 명령은 스냅샷 ID를 반환합니다. 다음 단계에 필요하므로 ID를 기록하세요SNAPSHOT=$(.cargo/bin/coldsnap upload ./image/al2023*.raw) echo "Created snapshot: $SNAPSHOT"coldsnap유틸리티에 대한 자세한 내용은 coldsnap GitHub repo를 참조하세요. -
이전 단계의 스냅샷을 사용하여 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 \ --architecturex86_64|arm64\ --root-device-name /dev/xvda \ --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=${SNAPSHOT}} \ --tpm-support v2.0 \ --ena-support