

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AL2023 での UEFI セキュアブート
<a name="uefi-secure-boot"></a>

AL2023 は、リリース 2023.1 から UEFI セキュアブートをサポートしています。AL2023 は UEFI と UEFI セキュアブートの両方をサポートする Amazon EC2 インスタンスで使用する必要があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[UEFI ブートモードで Amazon EC2 インスタンスを起動するための要件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launch-instance-boot-mode.html)」を参照してください。

UEFI セキュアブートが有効になっている AL2023 インスタンスは、Amazon が署名したカーネルレベルのコード (Linux カーネルとモジュールを含む) のみを受け付けるため、インスタンスが AWSによって署名されたカーネルレベルのコードのみを実行するようにできます。

 Amazon EC2 インスタンスと UEFI セキュアブートの詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 インスタンス用 UEFI セキュアブート](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/uefi-secure-boot.html)」を参照してください。

**前提条件**
+ AL2023 リリース 2023.1 以降の AMI を使用している必要があります。
+ インスタンスタイプは UEFI Secure Boot をサポートする必要があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[UEFI ブートモードで Amazon EC2 インスタンスを起動するための要件」](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launch-instance-boot-mode.html)を参照してください。

## AL2023 で UEFI セキュアブートを有効にする
<a name="enablement"></a>

標準 AL2023 AMI には、ブートローダーおよびキーで署名されたカーネルが組み込まれています。UEFI セキュアブートを有効にするには、既存のインスタンスを登録するか、スナップショットからイメージを登録して UEFI セキュアブートがあらかじめ有効になっている AMI を作成します。デフォルトでは、UEFI セキュアブートは標準の AL2023 AMI で有効になっていません。

インスタンスタイプが UEFI をサポートしている場合、AL2023 AMI のブートモードは、これらの AMI で起動されたインスタンスが UEFI ファームウェアを使用するように `uefi-preferred` に設定されています。インスタンスタイプが UEFI をサポートしていない場合、インスタンスはレガシー BIOS ファームウェアで起動されます。インスタンスをレガシー BIOS モードで起動すると UEFI セキュアブートは実行されません。

Amazon EC2 インスタンスの AMI ブートモードの詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 ブートモードでのインスタンス起動動作](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-boot.html)」を参照してください。

