Amazon Linux 2023 のサンプルイメージの説明を作成する
AWS は、ワークロード用に独自のカスタム Attestable AMI を作成するための出発点として使用できる Amazon Linux 2023 のサンプルイメージの説明を提供します。サンプルイメージの説明には、ベースオペレーティングシステムとしての Amazon Linux 2023、ファイルシステムのイミュータビリティ用の dm-verity と erofs の設定が含まれ、分離されたコンピューティング環境を作成するためにすべてのインタラクティブアクセス (SSH、EC2 インスタンス接続、シリアルコンソールなど) が削除されます。サンプルイメージの説明の詳細については、Github リポジトリ
サンプルイメージの説明では、NitroTPM ツール (nitro-tpm-pcr-compute および nitro-tpm-attest) が /usr/bin/ ディレクトリのビルド済みイメージに自動的にインストールされます。これにより、AMI から起動されたインスタンスにツールがプリインストールされます。
サンプルイメージの説明には、リファレンス測定値の生成に必要なコマンドを含むスクリプトである edit_boot_install.sh が含まれています。スクリプトは、KIWI NG によって作成された raw ディスクイメージファイル (.raw) をループバックデバイスにマウントし、UKI (.efi ファイル拡張子を持つ) を見つけ、nitro-tpm-pcr-compute ユーティリティを実行して AMI のリファレンス測定値を生成します。スクリプトは、ビルド時に KIWI NG によって自動的に実行されます。
このチュートリアルでは、サンプルイメージの説明を作成して Attestable 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ユーティリティをインストールします。このユーティリティを使用すると、raw イメージデータから Amazon EBS スナップショットを作成できます。このユーティリティを使用して、KIWI NG によって作成された raw ディスクイメージファイルから 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ディレクトリに raw ディスクイメージファイルを作成します。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" } } -
coldsnapユーティリティを使用して、KIWI NG によって作成された raw ディスクイメージを EBS スナップショットにアップロードします。コマンドはスナップショット ID を返します。次のステップで必要になるため、ID を書きとめておきます。SNAPSHOT=$(.cargo/bin/coldsnap upload ./image/kiwi*.raw) echo "Created snapshot: $SNAPSHOT"coldsnapユーティリティの詳細については、コールドスナップ GitHub リポジトリを参照してください。 -
前のステップのスナップショットを使用して、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