本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建置範例 Amazon Linux 2023 映像說明
AWS 提供範例 Amazon Linux 2023 映像描述,您可以用它做為起點,為您的工作負載建立自己的自訂可認證 AMIs。範例映像說明包括做為基本作業系統的 Amazon Linux 2023,以及實現檔案系統不可變性的 dm-verity 與 erofs 組態,並且該說明移除了全部互動式存取權 (例如 SSH、EC2 Instance Connect,以及序列主控台),以建立隔離式運算環境。若要了解範例映像說明的詳細資訊,請參閱 Github 儲存庫
範例映像說明可在 /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 文件:
如需使用 KIWI NG 來建置範例 Amazon Linux 2023 映像說明
-
使用最新的 AL2023 AMI 來啟動 Amazon EC2 執行個體 如需確保執行個體具有足夠的儲存空間以建置 AMI,請確保至少佈建 12 GB 的儲存空間。
-
安裝所需的依存項目。使用下面的命令可安裝以下公用程式:
-
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/kiwi*.raw) echo "Created snapshot: $SNAPSHOT"若要了解
coldsnap公用程式的相關詳細資訊,請參閱 coldsnap GitHub 儲存庫。 -
使用上一步驟的快照,在 UEFI 啟動模式下註冊支援 TPM 2.0 的 AMI。若是
--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