建置範例 Amazon Linux 2023 映像描述 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建置範例 Amazon Linux 2023 映像描述

AWS 提供範例 Amazon Linux 2023 映像描述,您可以用作為工作負載建立自訂可認證 AMIs起點。範例映像描述包含 Amazon Linux 2023 作為基礎作業系統,dm-verity以及檔案系統不可變性的erofs組態,並移除所有互動式存取 (例如 SSH、EC2 執行個體連線和序列主控台),以建立隔離的運算環境。如需範例映像描述的詳細資訊,請參閱 Github 儲存庫

範例映像描述會自動在 /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,請確定您佈建至少 12 GB 的儲存空間。

  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 系統建置文件。

  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,您需要此 ID 才能進行下一個步驟。

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

    如需 coldsnap公用程式的詳細資訊,請參閱 coldsnap GitHub 儲存庫

  8. 使用上一個步驟的快照,向 UEFI 開機模式註冊啟用 TPM 2.0 的 AMI。對於 --architecturex86_64請為 Intel 指定 ,或arm64為 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