第7章 UKI を使用したパブリッククラウドプラットフォーム上での RHEL の設定
信頼されていないストレージからでも、Red Hat Enterprise Linux (RHEL) インスタンスが確実にセキュアなブートプロセスを実行できるようにするには、Unified Kernel Image (UKI) を使用します。これは、パブリッククラウドプラットフォーム上の Confidential Virtual Machine (CVM) に適用されます。
7.1. Unified Kernel Image の概要 リンクのコピーリンクがクリップボードにコピーされました!
セキュアブート保護をブートチェーン全体に拡張するには、Unified Kernel Image (UKI) を使用します。
- UKI のコンポーネント
Unified Kernel Image (UKI) は、Unified Extensible Firmware Interface (UEFI) の Portable Executable (PE) バイナリーです。これは、UEFI 環境向けオペレーティングシステムの必須コンポーネントをまとめてパッケージ化したものです。UKI バイナリーコンポーネントは、initramfs とカーネルコマンドラインを含めることで、セキュアブートの適用範囲を拡張します。Initramfs は Linux の起動プロセスの一部です。カーネルコマンドラインでは、限られた範囲でパラメーターを定義できます。UKI バイナリーに含まれる主なコンポーネントは以下のとおりです。
-
.linuxセクションには Linux カーネルイメージが格納されます。 -
.initrdセクションには、初期 RAM ファイルシステムinitramfsが格納されます。 -
.cmdlineセクションにはカーネルコマンドラインが格納されます。 -
.sbatなどの追加セクション。 - Red Hat の署名。
- プリビルド済みの
initramfsを搭載した RHEL UKI の機能
- ブートチェーン内のオブジェクトを、悪意のあるエージェントまたはコンポーネントが変更することを禁止します。
-
プリビルド済みの
initramfsがあるため、ユーザーは独自のinitramfsを構築する必要がなく、結果としてカーネルのインストールが高速化されます。 -
仮想マシン (VM)、コンテナー、クラウドインスタンスなど、すべてのインストール環境で同様の設定になっているため、事前に構築された
initramfsシステムをサポートします。 -
x86_64アーキテクチャーをサポートします。 -
kernel-uki-virtパッケージが含まれています。 - 仮想マシンおよびクラウドインスタンス向けに構築されています。
- ブートプロセスの柔軟性の低下による UKI の制限
-
UKI を構築する際、オペレーティングシステムのベンダーは
initramfsを作成します。その結果、リストされているカーネルモジュールと含まれているカーネルモジュールは静的なものです。この制限に対処するには、systemdのシステム拡張機能と設定拡張機能を使用できます。 - カーネルのコマンドラインパラメーターは静的であるため、異なるインスタンスサイズやデバッグオプションのためのパラメーターの使用が制限されます。
この制限を回避するには、UKI コマンドライン拡張機能を使用できます。
- UKI セキュアブートプロセス
起動時にシステムが不正に変更されないようにするには、Unified Kernel Image (UKI) のセキュアブートメカニズムを使用します。セキュアブートで UKI を使用する場合、システムはブートチェーン内の各コンポーネントを検証し、システムの整合性を確保し、悪意のあるコードの実行を防止します。クラウド上の Red Hat Enterprise Linux (RHEL) のセキュアブートプロセスは以下のとおりです。
UEFI ファームウェア: ブートプロセスは、UEFI (Unified Extensible Firmware Interface) ファームウェアから始まります。
- 従来の basic input/output system (BIOS) ファームウェアはサポートされていないため、Red Hat Enterprise Linux (RHEL) UKI の起動には UEFI ファームウェアが必要です。
Shim ブートローダー: UEFI ファームウェアから UKI (PE バイナリー) を直接起動するのではなく、
shimブートローダーを使用して起動します。-
shimには、Machine Owner Key (MOK) やセキュアブートアドバンストターゲティング (SBAT) などの追加のセキュリティーメカニズムが含まれています。
-
署名検証 (セキュアブート UEFI メカニズム): ブート中、
shimは UKI バイナリーを読み取り、セキュアブート UEFI メカニズムは UKI の署名を検証します。-
この署名検証は、システムのセキュアブート Allowed Signature データベース (
db)、MOKデータベース、およびshimバイナリーの組み込みデータベースに保存されている信頼できる鍵に対して行われます。 - 署名キーが有効であれば、検証は成功します。
-
この署名検証は、システムのセキュアブート Allowed Signature データベース (
SBAT 検証: 署名検証の直後、
shimブートローダーは起動時に SBAT ルールを検証します。-
SBAT 検証中、システムは、
.sbatセクションを使用して、UKI に組み込まれているsystemd.rhelやlinux.rhelなどのコンポーネントの世代番号を、shimブートローダーの値と比較します。 shim内のコンポーネントの世代番号が UKI の世代番号よりも大きい場合、信頼できる鍵で署名されていても、バイナリーは自動的に破棄されます。世代番号は、
shimやgrubなどの UEFI アプリケーションのバージョン識別子であることに注意してください。
-
SBAT 検証中、システムは、
-
展開と実行: 検証が成功すると、制御は
shimから UKI 内のsystemd-stubコードに渡され、ブートプロセスが続行されます。 systemd-stub アドオン: 実行時に、
systemd-stubは、.cmdlineセクション (プレーンテキストのカーネルコマンドライン) と.initrdセクション (一時的なルートファイルシステム) の内容を展開して、ブートプロセスに使用します。systemd-stubは、PE バイナリーでもある UKI アドオンを読み込み、その署名を検証し、アドオンの.cmdlineコンテンツを追加して UKI のカーネルコマンドラインを安全に拡張することに注意してください。systemd-stubは、アドオンを 2 つの場所から読み込みます。-
Extensible Firmware Interface (EFI) システムパーティション (ESP) 上の
/loader/addons/ディレクトリーにあるグローバル (UKI 非依存) アドオン。 -
ESP 上の
/EFI/Linux/<UKI-name>.extra.d/ディレクトリーからの UKI ごとのアドオン。
-
Extensible Firmware Interface (EFI) システムパーティション (ESP) 上の
制御は
systemd-stubから Linux カーネルに渡され、オペレーティングシステムの起動プロセスが続行されます。この時点から、UKI メカニズムを使用したセキュアブートは、標準的なカーネルの起動プロセスへと移行します。