**Topics**
+ [AL2023 で UEFI セキュアブートを有効にする](#enablement)
+ [既存のインスタンスの登録](#enrollment-existing-instance)
+ [スナップショットからイメージを登録する](#secure-boot-amis)
+ [失効の更新](#revocation-updates)
+ [AL2023 での UEFI 安全ブートのしくみ](#shim-use)
+ [独自のキーを登録する](#enrolling-own-keys)

## 既存のインスタンスの登録
<a name="enrollment-existing-instance"></a>

既存のインスタンスを登録するには、特定の UEFI ファームウェア変数に、ファームウェアがブートローダーを検証し、ブートローダーが次回の起動時にカーネルを検証できるようにする一連のキーを設定します。

1. Amazon Linux には、登録プロセスを簡素化するツールが用意されています。以下のコマンドを実行して、必要なキーと証明書のセットをインスタンスにプロビジョニングします。

   ```
   sudo amazon-linux-sb enroll
   ```

1. 以下のコマンドを実行して、 インスタンスを再起動します。インスタンスが再起動すると、UEFI セキュアブートが有効になります。

   ```
   sudo reboot
   ```

**注記**  
Amazon Linux AMI は現在 Nitro Trusted Platform Module (NitroTPM) をサポートしていません。UEFI セキュアブートに加えて NitrotPM が必要な場合は、以下のセクションの情報を使用します。

## スナップショットからイメージを登録する
<a name="secure-boot-amis"></a>

Amazon EC2 `register-image` API を使用して Amazon EBS ルートボリュームのスナップショットから AMI を登録する場合、UEFI 変数ストアの状態を含むバイナリブロブを使用して AMI をプロビジョニングできます。AL2023 `UefiData` を提供することで UEFI セキュアブートが有効になり、前のセクションの手順を実行する必要がなくなります。

バイナリ BLOB の作成と使用の詳細については、「*Amazon EC2 ユーザーガイド*」の「[あらかじめ入力された変数ストアを含むバイナリ BLOB を作成する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami-with-uefi-secure-boot.html#uefi-secure-boot-optionB)」を参照してください。

AL2023 には、Amazon EC2 インスタンスで直接使用できる構築済みのバイナリ BLOB が用意されています。バイナリ BLOB は実行中のインスタンスの `/usr/share/amazon-linux-sb-keys/uefi.vars` にあります。この BLOB は、リリース 2023.1 以降の AL2023 AMI にデフォルトでインストールされている `amazon-linux-sb-keys` RPM パッケージによって提供されます。

**注記**  
キーおよび失効のバージョンが最新であることを確認するには、AMI の作成に使用したのと同じリリースの AL2023 の BLOB を使用します。

イメージの登録時には、[https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RegisterImage.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RegisterImage.html) API の `BootMode` パラメータを `uefi` に設定することをお勧めします。これにより、`TpmSupport` パラメータを `v2.0` に設定することで NitrotPM を有効にできます。また、UEFI をサポートしないインスタンスタイプに切り替えたときに UEFI セキュアブートが有効になり、誤って無効にされないように `BootMode` を `uefi` に設定できます。

NitroTPM の詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 インスタンスにおける NitroTPM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html)」を参照してください。

## 失効の更新
<a name="revocation-updates"></a>

Amazon Linux は、更新されたキーで署名された新しいバージョンのブートローダー `grub2` または Linux カーネルを配布する必要がある場合があります。その場合は、以前のバージョンのブートローダーの悪用可能なバグが UEFI セキュアブート検証プロセスをバイパスしてしまうことを防ぐために、古いキーを取り消す必要がある場合があります。

`grub2` または `kernel` パッケージにパッケージを更新すると、実行中のインスタンスの UEFI 変数ストアへの失効リストが常に自動的に更新されます。つまり、UEFI セキュアブートを有効にすると、パッケージのセキュリティ更新をインストールした後は、古いバージョンのパッケージを実行できなくなります。

## AL2023 での UEFI 安全ブートのしくみ
<a name="shim-use"></a>

他の Linux 配布とは異なり、Amazon Linux には第 1 ステージのブートローダーとして機能するシムと呼ばれる追加コンポーネントはありません。シムは通常、Microsoft のキーで署名されています。例えば、シム付きの Linux ディストリビューションでは、シムが `grub2` ブートローダーをロードし、シム独自のコードを使用して Linux カーネルを検証します。さらに、シムは UEFI 変数ストアにある Machine Owner Key (MOK) データベースに独自のキーセットと失効情報を保持し、`mokutil` ツールで制御します。

Amazon Linux にはシムはありません。AMI の所有者が UEFI 変数を制御するため、この中間ステップは不要で、起動時間と起動時間に悪影響を及ぼします。また、望ましくないバイナリが実行される可能性を減らすため、デフォルトではベンダーキーへの信頼を含めないようにしました。通常通り、必要に応じてバイナリを含めることができます。

Amazon Linux では、UEFI が `grub2` ブートローダーを直接ロードして検証します。`grub2` ブートローダーは、ロード後に UEFI を使用して Linux カーネルを検証するように変更されました。そのため、Linux カーネルは、通常の UEFI `db` 変数 (認証キーデータベース) に格納されているのと同じ証明書を使用して検証され、ブートローダーや他の UEFI バイナリと同じ `dbx` 変数 (失効データベース) に対してテストされます。db データベースおよび dbx データベースへのアクセスを制御する独自の PK キーおよび KEK キーを提供しているため、シムなどの仲介なしで、必要に応じて署名付きの更新と失効を配布できます。

UEFI セキュアブートの詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 インスタンスでの UEFI セキュアブートのしくみ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-uefi-secure-boot-works.html)」を参照してください。

## 独自のキーを登録する
<a name="enrolling-own-keys"></a>

前のセクションで説明したように、Amazon Linux では Amazon EC2 で `shim` が UEFI セキュアブートを実行する必要はありません。他の Linux 配布ドキュメントを読んでいると、AL2023 にはない、`mokutil` を使用した Machine Owner Key (MOK) データベースの管理に関するドキュメントを見かける可能性があります。`shim` および MOK 環境は、Amazon EC2 が UEFI セキュアブートを実装する方法には当てはまらない UEFI ファームウェアへのキー登録のいくつかの制限を回避します。Amazon EC2 には、UEFI 変数ストア内のキーを簡単に直接操作するメカニズムがあります。

独自のキーを登録したい場合は、既存のインスタンス内の変数ストアを操作するか (「[インスタンス内から変数ストアにキーを追加する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami-with-uefi-secure-boot.html#uefi-secure-boot-optionA)」を参照してください)、事前入力されたバイナリ BLOB を構築できます (「[事前入力された変数ストアを含むバイナリ BLOB の作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami-with-uefi-secure-boot.html#uefi-secure-boot-optionB)」を参照してください)。