

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

# Amazon Linux 2023 でのセキュリティおよびコンプライアンス
<a name="security"></a>

**重要**  
 脆弱性を報告する場合、または AWS クラウドサービスやオープンソースプロジェクトに関するセキュリティ上の懸念がある場合は、[「脆弱性レポート」ページ](https://aws.amazon.com/security/vulnerability-reporting/)を使用して AWS セキュリティにお問い合わせください。

のクラウドセキュリティが最優先事項 AWS です。お客様は AWS 、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャを活用できます。

セキュリティは、 AWS お客様とお客様の間の責任共有です。[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)ではこれをクラウド*の*セキュリティおよびクラウド*内*のセキュリティと説明しています。
+ **クラウドのセキュリティ** – AWS クラウドで AWS サービスを実行するインフラストラクチャを保護する AWS 責任があります。 AWS また、 では、安全に使用できるサービスも提供しています。サードパーティーの監査者は、[AWS コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)コンプライアンスプログラムの一環として、当社のセキュリティの有効性を定期的にテストおよび検証。AL2023 に適用されるコンプライアンスプログラムの詳細については、「コンプライアンスプログラム[AWS による対象範囲内のサービスコンプライアンスプログラム](https://aws.amazon.com/compliance/services-in-scope/)」を参照してください。
+ **クラウド内のセキュリティ** – お客様の責任は使用する AWS のサービスによって決まります。また、お客様は、お客様のデータの機密性、企業の要件、および適用可能な法律および規制などの他の要因についても責任を担います。

**Topics**
+ [AL2023 に関する Amazon Linux セキュリティアドバイザリ](alas.md)
+ [適用可能なアドバイザリの一覧表示](listing-applicable-advisories.md)
+ [セキュリティ更新プログラムのインプレースでの適用](security-inplace-update.md)
+ [AL2023 の SELinux モードの設定](selinux-modes.md)
+ [AL2023 で FIPS モードを有効にする](fips-mode.md)
+ [AL2023 コンテナで FIPS モードを有効にする](fips-mode-container.md)
+ [AL2023 で OpenSSL FIPS プロバイダーを切り替える](fips-openssl-swap-provider.md)
+ [AL2023 カーネル強化](kernel-hardening.md)
+ [AL2023 でのリポジトリメタデータ署名](repo-metadata-signing.md)
+ [AL2023 での UEFI セキュアブート](uefi-secure-boot.md)

# AL2023 に関する Amazon Linux セキュリティアドバイザリ
<a name="alas"></a>

 Amazon Linux の安全性を保つため、懸命に取り組んでいますが、修正が必要なセキュリティ上の問題が発生することがあります。*アドバイザリ*は、修正が入手可能になると公開されます。アドバイザリが公開される主な場所は、Amazon Linux Security Center (ALAS) のウェブサイトです。詳細については「[Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html)」を参照してください。

**重要**  
 脆弱性を報告する場合、または AWS クラウドサービスやオープンソースプロジェクトに関するセキュリティ上の懸念がある場合は、[「脆弱性レポート」ページ](https://aws.amazon.com/security/vulnerability-reporting/)を使用して AWS セキュリティにお問い合わせください。

 AL2023 に影響する問題や関連する更新に関する情報は、Amazon Linux チームが複数の場所で公開します。セキュリティツールでは、これらの主要な情報源から情報を取得し、その結果をユーザーに提示するのが一般的です。このため、Amazon Linux が公開するプライマリソースに直接触れずに、[Amazon Inspector](https://docs.aws.amazon.com/inspector/latest/user/what-is-inspector.html) などの希望するツールが提供するインターフェイスで確認することになる可能性があります。

## Amazon Linux Security Center の発表
<a name="alas-announcements"></a>

 Amazon Linux の*発表*は、アドバイザリには該当しない事項に関して提供されます。このセクションでは、ALAS 自体に関する発表と、アドバイザリに当てはまらない情報について説明します。詳細については「[Amazon Linux Security Center (ALAS) Announcements](https://alas.aws.amazon.com/announcements.html)」を参照してください。

 例えば、「[2021-001 - Amazon Linux Hotpatch Announcement for Apache Log4j](https://alas.aws.amazon.com/announcements/2021-001.html)」は、アドバイザリではなく発表に該当します。ここでは、Amazon Linux に、Amazon Linux に含まれていないソフトウェアのセキュリティ問題の軽減に役立つパッケージが追加されたことを発表しています。

 [Amazon Linux Security Center CVE Explorer](https://explore.alas.aws.amazon.com/) も、ALAS の発表で公開されました。詳細については、「[New website for CVEs](https://alas.aws.amazon.com/announcements/2023-001.html)」を参照してください。

## Amazon Linux Security Center のよくある質問
<a name="alas-faqs"></a>

 ALAS および Amazon Linux による CVE の評価方法に関するよくある質問への回答については、[Amazon Linux Security Center (ALAS) Frequently Asked Questions (FAQs)](https://alas.aws.amazon.com/faqs.html)」を参照してください。

## ALAS アドバイザリ
<a name="alas-advisories"></a>

 Amazon Linux Advisory は、Amazon Linux ユーザーに関連する重要な情報、特にセキュリティ更新に関する情報を提供します。[Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html) は、アドバイザリがウェブ上で公開される場所です。アドバイザリ情報は、RPM パッケージリポジトリのメタデータの一部としても提供されます。

## アドバイザリと RPM リポジトリ
<a name="advisory-and-repos"></a>

 Amazon Linux 2023 パッケージリポジトリには、0 件以上の更新を記述するメタデータが含まれている場合があります。`dnf updateinfo` コマンドの名前は、この情報を含むリポジトリメタデータファイル名 `updateinfo.xml` にちなんで命名されています。コマンドの名前は `updateinfo` で、メタデータファイルは `update` を指しますが、これらはすべてアドバイザリの一部であるパッケージの更新を参照しています。

 Amazon Linux Advisories は、`dnf` パッケージマネージャーが参照する RPM リポジトリのメタデータに存在する情報とともに、[Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html) のウェブサイトで公開されます。ウェブサイトとリポジトリのメタデータは最終的に一貫性が維持されますが、ウェブサイト上の情報とリポジトリのメタデータが一致しない場合もあります。これは通常、AL2023 の新しいリリースがリリース途上で、最新の AL2023 リリース後にアドバイザリが更新される場合に発生します。

 通常、問題に対処するパッケージ更新と同時に新しいアドバイザリが発表されますが、必ずしもそうであるとは限りません。アドバイザリは、リリース済みのパッケージで対処されている新しい問題に関して作成される場合もあります。既存のアドバイザリが、既存の更新で対処された新しい CVE で更新される場合もあります。

 Amazon Linux 2023 の「[AL2023 でのバージョン管理されたリポジトリを介した確定的なアップグレード](deterministic-upgrades.md)」機能は、特定の AL2023 バージョンの RPM レポジトリに、このバージョンの時点での RPM レポジトリのメタデータスナップショットが含まれていることを意味します。これには、セキュリティ更新を記述するメタデータが*含まれ*ます。特定の AL2023 バージョンの RPM リポジトリは、リリース後には*更新されません*。*AL2023 RPM リポジトリの古いバージョンを参照する場合、新規または更新されたセキュリティアドバイザリは表示されません*。`dnf` パッケージマネージャーを使用して`latest`リポジトリバージョンまたは特定の AL2023 リリースを確認する方法については、「[適用可能なアドバイザリの一覧表示](listing-applicable-advisories.md)」セクションを参照してください。

## Advisory ID
<a name="advisory-ids"></a>

 各アドバイザリは `id` で参照されます。現時点での Amazon Linux の傾向として、[Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html) ウェブサイトでは、アドバイザリを「[ALAS-2024-581](https://alas.aws.amazon.com/AL2023/ALAS-2024-581.html)」として表示し、`dnf` パッケージマネージャーは、[同じアドバイザリを「ALAS2023-2024-581」の ID を持つものとして表示](listing-applicable-advisories.md)するという点があります。[セキュリティ更新プログラムのインプレースでの適用](security-inplace-update.md)場合、特定のアドバイザリを参照するには、パッケージマネージャー ID を使用する必要があります。

 Amazon Linux では、OS のメジャーバージョンごとに独自の Advisory ID の名前空間が存在します。Amazon Linux Advisory ID の形式については特定の想定をすべきではありません。これまで、Amazon Linux Advisory ID は、`NAMESPACE-YEAR-NUMBER` というパターンに従っていました。`NAMESPACE` に指定可能な値の全範囲は定義されていませんが、`ALAS`、`ALASCORRETTO8`、`ALAS2023`、`ALAS2`、`ALASPYTHON3.8`、`ALASUNBOUND-1.17` などがあります。`YEAR` はアドバイザリが作成された年、`NUMBER` は名前空間内での一意の整数です。

 Advisory ID は*通常*、更新のリリース順での連番ですが、そうならない理由も数多くあり、必ずしも連番になるとは限らないため、連番であると想定すべきではありません。

 Advisory ID は、Amazon Linux の各メジャーバージョンに固有の、非透過的な文字列として扱います。

 Amazon Linux 2 では、各 Extra は個別の RPM リポジトリに格納され、アドバイザリのメタデータは関連するリポジトリ内にのみ格納されています。あるリポジトリのアドバイザリが、別のリポジトリに*適用されることはありません*。現時点では、[Amazon Linux Security Center](https://alas.aws.amazon.com/alas2.html) ウェブサイトでは、主要な Amazon Linux バージョンごとにアドバイザリリストが 1 つずつ提供されており、リポジトリごとのリストには分割されていません。

 AL2023 は、パッケージの代替バージョンのパッケージ化に Extras メカニズムを使用していないため、現時点では、`core` リポジトリと `livepatch` リポジトリの 2 つの RPM リポジトリしかなく、それぞれにアドバイザリが含まれています。`livepatch` レポジトリは、[AL2023 のカーネルライブパッチ](live-patching.md)用です。

## アドバイザリのリリース日とアドバイザリの更新日
<a name="advisory-dates"></a>

 Amazon Linux Advisories のアドバイザリリリース日は、セキュリティ更新が RPM リポジトリで最初に公開された日時を示します。アドバイザリは、RPM リポジトリを介して修正プログラムがインストール可能になった直後に、[Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html) ウェブサイトに掲載されます。

 アドバイザリの更新日は、以前に公開されたアドバイザリに新しい情報が追加された日付を示します。

 AL2023 のバージョン番号 (2023.6.20241031 など) と、そのリリースと同時に公開されたアドバイザリのアドバイザリリリース日の間には、なんらの関連性をも想定すべきではありません。

## アドバイザリのタイプ
<a name="advisory-types"></a>

 RPM リポジトリのメタデータは、さまざまなタイプのアドバイザリをサポートしています。Amazon Linux はほぼ例外なく、セキュリティ更新に関するアドバイザリのみを発表していますが、これに限ると想定すべきではありません。バグ修正、機能強化、新しいパッケージなどのイベントに関するアドバイザリが発表され、アドバイザリにそのようなタイプの更新が含まれているとマークされる可能性があります。

## アドバイザリの重大度
<a name="advisory-severities"></a>

 各アドバイザリでは、各問題は個別に評価されるため、独自の重大度が指定されます。単一のアドバイザリで複数の CVE について対応する場合もあり、各 CVE の評価はさまざまでも、アドバイザリ自体の重大度は 1 つです。単一のパッケージ更新についてのアドバイザリが複数存在する場合もあります。このため、特定のパッケージ更新に、複数の重大度 (アドバイザリごとに 1 つ) が存在する場合があります。

 Amazon Linux では、アドバイザリの重大度を示すのに、重大度の高い順に、Critical (重大)、Important (重要)、Moderate (中)、Low (低) を使用しています。Amazon Linux アドバイザリには*重大度が指定されていない*場合もありますが、これは非常にまれです。

 Amazon Linux は、Moderate (中) という用語を使用する RPM ベースの Linux ディストリビューションの 1 つであり、他の RPM ベースの Linux ディストリビューションでは、同等の用語である Medium (中) を使用しています。Amazon Linux パッケージマネージャーは両方の用語を同義として扱いますが、サードパーティーのパッケージリポジトリでは Medium の用語を使用する場合もあります。

 Amazon Linux Advisories では、対処されている関連する問題について経時的に新たな知見が得られるにつれ、随時*重大度が変更される*可能性があります。

 *通常*、アドバイザリの重大度は、アドバイザリで参照される CVE について、Amazon Linux で評価された CVSS スコアの最大値に基づいて産出されます。ただし、必ずしもそうとは限りません。例えば、CVE が割り当てられていない問題に対処している場合などがこれにあたります。

 Amazon Linux がアドバイザリの重大度評価を使用する方法の詳細については、「[ALAS FAQ](https://alas.aws.amazon.com/faqs.html)」を参照してください。

## アドバイザリとパッケージ
<a name="advisory-packages"></a>

 単一のパッケージに対して複数のアドバイザリが発表される場合がありますが、すべてのパッケージに対してアドバイザリが発表されるとは限りません。特定のパッケージのバージョンは、複数のアドバイザリで参照される可能性があり、各アドバイザリに独自の重大度と CVE が指定されます。

 同じパッケージ更新に対して複数のアドバイザリが 1 つの新しい AL2023 リリースで同時に発表される場合も、立て続けに発表される場合もあります。

 他の Linux ディストリビューションと同様に、同じソースパッケージから単一または多数の異なるバイナリパッケージが構築される場合があります。例えば、[ALAS-2024-698](https://alas.aws.amazon.com/AL2023/ALAS-2024-698.html) は、`mariadb105` パッケージに適用されるものとして、[Amazon Linux Security Center ウェブサイトの AL2023 セクション](https://alas.aws.amazon.com/alas2023.html)に掲載されているアドバイザリです。これは*ソース*パッケージ名であり、アドバイザリ自体はソースパッケージとともに*バイナリ*パッケージも参照しています。この場合、1 つの `mariadb105` ソースパッケージから 12 を超えるバイナリパッケージが構築されています。ソースパッケージと同じ名前のバイナリパッケージが存在することは非常によくあることですが、必ずしもそうであるとは限りません。

 Amazon Linux Advisories は通常、更新されたソースパッケージから構築されたすべてのバイナリパッケージを一覧表示していますが、必ずそうであると想定すべきではありません。パッケージマネージャーと RPM リポジトリのメタデータ形式により、更新されたバイナリパッケージのサブセットを一覧表示するアドバイザリが出される場合もあります。

 特定のアドバイザリが、特定の CPU アーキテクチャにのみ適用される場合もあります。すべてのアーキテクチャ用に構築されていないパッケージや、すべてのアーキテクチャに影響を与えない問題がある場合もあります。パッケージがすべてのアーキテクチャで利用可能であるのに、問題が 1 つのアーキテクチャにのみ適用される場合、Amazon Linux は通常、影響を受けるアーキテクチャのみを参照するアドバイザリが発表されることはありませんが、その可能性を排除すべきではありません。

 パッケージの依存関係の特質上、アドバイザリが 1 つのパッケージを参照していても、その更新をインストールするには、アドバイザリに記載されていないパッケージを含むその他のパッケージの更新が必要になる場合がよくあります。`dnf` パッケージマネージャーは、必要な依存関係のインストールを処理します。

## アドバイザリと CVE
<a name="advisory-cves"></a>

 アドバイザリは、0 以上の CVE に対応している場合があり、同じ CVE を参照するアドバイザリが複数ある場合もあります。

 アドバイザリが 0 件の CVE を参照する例には、問題に CVE がまだ割り当てられていない場合 (またはまったく割り当てられない場合) があります。

 複数のアドバイザリが同じ CVE を参照する例には、CVE が複数のパッケージに適用される場合などがあります。例えば、[CVE-2024-21208](https://alas.aws.amazon.com/cve/html/CVE-2024-21208.html) は、Corretto 8、11、17、21 に適用されます。これらの Corretto バージョンは、それぞれ AL2023 の個別のパッケージであり、以下のとおり、各パッケージに対してアドバイザリが出されています。Corretto 8 には [ALAS-2024-754](https://alas.aws.amazon.com/AL2023/ALAS-2024-754.html)、Corretto 11 には [ALAS-2024-753](https://alas.aws.amazon.com/AL2023/ALAS-2024-753.html)、Corretto 17 には [ALAS-2024-752](https://alas.aws.amazon.com/AL2023/ALAS-2024-752.html)、Corretto 21 には [ALAS-2024-752](https://alas.aws.amazon.com/AL2023/ALAS-2024-751.html) です。これらの Corretto リリースはすべて同じ CVE のリストがありますが、必ずしもそうであるとは限らないことに注意が必要です。

 特定の CVE が、パッケージごとに異なる評価を受ける場合があります。例えば、重要度が重要であるアドバイザリで特定の CVE が参照されている場合に、同じ CVE について異なる重大度で参照する別のアドバイザリが出されている場合もあります。

 RPM リポジトリメタデータでは、各アドバイザリのリファレンスを一覧表示できます。Amazon Linux では通常、CVE のみが参照されますが、メタデータ形式では他のリファレンスタイプも使用できます。

 RPM パッケージリポジトリのメタデータは、修正可能な CVE のみを参照します。[Amazon Linux Security Center ウェブサイトの 「Explore」セクション](https://explore.alas.aws.amazon.com)には、Amazon Linux が評価した CVE に関する情報が掲載されています。この評価により、さまざまな Amazon Linux リリースおよびパッケージの CVSS ベーススコア、重大度、ステータスが算出される可能性があります。特定の Amazon Linux リリースまたはパッケージの CVE のステータスは、Not Affected (影響なし)、Pending Fix (修正保留中)、または No Fix Planned (修正予定なし) のいずれかになります。CVE のステータスと評価は、アドバイザリが発表される前に何度も*任意の方法*で変更される可能性があります。これには、Amazon Linux への CVE の適用可能性が再評価された場合などがあります。

 アドバイザリで参照される CVE のリストは、そのアドバイザリの最初の公開後に変更される可能性があります。

## アドバイザリのテキスト
<a name="advisory-text"></a>

 アドバイザリには、アドバイザリが作成される理由となった問題を説明するテキストも含まれます。通常、このテキストは、未修正の CVE のテキストです。このテキストでは、Amazon Linux が修正を適用したパッケージバージョンとは異なる、修正が利用可能なアップストリームバージョン番号を参照している場合があります。新しいアップストリームリリースから、Amazon Linux が修正をバックポートすることはよくあります。アドバイザリのテキストに、Amazon Linux バージョンで出荷されたバージョンとは異なるアップストリームリリースが記載されている場合でも、アドバイザリ内の Amazon Linux パッケージのバージョンは正確です。

 RPM リポジトリメタデータ内のアドバイザリテキストは、詳細についてはシンプルに [Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html) ウェブサイトを参照するプレースホルダーテキストである場合もあります。

## カーネルライブパッチのアドバイザリ
<a name="livepatch-advisories"></a>

 ライブパッチに関するアドバイザリは、アドバイザリの対象となるパッケージ (`kernel-livepatch-6.1.15-28.43` など) とは異なるパッケージ (Linux カーネル) を参照するという点で独特です。

 [カーネルライブパッチ](live-patching.md)に関するアドバイザリでは、ライブパッチパッケージが適用される*特定の*カーネルバージョンについて、そのライブパッチパッケージが対処できる問題 (CVE など) が参照されます。

 各ライブパッチは、*特定の*カーネルバージョンを対象としています。CVE にライブパッチを適用するには、使用するカーネルバージョンに適したライブパッチパッケージをインストールし、ライブパッチを適用する必要があります。

 例えば、[CVE-2023-6111](https://alas.aws.amazon.com/cve/html/CVE-2023-6111.html) は、AL2023 カーネルバージョン `6.1.56-82.125`、`6.1.59-84.139`、`6.1.61-85.141` に対してライブパッチを適用できます。この CVE を修正した新しいカーネルバージョンもリリースされており、[別のアドバイザリ](https://alas.aws.amazon.com/AL2023/ALAS-2023-461.html)が出されています。AL2023 で [CVE-2023-6111](https://alas.aws.amazon.com/cve/html/CVE-2023-6111.html) に対処するには、[ALAS2023-2023-461](https://alas.aws.amazon.com/AL2023/ALAS-2023-461.html) で指定されているバージョン移行のカーネルバージョンを*実行*するか、この CVE に対するライブパッチが適用されたカーネルバージョンのいずれかを実行する必要があります。

 既にライブパッチが利用可能な特定のカーネルバージョンに新しいライブパッチが利用可能になった場合、`kernel-livepatch-KERNEL_VERSION` パッケージの新しいバージョンがリリースされます。例えば、[https://alas.aws.amazon.com/AL2023/ALASLIVEPATCH-2023-003.html](https://alas.aws.amazon.com/AL2023/ALASLIVEPATCH-2023-003.html) アドバイザリは、3 つの CVE に対応する `6.1.15-28.43` カーネルのライブパッチを含む `kernel-livepatch-6.1.15-28.43-1.0-1.amzn2023` パッケージで公開されました。その後、[https://alas.aws.amazon.com/AL2023/ALASLIVEPATCH-2023-009.html](https://alas.aws.amazon.com/AL2023/ALASLIVEPATCH-2023-009.html) アドバイザリが `kernel-livepatch-6.1.15-28.43-1.0-2.amzn2023` パッケージとともに公開されました。これは、別の CVE に対するライブパッチを含む、`6.1.15-28.43` カーネルの以前のライブパッチパッケージの更新でした。他のカーネルバージョンにもライブパッチアドバイザリの問題があり、パッケージにはそれらの特定のカーネルバージョンを対象とするライブパッチも含まれていました。

 カーネルライブパッチの詳細については、「[AL2023 のカーネルライブパッチ](live-patching.md)」を参照してください。

 セキュリティアドバイザリに関連するツールを開発している場合は、「[アドバイザリと `updateinfo.xml` の XML スキーマ](#advisory-schema)」セクションを参照して詳細を確認することをお勧めします。

## アドバイザリと `updateinfo.xml` の XML スキーマ
<a name="advisory-schema"></a>

 `updateinfo.xml` ファイルは、パッケージリポジトリ形式の一部です。これは、[適用可能なアドバイザリの一覧表示](listing-applicable-advisories.md)や[セキュリティ更新プログラムのインプレースでの適用](security-inplace-update.md)などの機能を実装するために `dnf` パッケージマネージャーが解析するメタデータです。

 リポジトリのメタデータ形式を解析するためにカスタムコードを作成するのではなく、`dnf` パッケージマネージャーの API を使用することをお勧めします。AL2023 の `dnf` バージョンは、AL2023 リポジトリ形式と AL2 リポジトリ形式の両方を解析できるため、どちらの OS バージョンのアドバイザリ情報も、API を使用して調べることができます。

 [RPM Software Management](https://github.com/rpm-software-management/) プロジェクトは、GitHub の [rpm-metadata](https://github.com/rpm-software-management/rpm-metadata) リポジトリに RPM メタデータ形式をドキュメント化しています。

 `updateinfo.xml` メタデータを直接解析するツールを開発している場合は、[rpm-metadata ドキュメント](https://github.com/rpm-software-management/rpm-metadata)をよく読むことを強くお勧めします。このドキュメントでは、実際に使用されている事例を取り上げており、メタデータ形式のルールとして合理的に解釈できるものに対する多くの例外が網羅されています。

 GitHub の [raw-historical-rpm-repository-examples](https://github.com/rpm-software-management/raw-historical-rpm-repository-examples) リポジトリには、`updateinfo.xml` ファイルの実際の例が数多く掲載されており、現在も増え続けています。

 ドキュメントで不明な点がある場合は、GitHub プロジェクトで Issue を開いてお問い合わせくだされば、回答してドキュメントを適切に更新します。これはオープンソースプロジェクトであるため、ドキュメントの更新に関するプルリクエストも歓迎いたします。

# 適用可能なアドバイザリの一覧表示
<a name="listing-applicable-advisories"></a>

 `dnf` パッケージマネージャーは、どのアドバイザリがどのパッケージバージョンで修正されたかを示すメタデータにアクセスできます。これにより、インスタンスまたはコンテナイメージに適用可能なアドバイザリを一覧表示できます。

**注記**  
 [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/) などのツールでは、この機能を使用して、単一のインスタンスだけでなく、フリート全体にわたって関連する更新を表示できます。

 更新を一覧表示する場合、特定の AL2023 リリースのメタデータ、または最新リリースのメタデータを確認するように `dnf` に指示できます。

**注記**  
 AL2023 リリースが行われると、リリースはイミュータブルになります。したがって、[Amazon Linux セキュリティセンター](https://alas.aws.amazon.com/alas2023.html)での新規または更新されたアドバイザリは、AL2023 の*新しい*リリースのメタデータにのみ追加されます。

 どのアドバイザリを AL2023 コンテナイメージに適用するかの例をいくつか以下に示します。これらのコマンドはすべて、EC2 インスタンスなどのコンテナ化されていない環境で機能します。

------
#### [ Listing advisories in a specific version ]

 この例では、[2023.1.20230628](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.1.20230628.html) リリースのどのアドバイザリが [2023.0.20230315](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.0.20230315.html) リリースのコンテナイメージに関連しているかを確認します。

**注記**  
 この例では、[2023.0.20230315](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.0.20230315.html) および [2023.1.20230628](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.1.20230628.html) リリースを使用しています。これらは AL2023 の最新リリースでは*ありません*。最新のセキュリティ更新プログラムを含む最新リリースについては、「[AL2023 リリースノート](https://docs.aws.amazon.com/linux/al2023/release-notes/)」を参照してください。

 この例では、[2023.0.20230315](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.0.20230315.html) リリースのコンテナイメージから始めます。

 まず、このコンテナイメージをコンテナレジストリから取得します。末尾の `.0` は、特定のリリースにおけるイメージのバージョンを示します。このイメージのバージョンは通常 0 です。

```
$ docker pull public.ecr.aws/amazonlinux/amazonlinux:2023.0.20230315.0
	  2023.0.20230315.0: Pulling from amazonlinux/amazonlinux
b76f3b09316a: Pull complete
Digest: sha256:94e7183b0739140dbd5b639fb7600f0a2299cec5df8780c26d9cb409da5315a9
Status: Downloaded newer image for public.ecr.aws/amazonlinux/amazonlinux:2023.0.20230315.0
public.ecr.aws/amazonlinux/amazonlinux:2023.0.20230315.0
```

 これでコンテナ内にシェルを立ち上げられるようになったので、そこからコンテナにインストールされているパッケージに関連するアドバイザリを一覧表示するよう `dnf` に指示します。

```
$ docker run -it public.ecr.aws/amazonlinux/amazonlinux:2023.0.20230315.0
	  bash-5.2#
```

 次に `dnf updateinfo` コマンドを使用して、[2023.1.20230628](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.1.20230628.html) リリースのどのアドバイザリが、インストール済みのパッケージに関連しているかの概要を表示します。

```
$ dnf updateinfo --releasever=2023.1.20230628
Amazon Linux 2023 repository                     42 MB/s |  15 MB     00:00
Last metadata expiration check: 0:00:02 ago on Mon Jul 22 20:24:24 2024.
Updates Information Summary: available
    8 Security notice(s)
        1 Important Security notice(s)
        5 Medium Security notice(s)
        2 Low Security notice(s)
```

 アドバイザリのリストを取得するには、`--list` オプションを `dnf updateinfo` に指定できます。

```
$ dnf updateinfo --releasever=2023.1.20230628 --list
Last metadata expiration check: 0:01:22 ago on Mon Jul 22 20:24:24 2024.
ALAS2023-2023-193 Medium/Sec.    curl-minimal-8.0.1-1.amzn2023.x86_64
ALAS2023-2023-225 Medium/Sec.    glib2-2.74.7-688.amzn2023.0.1.x86_64
ALAS2023-2023-195 Low/Sec.       libcap-2.48-2.amzn2023.0.3.x86_64
ALAS2023-2023-193 Medium/Sec.    libcurl-minimal-8.0.1-1.amzn2023.x86_64
ALAS2023-2023-145 Low/Sec.       libgcc-11.3.1-4.amzn2023.0.3.x86_64
ALAS2023-2023-145 Low/Sec.       libgomp-11.3.1-4.amzn2023.0.3.x86_64
ALAS2023-2023-145 Low/Sec.       libstdc++-11.3.1-4.amzn2023.0.3.x86_64
ALAS2023-2023-163 Medium/Sec.    libxml2-2.10.4-1.amzn2023.0.1.x86_64
ALAS2023-2023-220 Important/Sec. ncurses-base-6.2-4.20200222.amzn2023.0.4.noarch
ALAS2023-2023-220 Important/Sec. ncurses-libs-6.2-4.20200222.amzn2023.0.4.x86_64
ALAS2023-2023-181 Medium/Sec.    openssl-libs-1:3.0.8-1.amzn2023.0.2.x86_64
ALAS2023-2023-222 Medium/Sec.    openssl-libs-1:3.0.8-1.amzn2023.0.3.x86_64
```

------
#### [ Listing advisories in the latest version ]

 この例では、[2023.4.20240319](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.4.20240319.html) リリースのコンテナを起動した場合、どの更新が AL2023 の `latest` バージョンで利用可能であるかを確認します。執筆時点で、`latest` リリースは [2023.5.20240708](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.5.20240708.html) であるため、この例に記載されている更新は、そのリリース時点のものです。

**注記**  
 この例では [2023.4.20240319](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.4.20240319.html) リリースと [2023.5.20240708](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.5.20240708.html) リリースを使用しており、後者は*執筆時点*での最新リリースです。最新リリースの詳細については、「[AL2023 リリースノート](https://docs.aws.amazon.com/linux/al2023/release-notes/)」を参照してください。

 この例では、[2023.4.20240319](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.4.20240319.html) リリースのコンテナイメージから始めます。

 まず、このコンテナイメージをコンテナレジストリから取得します。末尾の `.1` は、特定のリリースにおけるイメージのバージョンを示します。イメージバージョンは通常ゼロですが、この例ではイメージバージョンが 1 のリリースを使用します。

```
$ docker pull public.ecr.aws/amazonlinux/amazonlinux:2023.4.20240319.1
	  2023.4.20240319.1: Pulling from amazonlinux/amazonlinux
6de065fda9a2: Pull complete
Digest: sha256:b4838c4cc9211d966b6ea158dacc9eda7433a16ba94436508c2d9f01f7658b4e
Status: Downloaded newer image for public.ecr.aws/amazonlinux/amazonlinux:2023.4.20240319.1
public.ecr.aws/amazonlinux/amazonlinux:2023.4.20240319.1
```

 これでコンテナ内にシェルを立ち上げられるようになったので、そこから更新を確認します。

```
$ docker run -it public.ecr.aws/amazonlinux/amazonlinux:2023.4.20240319.1
	  bash-5.2#
```

 次に `dnf updateinfo` コマンドを使用して、インストールされたパッケージに関連する最新リリースのアドバイザリの概要を表示します。執筆時点では、[2023.1.20230628](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.1.20230628.html) が最新リリースでした。

```
$ dnf --releasever=latest updateinfo
Amazon Linux 2023 repository                     76 MB/s |  25 MB     00:00
Last metadata expiration check: 0:00:04 ago on Mon Jul 22 20:59:54 2024.
Updates Information Summary: available
    9 Security notice(s)
        4 Important Security notice(s)
        4 Medium Security notice(s)
        1 Low Security notice(s)
```

 アドバイザリのリストを取得するには、`--list` オプションを `dnf updateinfo` に指定できます。

```
$ dnf updateinfo --releasever=latest --list
Last metadata expiration check: 0:00:58 ago on Mon Jul 22 20:59:54 2024.
ALAS2023-2024-581 Low/Sec.       curl-minimal-8.5.0-1.amzn2023.0.3.x86_64
ALAS2023-2024-596 Medium/Sec.    curl-minimal-8.5.0-1.amzn2023.0.4.x86_64
ALAS2023-2024-576 Important/Sec. expat-2.5.0-1.amzn2023.0.4.x86_64
ALAS2023-2024-589 Important/Sec. glibc-2.34-52.amzn2023.0.10.x86_64
ALAS2023-2024-589 Important/Sec. glibc-common-2.34-52.amzn2023.0.10.x86_64
ALAS2023-2024-589 Important/Sec. glibc-minimal-langpack-2.34-52.amzn2023.0.10.x86_64
ALAS2023-2024-586 Medium/Sec.    krb5-libs-1.21-3.amzn2023.0.4.x86_64
ALAS2023-2024-581 Low/Sec.       libcurl-minimal-8.5.0-1.amzn2023.0.3.x86_64
ALAS2023-2024-596 Medium/Sec.    libcurl-minimal-8.5.0-1.amzn2023.0.4.x86_64
ALAS2023-2024-592 Important/Sec. libnghttp2-1.59.0-3.amzn2023.0.1.x86_64
ALAS2023-2024-640 Medium/Sec.    openssl-libs-1:3.0.8-1.amzn2023.0.12.x86_64
ALAS2023-2024-605 Medium/Sec.    python3-3.9.16-1.amzn2023.0.7.x86_64
ALAS2023-2024-616 Important/Sec. python3-3.9.16-1.amzn2023.0.8.x86_64
ALAS2023-2024-605 Medium/Sec.    python3-libs-3.9.16-1.amzn2023.0.7.x86_64
ALAS2023-2024-616 Important/Sec. python3-libs-3.9.16-1.amzn2023.0.8.x86_64
```

------

# セキュリティ更新プログラムのインプレースでの適用
<a name="security-inplace-update"></a>

 更新プログラムの適用の概要については、「[DNF およびリポジトリバージョンを使用してセキュリティ更新を適用します。](managing-repos-os-updates.md#apply-security-updates)」を参照してください。`dnf upgrade` で `--security` オプションを指定すると、パッケージ更新プログラムが、アドバイザリに記載されているもののみに制限されます。このセクションの残りの部分では、特定のセキュリティ更新プログラムのみをインストールする方法について説明します。

**注記**  
 新しい AL2023 リリースで利用可能な*すべて*の更新を適用することをお勧めします。セキュリティ更新プログラムのみ、または特定の更新プログラムのみを選択するのは例外とし、ルールにはしないでください。

## アドバイザリに記載されている更新プログラムの適用
<a name="applying-advisory-updates"></a>

 `dnf upgradeinfo` の出力の先頭列のアドバイザリ識別子を使用して、アドバイザリに記載されているパッケージの更新プログラムを適用できます。アドバイザリに記載されたパッケージを利用可能な最新のパッケージに更新するか、アドバイザリに記載されているバージョンまでしか更新しないかを、`dnf` パッケージマネージャーで指示できます。更新プログラムが既にインストールされている場合、更新コマンドは no-op となります。

 対象のパッケージに対して*アドバイザリに記載されているバージョンまで*更新を適用するには、`dnf upgrade-minimal` コマンドを使用し、`--advisory` オプションでアドバイザリを指定します。次の例は、AL2023 バージョン [2023.0.20230315](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.0.20230315.html) コンテナで `dnf upgrade-minimal` を実行しています。

```
$ dnf upgrade-minimal -y --releasever=2023.1.20230628 --advisory ALAS2023-2023-193
Amazon Linux 2023 repository                     46 MB/s |  15 MB     00:00
Last metadata expiration check: 0:00:03 ago on Mon Jul 22 20:36:13 2024.
Dependencies resolved.
================================================================================
 Package              Arch        Version                Repository        Size
================================================================================
Upgrading:
 curl-minimal         x86_64      8.0.1-1.amzn2023       amazonlinux      150 k
 libcurl-minimal      x86_64      8.0.1-1.amzn2023       amazonlinux      249 k

Transaction Summary
================================================================================
Upgrade  2 Packages

Total download size: 399 k
Downloading Packages:
(1/2): curl-minimal-8.0.1-1.amzn2023.x86_64.rpm 2.7 MB/s | 150 kB     00:00
(2/2): libcurl-minimal-8.0.1-1.amzn2023.x86_64. 3.8 MB/s | 249 kB     00:00
--------------------------------------------------------------------------------
Total                                           2.5 MB/s | 399 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Upgrading        : libcurl-minimal-8.0.1-1.amzn2023.x86_64                1/4
  Upgrading        : curl-minimal-8.0.1-1.amzn2023.x86_64                   2/4
  Cleanup          : curl-minimal-7.88.1-1.amzn2023.0.1.x86_64              3/4
  Cleanup          : libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64           4/4
  Running scriptlet: libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64           4/4
  Verifying        : libcurl-minimal-8.0.1-1.amzn2023.x86_64                1/4
  Verifying        : libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64           2/4
  Verifying        : curl-minimal-8.0.1-1.amzn2023.x86_64                   3/4
  Verifying        : curl-minimal-7.88.1-1.amzn2023.0.1.x86_64              4/4

Upgraded:
  curl-minimal-8.0.1-1.amzn2023.x86_64  libcurl-minimal-8.0.1-1.amzn2023.x86_64

Complete!
```

 この要求は、アドバイザリに対処するために必要な*最小限の更新*を `dnf` に実行させるものであるため、`--releasever=latest` が使用された場合でも同じパッケージバージョンが更新されます。

 通常の `dnf upgrade` コマンドを `--advisory` オプションとともに使用すると、アドバイザリに記載されている該当パッケージが、利用可能な*最新*のバージョンに更新されます。このバージョンは、アドバイザリに記載されているバージョンよりも新しい場合があります。

**注記**  
 `system-release` パッケージが更新されない限り、`dnf` が固定されている AL2023 リポジトリのバージョンは*変更されません*。

**警告**  
 `dnf` が固定されているリポジトリのバージョンを変更せずに AL2023 の別のリリースから更新プログラムをインストールする場合は、以降の `dnf` の変更操作において注意が*必要になります*。例えば、パッケージをインストールまたは更新する際、新しいリリースではパッケージの依存関係が変更されている可能性があるため、以前のリリースのままではこれらの新しい依存関係に対応できない場合があります。

 次の例は、AL2023 [バージョン 2023.0.20230315](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.0.20230315.html) コンテナで、AL2023 の最新リリース (執筆時点では [2023.5.20240708](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.5.20240708.html)) を参照して実行されます。更新後の `curl` バージョンがいずれも `update-minimal` で更新されるバージョンよりも新しいものであると同時に、この新しいバージョンでは新しい依存関係が追加されている点に注意してください。

```
$ dnf upgrade -y --releasever=latest --advisory ALAS2023-2023-193
Amazon Linux 2023 repository                     80 MB/s |  25 MB     00:00
Last metadata expiration check: 0:00:04 ago on Mon Jul 22 20:48:38 2024.
Dependencies resolved.
================================================================================
 Package                   Arch     Version                 Repository     Size
================================================================================
Upgrading:
 curl-minimal              x86_64   8.5.0-1.amzn2023.0.4    amazonlinux   160 k
 libcurl-minimal           x86_64   8.5.0-1.amzn2023.0.4    amazonlinux   275 k
 libnghttp2                x86_64   1.59.0-3.amzn2023.0.1   amazonlinux    79 k
Installing dependencies:
 libpsl                    x86_64   0.21.1-3.amzn2023.0.2   amazonlinux    61 k
 publicsuffix-list-dafsa   noarch   20240212-61.amzn2023    amazonlinux    59 k

Transaction Summary
================================================================================
Install  2 Packages
Upgrade  3 Packages

Total download size: 634 k
Downloading Packages:
(1/5): publicsuffix-list-dafsa-20240212-61.amzn 1.1 MB/s |  59 kB     00:00
(2/5): curl-minimal-8.5.0-1.amzn2023.0.4.x86_64 2.6 MB/s | 160 kB     00:00
(3/5): libpsl-0.21.1-3.amzn2023.0.2.x86_64.rpm  949 kB/s |  61 kB     00:00
(4/5): libnghttp2-1.59.0-3.amzn2023.0.1.x86_64. 3.7 MB/s |  79 kB     00:00
(5/5): libcurl-minimal-8.5.0-1.amzn2023.0.4.x86 6.7 MB/s | 275 kB     00:00
--------------------------------------------------------------------------------
Total                                           3.5 MB/s | 634 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Upgrading        : libnghttp2-1.59.0-3.amzn2023.0.1.x86_64                1/8
  Installing       : publicsuffix-list-dafsa-20240212-61.amzn2023.noarch    2/8
  Installing       : libpsl-0.21.1-3.amzn2023.0.2.x86_64                    3/8
  Upgrading        : libcurl-minimal-8.5.0-1.amzn2023.0.4.x86_64            4/8
  Upgrading        : curl-minimal-8.5.0-1.amzn2023.0.4.x86_64               5/8
  Cleanup          : curl-minimal-7.88.1-1.amzn2023.0.1.x86_64              6/8
  Cleanup          : libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64           7/8
  Cleanup          : libnghttp2-1.51.0-1.amzn2023.x86_64                    8/8
  Running scriptlet: libnghttp2-1.51.0-1.amzn2023.x86_64                    8/8
  Verifying        : libpsl-0.21.1-3.amzn2023.0.2.x86_64                    1/8
  Verifying        : publicsuffix-list-dafsa-20240212-61.amzn2023.noarch    2/8
  Verifying        : curl-minimal-8.5.0-1.amzn2023.0.4.x86_64               3/8
  Verifying        : curl-minimal-7.88.1-1.amzn2023.0.1.x86_64              4/8
  Verifying        : libcurl-minimal-8.5.0-1.amzn2023.0.4.x86_64            5/8
  Verifying        : libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64           6/8
  Verifying        : libnghttp2-1.59.0-3.amzn2023.0.1.x86_64                7/8
  Verifying        : libnghttp2-1.51.0-1.amzn2023.x86_64                    8/8

Upgraded:
  curl-minimal-8.5.0-1.amzn2023.0.4.x86_64
  libcurl-minimal-8.5.0-1.amzn2023.0.4.x86_64
  libnghttp2-1.59.0-3.amzn2023.0.1.x86_64
Installed:
  libpsl-0.21.1-3.amzn2023.0.2.x86_64
  publicsuffix-list-dafsa-20240212-61.amzn2023.noarch

Complete!
```

# AL2023 の SELinux モードの設定
<a name="selinux-modes"></a>

AL2023 の デフォルトでは、Security Enhanced Linux (SELinux) は `enabled` であり、`permissive` モードに設定されています。許可モードでは、アクセス拒否は記録されますが、強制ではありません。SELinux は、カーネルの主要なサブシステムに強力で柔軟性のある強制アクセス制御 (MAC) アーキテクチャを提供するためのカーネル機能とユーティリティの集まりです。

SELinux は、機密性と完全性の要件に基づいて情報を分離するように強化されたメカニズムを備えています。このように情報を分離することで、アプリケーションのセキュリティメカニズムの改ざんやバイパスの脅威が軽減されます。また、悪意のあるアプリケーションや欠陥のあるアプリケーションによって引き起こされる可能性のあるダメージも回避できます。

SELinux には、日々のセキュリティの目標を満たすように設計されたサンプルセキュリティポリシー設定ファイルのセットが含まれています。

SELinux の特徴と機能の詳細については、「[SELinux ノートブック](https://github.com/SELinuxProject/selinux-notebook/blob/main/src/toc.md)」および「[ポリシー言語](https://github.com/SELinuxProject/selinux-notebook/blob/main/src/policy_languages.md)」を参照してください。

**Topics**
+ [AL2023 でのデフォルトの SELinux のステータスとモード](default-SELinux-modes-states.md)
+ [`enforcing` モードへの変更](enforcing-mode.md)
+ [AL2023 の SELinux を無効にするオプション](disable-option-selinux.md)

# AL2023 でのデフォルトの SELinux のステータスとモード
<a name="default-SELinux-modes-states"></a>

AL2023 では、SELinux はデフォルトで `enabled` となり、`permissive` モードに設定されています。`permissive` モードでは、アクセス拒否は記録されますが、強制ではありません。

**getenforce** または **sestatus** コマンドは、現在の SELinux のステータス、ポリシー、モードを知ることができます。

デフォルトステータスが `enabled` およびに `permissive` 設定されていると、**getenforce** コマンドは `permissive` を返します。

以下の例で示すように、**sestatus** コマンドは SELinux のステータスと現在の SELinux ポリシーを返します。

```
$ sestatus
SELinux status:                 enabled
  SELinuxfs mount:                /sys/fs/selinux
  SELinux root directory:         /etc/selinux
  Loaded policy name:             targeted
  Current mode:                   permissive
  Mode from config file:          permissive
  Policy MLS status:              enabled
  Policy deny_unknown status:     allowed
  Memory protection checking:     actual (secure)
  Max kernel policy version:      33
```

SELinux を `permissive` モードで実行すると、ユーザーがファイルに誤ったラベルを付ける可能性があります。SELinux を `disabled` ステータスで実行すると、ファイルにはラベルが付けられません。`enforcing` モードに変更すると、正しくないファイルやラベル付けされていないファイルの両方が問題を引き起こす可能性があります。

SELinux は、この問題を回避するために自動的にファイルにラベルを付け直します。SELinux は、ステータスを `enabled` に変更したときの自動再ラベル付けにより、ラベル付けの問題を防ぎます。

# `enforcing` モードへの変更
<a name="enforcing-mode"></a>

SELinux を `enforcing` モードで実行すると、SELinux ユーティリティによって設定済みのポリシーが`enforcing`されます。SELinux は、ポリシーのルールに基づいてアクセスを許可または拒否することで、特定のアプリケーションの機能を管理します。

SELinux の現在のモードを調べるには、`getenforce` コマンドを実行します。

```
getenforce
Permissive
```

## 設定ファイルを編集して `enforcing` モードを有効にする
<a name="config-file-enforcing"></a>

モードを `enforcing` に変更するには、次の手順を使用します。

1. `/etc/selinux/config` ファイルを編集して `enforcing` モードに変更します。`SELINUX` 設定は次の例のようになります。

   ```
   SELINUX=enforcing
   ```

1. システムを再起動して `enforcing` モードへの変更を完了します。

   ```
   $ sudo reboot
   ```

次回の起動時に、SELinux はシステム内のすべてのファイルとディレクトリにラベルを付け直します。SELinux は、SELinux が `disabled` であったときに作成されたファイルとディレクトリの SELinux コンテキストも追加します。

`enforcing` モードに変更すると、SELinux ポリシールールが不正確または欠落しているという理由で SELinux が一部のアクションを拒否することがあります。以下のコマンドを使用して SELinux が拒否するアクションを表示できます。

```
$ sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent
```

## cloud-init を使用して `enforcing` モードを有効にする
<a name="cloud-init-enforcing"></a>

別の方法として、インスタンスを起動するときに、以下の `cloud-config` をユーザーデータとして渡して、`enforcing` モードを有効にします。

```
#cloud-config
selinux: 
  mode: enforcing
```

デフォルトでは、この設定によりインスタンスが再起動されます。安定性を高めるため、インスタンスを再起動することをお勧めします。ただし、必要に応じて、いかの `cloud-config` を指定して再起動をスキップすることができます。

```
#cloud-config
selinux:
  mode: enforcing
  selinux_no_reboot: 1
```

# AL2023 の SELinux を無効にするオプション
<a name="disable-option-selinux"></a>

SELinux を無効にすると、SELinux ポリシーが読み込まれたり適用されたりせず、Access Vector Cache (AVC) メッセージはログに記録されません。SELinux を実行することで得られる利点はすべて失われます。

SELinux を無効にする代わりに、`permissive` モードを使用することをお勧めします。SELinux を完全に無効にするよりも、`permissive` モードで実行するほうが少しだけコストが高くなります。`permissive` モードから `enforcing` モードへの移行するほうが、SELinux を無効にした後に `enforcing` モードに戻るよりも設定の調整がはるかに少なくて済みます。ファイルにラベルを付けることができ、アクティブなポリシーで拒否された可能性のあるアクションをシステムが追跡して記録できます。

## SELinux から `permissive` モードへの変更
<a name="change-to-permissive"></a>

SELinux を `permissive` モードで実行すると、SELinux ポリシーは適用されません。`permissive` モードでは、SELinux は AVC メッセージをログに記録しますが、操作は拒否されません。これらの AVC メッセージは、トラブルシューティング、デバッグ、SELinux ポリシーの改善に使用できます。

SELinux を許可モードに変更するには、次の手順を使用します。

1. `/etc/selinux/config` ファイルを編集して `permissive` モードに変更します。`SELINUX` 値は次の例のようになります。

   ```
   SELINUX=permissive
   ```

1. システムを再起動して `permissive` モードへの変更を完了します。

   ```
   sudo reboot
   ```

## SELinux の無効化
<a name="disable-selinux"></a>

SELinux を無効にすると、SELinux ポリシーが読み込まれたり適用されたりせず、AVC メッセージはログに記録されません。SELinux を実行することで得られる利点はすべて失われます。

SELinux を無効にするには次の手順を使用します。

1. `grubby` パッケージがインストールされていることを確認します。

   ```
   rpm -q grubby
   grubby-version
   ```

1. ブートローダーをカーネルコマンドラインに `selinux=0` を追加するように設定します。

   ```
   sudo grubby --update-kernel ALL --args selinux=0
   ```

1. システムを再起動します。

   ```
   sudo reboot
   ```

1. `getenforce ` コマンドを実行して SELinux が `Disabled` であることを確認します。

   ```
   $ getenforce
   Disabled
   ```

SELinux について詳しくは、[SELinux ノートブック](https://github.com/SELinuxProject/selinux-notebook/blob/main/src/toc.md)および [SELinux の設定](http://selinuxproject.org/page/Guide/Mode#SELinux_Config)を参照してください。

# AL2023 で FIPS モードを有効にする
<a name="fips-mode"></a>

このセクションでは、AL2023 で連邦情報処理標準 (FIPS) を有効にする手順について説明します。FIPS の詳細については、以下を参照してください。
+ [連邦情報処理標準 (FIPS)](https://aws.amazon.com/compliance/fips/)
+ [コンプライアンスのよくある質問: 連邦情報処理標準](https://www.nist.gov/standardsgov/compliance-faqs-federal-information-processing-standards-fips)

**注記**  
このセクションでは、AL2023 で FIPS モードを有効にする方法について説明します。AL2023 暗号モジュールの認証状況についての説明はありません。

**前提条件**
+ インターネットにアクセスして必要なパッケージをダウンロードできる既存の AL2023 (AL2023.2 以上) Amazon EC2 インスタンス。AL2023 Amazon EC2 インスタンスの起動の詳細については、「[Amazon EC2 コンソールを使用した AL2023 の起動](ec2.md#launch-from-ec2-console)」を参照してください。
+ SSH または AWS Systems Manager を使用して Amazon EC2 インスタンスに接続する必要があります。詳細については、「[AL2023 インスタンスへの接続](connecting-to-instances.md)」を参照してください。

**重要**  
ED25519 SSH ユーザーキーは FIPS モードではサポートされていません。ED25519 SSH key pair を使用して Amazon EC2 インスタンスを起動した場合、別のアルゴリズム (RSA など) を使用して新しいキーを生成する必要があります。そうでない場合は、FIPS モードを有効にした後にインスタンスにアクセスできなくなる可能性があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[キーペアを作成する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html)」を参照してください。

**FIPS モードの有効化**

1. SSH または AWS Systems Manager を使用して AL2023 インスタンスに接続します。

1. システムが最新であることを確認します。詳細については、「[AL2023 のパッケージとオペレーティングシステムとの更新を管理する](managing-repos-os-updates.md)」を参照してください。

1. `crypto-policies` ユーティリティがインストールされていて、最新であることを確認します。

   ```
   sudo dnf -y install crypto-policies crypto-policies-scripts
   ```

1. 以下のコマンドを実行して、FIPS モードを有効にします。これにより、「[Amazon Linux 2023 に関するよくある質問](https://aws.amazon.com/linux/amazon-linux-2023/faqs/)」に記載されているモジュールに対して、システム全体で FIPS モードが有効になります。

   ```
   sudo fips-mode-setup --enable
   ```

1. 以下のコマンドを実行して、インスタンスを再起動します。

   ```
   sudo reboot
   ```

1. FIPS モードが有効であることを確認するには、インスタンスに再接続し、以下のコマンドを実行します。

   ```
   sudo fips-mode-setup --check
   ```

   以下の出力例は、FIPS モードが有効であることを示しています。

   ```
   FIPS mode is enabled.
   ```

# AL2023 コンテナで FIPS モードを有効にする
<a name="fips-mode-container"></a>

このセクションでは、AL2023 コンテナで連邦情報処理標準 (FIPS) を有効にする手順を説明します。FIPS の詳細については、以下を参照してください。
+ [連邦情報処理標準 (FIPS)](https://aws.amazon.com/compliance/fips/)
+ [コンプライアンスのよくある質問: 連邦情報処理標準](https://www.nist.gov/standardsgov/compliance-faqs-federal-information-processing-standards-fips)

**注記**  
このセクションでは、AL2023 コンテナで FIPS モードを有効にする方法を説明します。AL2023 暗号化モジュールの認証状況については取り上げません。

**前提条件**
+ インターネットにアクセスして必要なパッケージをダウンロードできる既存の AL2023 (AL2023.2 以上) Amazon EC2 インスタンス。AL2023 Amazon EC2 インスタンスの起動の詳細については、「[Amazon EC2 コンソールを使用した AL2023 の起動](ec2.md#launch-from-ec2-console)」を参照してください。
+ SSH または AWS Systems Manager を使用して Amazon EC2 インスタンスに接続する必要があります。詳細については、「[AL2023 インスタンスへの接続](connecting-to-instances.md)」を参照してください。

**重要**  
`fips-mode-setup` コマンドはコンテナ内からは正しく動作しません。AL2023 コンテナで FIPS モードを適切に設定するには、以下の手順を参照してください。

**AL2023 コンテナで FIPS モードを有効にする**

1. 最初に AL2023 コンテナのホストで FIPS モードを有効にする必要があります。「[AL2023 で FIPS モードを有効にする](fips-mode.md)」の手順に従って、ホストで FIPS モードを有効にします。

1. SSH または AWS Systems Manager を使用して AL2023 コンテナのホストインスタンスに接続します。

1. AL2023 ホストが FIPS モードになり、コンテナ内から `/proc/sys/crypto/fips_enabled` へのアクセスが可能な場合、AL2023 コンテナで FIPS モードが自動的に有効になります。`/proc/sys/crypto/fips_enabled` の値が `0` の場合は FIPS が有効ではなく、値が `1` の場合は FIPS モードが有効になっていることを示します。

   AL2023 のホストとコンテナの両方で、次のコマンドを実行して FIPS が有効になっていることを確認できます。

   ```
   cat /proc/sys/crypto/fips_enabled
   ```

1. 次に、コンテナ内で FIPS 暗号化ポリシーを有効にします。これを行うには、以下のオプションで説明されているような方法があります。環境に応じて最適なオプションを使用してください。

   1. `update-crypto-policies` コマンドを使用して、コンテナ内で FIPS 暗号化ポリシーを手動で有効にします。

      ```
      # Run these commands inside the container
      dnf install -y crypto-policies-scripts
      update-crypto-policies --set FIPS
      ```

   1. AL2023 コンテナ内に `bind` マウントを作成します (これは他のディストリビューションでの `podman` の動作と似ています)。

      ```
      # Run these commands inside the container
      mount --bind /usr/share/crypto-policies/back-ends/FIPS /etc/crypto-policies/back-ends
      echo "FIPS" > /usr/share/crypto-policies/default-fips-config
      mount --bind /usr/share/crypto-policies/default-fips-config /etc/crypto-policies/config
      ```

   1. AL2023 コンテナが AL2023 ホストの暗号化ポリシーと一致するようにバインドマウントを作成することもできます。以下はあくまで例として示しています。この設定では、コンテナとホストの間で暗号化ポリシーとパッケージのバージョンに互換性のない差異がある場合に問題が発生する可能性があります。

      ```
      sudo docker pull amazonlinux:2023
      sudo docker run --mount type=bind,readonly,src=/etc/crypto-policies,dst=/etc/crypto-policies -it amazonlinux:2023
      ```

1. 上記の手順を実行したら、次のコマンドを使用して、コンテナで FIPS が有効になっていることを再度確認できます。

   ```
   $ cat /etc/crypto-policies/config
   FIPS
   
   $ cat /proc/sys/crypto/fips_enabled
   1
   ```

# AL2023 で OpenSSL FIPS プロバイダーを切り替える
<a name="fips-openssl-swap-provider"></a>

このセクションでは、AL2023 で `latest` と `certified` の OpenSSL FIPS プロバイダーを切り替える方法について説明します。

FIPS の詳細については、以下を参照してください。
+ [連邦情報処理標準 (FIPS)](https://aws.amazon.com/compliance/fips/)
+ [コンプライアンスのよくある質問: 連邦情報処理標準](https://www.nist.gov/standardsgov/compliance-faqs-federal-information-processing-standards-fips)
+ [暗号化モジュールの選択と使用のための FedRAMP ポリシー](https://www.fedramp.gov/rev5/fips/)

**重要**  
AL2023.7 以降では、デフォルトの OpenSSL FIPS プロバイダーは `openssl-fips-provider-latest` パッケージであり、定期的にバグ修正とセキュリティ更新プログラムを受け取ります。  
以下の手順は、`openssl-fips-provider-certified` パッケージに固定することを希望するお客様を対象としています。このバージョンの FIPS プロバイダーは、NIST 証明書のチェックサムと一致し、最新の更新プログラムがない可能性があります。  
FIPS 認定モジュールとパッケージバージョンの詳細については、「[Amazon Linux 2023 に関するよくある質問](https://aws.amazon.com/linux/amazon-linux-2023/faqs/)」を参照してください。

**前提条件**
+ インターネットにアクセスして必要なパッケージをダウンロードできる既存の AL2023 (AL2023.7 以上) Amazon EC2 インスタンス。AL2023 Amazon EC2 インスタンスの起動の詳細については、「[Amazon EC2 コンソールを使用した AL2023 の起動](ec2.md#launch-from-ec2-console)」を参照してください。
+ SSH または AWS Systems Manager を使用して Amazon EC2 インスタンスに接続する必要があります。詳細については、「[AL2023 インスタンスへの接続](connecting-to-instances.md)」を参照してください。
+ AL2023 で FIPS モードを有効にするには、「[AL2023 で FIPS モードを有効にする](fips-mode.md)」の手順に従います。

**`openssl-fips-provider-latest` と `openssl-fips-provider-certified` の間で切り替える**

1. `dnf` を使用して OpenSSL FIPS プロバイダーを切り替えます。

   ```
   sudo dnf -y swap openssl-fips-provider-latest openssl-fips-provider-certified
   ```

1. 認定された OpenSSL FIPS プロバイダーを使用していることを確認します。FIPS モードの AL2023 で、次のコマンドを実行します。

   ```
   openssl list -providers
   ```

   以下の出力が表示されます。

   ```
   Providers:
     base
       name: OpenSSL Base Provider
       version: 3.2.2
       status: active
     default
       name: OpenSSL Default Provider
       version: 3.2.2
       status: active
     fips
       name: Amazon Linux 2023 - OpenSSL FIPS Provider
       version: 3.0.8-d694bfa693b76001
       status: active
   ```

# AL2023 カーネル強化
<a name="kernel-hardening"></a>

 AL2023 の 6.1 Linux カーネルは、いくつかの強化オプションと機能を使用して設定および構築されています。

## カーネル強化オプション (アーキテクチャに依存していません)
<a name="kernel-hardening-common"></a>


| `CONFIG` オプション | AL2023/6.1/aarch64 | AL2023/6.1/x86\$164 | AL2023/6.12/aarch64 | AL2023/6.12/x86\$164 | AL2023/6.18/aarch64 | AL2023/6.18/x86\$164 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  [`CONFIG_ACPI_CUSTOM_METHOD`](#CONFIG_ACPI_CUSTOM_METHOD)  |  n  |  n  | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_BINFMT_MISC`](#CONFIG_BINFMT_MISC)  |  m  |  m  |  m  |  m  |  m  |  m  | 
|  [`CONFIG_BUG`](#CONFIG_BUG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_BUG_ON_DATA_CORRUPTION`](#CONFIG_BUG_ON_DATA_CORRUPTION)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_CFI_CLANG`](#CONFIG_CFI_CLANG)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_CFI_PERMISSIVE`](#CONFIG_CFI_PERMISSIVE)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_COMPAT`](#CONFIG_COMPAT)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_COMPAT_BRK`](#CONFIG_COMPAT_BRK)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_COMPAT_VDSO`](#CONFIG_COMPAT_VDSO)  | 該当なし |  n  | 該当なし |  n  | 該当なし |  n  | 
|  [`CONFIG_DEBUG_CREDENTIALS`](#CONFIG_DEBUG_CREDENTIALS)  |  n  |  n  | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_DEBUG_LIST`](#CONFIG_DEBUG_LIST)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_DEBUG_NOTIFIERS`](#CONFIG_DEBUG_NOTIFIERS)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEBUG_SG`](#CONFIG_DEBUG_SG)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEBUG_VIRTUAL`](#CONFIG_DEBUG_VIRTUAL)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEBUG_WX`](#CONFIG_DEBUG_WX)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEFAULT_MMAP_MIN_ADDR`](#CONFIG_DEFAULT_MMAP_MIN_ADDR)  |  65536  |  65536  |  65536  |  65536  |  65536  |  65536  | 
|  [`CONFIG_DEVKMEM`](compare-with-al2-kernel.md#CONFIG_DEVKMEM)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_DEVMEM`](compare-with-al2-kernel.md#CONFIG_DEVMEM)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_EFI_DISABLE_PCI_DMA`](#CONFIG_EFI_DISABLE_PCI_DMA)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_FORTIFY_SOURCE`](compare-with-al2-kernel.md#CONFIG_FORTIFY_SOURCE)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_HARDENED_USERCOPY`](#CONFIG_HARDENED_USERCOPY)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_HARDENED_USERCOPY_FALLBACK`](#CONFIG_HARDENED_USERCOPY_FALLBACK)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_HARDENED_USERCOPY_PAGESPAN`](#CONFIG_HARDENED_USERCOPY_PAGESPAN)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_HIBERNATION`](#CONFIG_HIBERNATION)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_HW_RANDOM_TPM`](#CONFIG_HW_RANDOM_TPM)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_INET_DIAG`](#CONFIG_INET_DIAG)  |  m  |  m  |  m  |  m  |  m  |  m  | 
|  [`CONFIG_INIT_ON_ALLOC_DEFAULT_ON`](#CONFIG_INIT_ON_ALLOC_DEFAULT_ON)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_INIT_ON_FREE_DEFAULT_ON`](#CONFIG_INIT_ON_FREE_DEFAULT_ON)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_INIT_STACK_ALL_ZERO`](#CONFIG_INIT_STACK_ALL_ZERO)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_IOMMU_DEFAULT_DMA_STRICT`](#CONFIG_IOMMU_DEFAULT_DMA_STRICT)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_IOMMU_SUPPORT`](#CONFIG_IOMMU_SUPPORT)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_IO_STRICT_DEVMEM`](compare-with-al2-kernel.md#CONFIG_IO_STRICT_DEVMEM)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_KEXEC`](#CONFIG_KEXEC)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_KFENCE`](#CONFIG_KFENCE)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_LDISC_AUTOLOAD`](compare-with-al2-kernel.md#CONFIG_LDISC_AUTOLOAD)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_LEGACY_PTYS`](#CONFIG_LEGACY_PTYS)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY`](#CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_MODULES`](#CONFIG_MODULES)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_MODULE_SIG`](#CONFIG_MODULE_SIG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_MODULE_SIG_ALL`](#CONFIG_MODULE_SIG_ALL)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_MODULE_SIG_FORCE`](#CONFIG_MODULE_SIG_FORCE)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_MODULE_SIG_HASH`](#CONFIG_MODULE_SIG_HASH)  |  sha512  |  sha512  |  sha512  |  sha512  |  sha512  |  sha512  | 
|  [`CONFIG_MODULE_SIG_KEY`](#CONFIG_MODULE_SIG_KEY)  |  certs/signing\$1key.pem  |  certs/signing\$1key.pem  |  certs/signing\$1key.pem  |  certs/signing\$1key.pem  |  certs/signing\$1key.pem  |  certs/signing\$1key.pem  | 
|  [`CONFIG_MODULE_SIG_SHA512`](#CONFIG_MODULE_SIG_SHA512)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_PAGE_POISONING`](#CONFIG_PAGE_POISONING)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_PAGE_POISONING_NO_SANITY`](#CONFIG_PAGE_POISONING_NO_SANITY)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_PAGE_POISONING_ZERO`](#CONFIG_PAGE_POISONING_ZERO)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_PANIC_ON_OOPS`](compare-with-al2-kernel.md#CONFIG_PANIC_ON_OOPS)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_PANIC_TIMEOUT`](#CONFIG_PANIC_TIMEOUT)  |  0  |  0  |  0  |  0  |  0  |  0  | 
|  [`CONFIG_PROC_KCORE`](#CONFIG_PROC_KCORE)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT`](#CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_RANDOM_TRUST_BOOTLOADER`](#CONFIG_RANDOM_TRUST_BOOTLOADER)  |  y  |  y  | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_RANDOM_TRUST_CPU`](#CONFIG_RANDOM_TRUST_CPU)  |  y  |  y  | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_REFCOUNT_FULL`](#CONFIG_REFCOUNT_FULL)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_SCHED_CORE`](#CONFIG_SCHED_CORE)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_SCHED_STACK_END_CHECK`](#CONFIG_SCHED_STACK_END_CHECK)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECCOMP`](#CONFIG_SECCOMP)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECCOMP_FILTER`](#CONFIG_SECCOMP_FILTER)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY`](#CONFIG_SECURITY)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_DMESG_RESTRICT`](compare-with-al2-kernel.md#CONFIG_SECURITY_DMESG_RESTRICT)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_LANDLOCK`](#CONFIG_SECURITY_LANDLOCK)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_LOCKDOWN_LSM`](#CONFIG_SECURITY_LOCKDOWN_LSM)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_LOCKDOWN_LSM_EARLY`](#CONFIG_SECURITY_LOCKDOWN_LSM_EARLY)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_SELINUX_BOOTPARAM`](#CONFIG_SECURITY_SELINUX_BOOTPARAM)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_SELINUX_DEVELOP`](#CONFIG_SECURITY_SELINUX_DEVELOP)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_SELINUX_DISABLE`](compare-with-al2-kernel.md#CONFIG_SECURITY_SELINUX_DISABLE)  |  n  |  n  | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_SECURITY_WRITABLE_HOOKS`](#CONFIG_SECURITY_WRITABLE_HOOKS)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_SECURITY_YAMA`](#CONFIG_SECURITY_YAMA)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SHUFFLE_PAGE_ALLOCATOR`](#CONFIG_SHUFFLE_PAGE_ALLOCATOR)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SLAB_FREELIST_HARDENED`](#CONFIG_SLAB_FREELIST_HARDENED)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SLAB_FREELIST_RANDOM`](#CONFIG_SLAB_FREELIST_RANDOM)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SLUB_DEBUG`](#CONFIG_SLUB_DEBUG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STACKPROTECTOR`](#CONFIG_STACKPROTECTOR)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STACKPROTECTOR_STRONG`](#CONFIG_STACKPROTECTOR_STRONG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STATIC_USERMODEHELPER`](#CONFIG_STATIC_USERMODEHELPER)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_STRICT_DEVMEM`](compare-with-al2-kernel.md#CONFIG_STRICT_DEVMEM)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_STRICT_KERNEL_RWX`](#CONFIG_STRICT_KERNEL_RWX)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STRICT_MODULE_RWX`](#CONFIG_STRICT_MODULE_RWX)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SYN_COOKIES`](#CONFIG_SYN_COOKIES)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_VMAP_STACK`](#CONFIG_VMAP_STACK)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_WERROR`](#CONFIG_WERROR)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_ZERO_CALL_USED_REGS`](#CONFIG_ZERO_CALL_USED_REGS)  |  n  |  n  |  n  |  n  |  n  |  n  | 

### ACPI メソッドをランタイムに挿入/置換できるようにする (CONFIG\$1ACPI\$1CUSTOM\$1METHOD)
<a name="CONFIG_ACPI_CUSTOM_METHOD"></a>

Amazon Linux では、`root` ユーザーが任意のカーネルメモリに書き込むことができるため、このオプションは無効になっています。

このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### その他のバイナリフォーマット (`binfmt_misc`)
<a name="CONFIG_BINFMT_MISC"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。AL2023 では、この機能はオプションで、カーネルモジュールとして構築されています。

### `BUG()` サポート
<a name="CONFIG_BUG"></a>

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### カーネルメモリ構造の有効性をチェックしているときに、カーネルがデータ破損に遭遇した場合の `BUG()`
<a name="CONFIG_BUG_ON_DATA_CORRUPTION"></a>

 Linux カーネルの一部は、データ構造の内部整合性をチェックし、データ破損を検出した場合は `BUG()` できます。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### `COMPAT_BRK`
<a name="CONFIG_COMPAT_BRK"></a>

 このオプションを無効にすると (Amazon Linux がカーネルを設定する方法)、`randomize_va_space` `sysctl` 設定はデフォルトで `2` になり、`mmap` ベース、スタック、VDSO ページのランダム化に加えてヒープのランダム化も有効になります。

 1996 年以前の古い `libc.so.5` バイナリとの互換性を保つため、このオプションはカーネルに組み込まれています。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### `COMPAT_VDSO`
<a name="CONFIG_COMPAT_VDSO"></a>

 この設定オプションは `x86-64` に関連しますが、`aarch64` とは関係ありません。これを `n` に設定すると、Amazon Linux カーネルは 32 ビットの仮想化動的共有オブジェクト (VDSO) を予測可能なアドレスに表示しなくなります。このオプションを `n` に設定したことで障害が発生することがわかっている最新の `glibc` は 2004 年の `glibc` 2.3.3です。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### `CONFIG_DEBUG` ゲート強化
<a name="CONFIG_DEBUG_KERNEL"></a>

 `CONFIG_DEBUG` ゲートの Linux カーネル設定オプションは通常、デバッグ用の問題を想定して構築されたカーネルで使用するように設計されており、パフォーマンスなどは優先されません。AL2023 は`CONFIG_DEBUG_LIST` 強化オプションを有効にします。

### IOMMU を設定する前に EFI スタブで PCI デバイスの DMA を無効にする
<a name="CONFIG_EFI_DISABLE_PCI_DMA"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### カーネルとユーザースペース間のメモリコピーの強化
<a name="CONFIG_HARDENED_USERCOPY"></a>

 カーネルがユーザーすペースにメモリーをコピーしたり、ユーザー空間からメモリーをコピーしたりする必要がある場合、このオプションはいくつかのチェックを有効にすることで、ある種のヒープオーバーフローの問題を防ぐことができます。

 `CONFIG_HARDENED_USERCOPY_FALLBACK` オプションはカーネル 4.16 から 5.15 までにあって、カーネルデベロッパーが不足している許可リストエントリを `WARN()` 経由で見つけやすくするためのものです。AL2023 には 6.1 カーネルが含まれているため、このオプションは AL2023 には関係ありません。

 `CONFIG_HARDENED_USERCOPY_PAGESPAN` オプションは主にデベロッパー向けのデバッグオプションとしてカーネルに存在していましたが、AL2023 の 6.1 カーネルには適用されなくなりました。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### 休止のサポート
<a name="CONFIG_HIBERNATION"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。[オンデマンドインスタンスを休止状態にしたり](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)、[中断されたスポットインスタンスを休止状態にしたりする](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernate-spot-instances.html)には、このオプションを有効にする必要があります。

### 乱数の生成
<a name="kernel-rng"></a>

 AL2023 カーネルは、EC2 内で適切なエントロピーが使用できるように設定されています。

### `CONFIG_INET_DIAG`
<a name="CONFIG_INET_DIAG"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。AL2023 では、この機能はオプションで、カーネルモジュールとして構築されています。

### 割り当てと割り当て解除時にすべてのカーネルページとスラブアロケーターメモリをゼロにする
<a name="kernel-init-on-alloc-free"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。これらのオプションは、この機能をデフォルトで有効にするとパフォーマンスに影響する可能性があるため、AL2023 では無効になっています。`CONFIG_INIT_ON_ALLOC_DEFAULT_ON``init_on_alloc=1` 動作はカーネルコマンドラインに追加することで有効にでき、`CONFIG_INIT_ON_FREE_DEFAULT_ON` 動作は `init_on_free=1` に追加することで有効にできます。

### すべてのスタック変数をゼロ (`CONFIG_INIT_STACK_ALL_ZERO`) に初期化する
<a name="CONFIG_INIT_STACK_ALL_ZERO"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。このオプションには GCC 12 以上が必要ですが、AL2023 には GCC 11 が含まれています。

### カーネルモジュールの署名
<a name="kernel-config-modules"></a>

 AL2023 はカーネルモジュールの署名および署名の検証を行います。サードパーティモジュールを構築するユーザーの互換性を保つため、モジュールに有効な署名を要求する `CONFIG_MODULE_SIG_FORCE` オプションは有効化されていません。すべてのカーネルモジュールが署名されていることを確認したいユーザは、これを強制するように [  Linux セキュリティモジュール (LSM) のロックダウン](#CONFIG_SECURITY_LOCKDOWN_LSM) を設定できます。

### `kexec`
<a name="CONFIG_KEXEC"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。このオプションは `kdump` 機能を使用できるように有効になっています。

### `IOMMU` サポート
<a name="CONFIG_IOMMU_SUPPORT"></a>

 AL2023 は IOMMU サポートを有効にします。`CONFIG_IOMMU_DEFAULT_DMA_STRICT` オプションはデフォルトでは有効になっていませんが、この機能はカーネルコマンドラインに `iommu.passthrough=0 iommu.strict=1` を追加することで設定できます。

### `kfence`
<a name="CONFIG_KFENCE"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### 従来の `pty` のサポート
<a name="CONFIG_LEGACY_PTYS"></a>

 AL2023 は最新の PTY インターフェイス (`devpts`) を使用します。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### Linux セキュリティモジュール (LSM) のロックダウン
<a name="CONFIG_SECURITY_LOCKDOWN_LSM"></a>

 AL2023 は `lockdown` LSM をビルドします。これにより、セキュアブートを使用するとカーネルが自動的にロックダウンされます。

 `CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY` オプションは有効になっていません。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。セキュアブートを使用しない場合は、必要に応じてロックダウン LSM を有効に設定できます。

### ページポイズニング
<a name="CONFIG_PAGE_POISONING"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。[  割り当てと割り当て解除時にすべてのカーネルページとスラブアロケーターメモリをゼロにする](#kernel-init-on-alloc-free) と同様に、AL2023 カーネルではパフォーマンスに影響する可能性があるため、このオプションは無効になっています。

### スタックプロテクター
<a name="CONFIG_STACKPROTECTOR"></a>

 AL2023 カーネルは、`-fstack-protector-strong` オプションで有効になっている GCC のスタックプロテクター機能を搭載して構築されています。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### seccomp BPF API
<a name="CONFIG_SECCOMP"></a>

 seccomp 強化機能は、`systemd` およびコンテナランタイムなどのソフトウェアがユーザースペースアプリケーションを強化するために使用されます。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### `panic()` タイムアウト
<a name="CONFIG_PANIC_TIMEOUT"></a>

 AL2023 カーネルは、この値が `0` に設定された状態で設定されています。つまり、パニックが発生してもカーネルは再起動しません。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。これは `sysctl`、`/proc/sys/kernel/panic`、およびカーネルコマンドラインで設定できます。

### セキュリティモデル
<a name="CONFIG_SECURITY"></a>

 AL2023 ではデフォルトで許可モードの SELinux が有効になっています。詳細については、「[AL2023 の SELinux モードの設定](selinux-modes.md)」を参照してください。

 [  Linux セキュリティモジュール (LSM) のロックダウン](#CONFIG_SECURITY_LOCKDOWN_LSM) および `yama` モジュールも有効になっています。

### `/proc/kcore`
<a name="CONFIG_PROC_KCORE"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### システムコールエントリでのカーネルスタックオフセットのランダム化
<a name="CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。これはカーネルコマンドラインで `randomize_kstack_offset=on` を設定することで有効にできます。

### 参照カウントチェック (`CONFIG_REFCOUNT_FULL`)
<a name="CONFIG_REFCOUNT_FULL"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。このオプションはパフォーマンスに影響する可能性があるため、現時点では有効になっていません。

### スケジューラーによる SMT コアの認識 (`CONFIG_SCHED_CORE`)
<a name="CONFIG_SCHED_CORE"></a>

 AL2023 カーネルは `CONFIG_SCHED_CORE` を使用して構築されているため、ユーザースペースのアプリケーションで `prctl(PR_SCHED_CORE)` を使用できます。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### `schedule()`(`CONFIG_SCHED_STACK_END_CHECK`) 呼び出しでスタックに問題がないか確認する
<a name="CONFIG_SCHED_STACK_END_CHECK"></a>

 AL2023 カーネルは `CONFIG_SCHED_STACK_END_CHECK` が有効になっている状態で構築されています。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### メモリアロケーターの強化
<a name="kernel-allocator-hardening"></a>

 AL2023 カーネルでは、`CONFIG_SHUFFLE_PAGE_ALLOCATOR`、`CONFIG_SLAB_FREELIST_HARDENED`、および `CONFIG_SLAB_FREELIST_RANDOM` オプションを使用してカーネルメモリアロケータを強化できます。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### SLUB デバッグのサポート
<a name="CONFIG_SLUB_DEBUG"></a>

 AL2023 カーネルは、このオプションによってカーネルコマンドラインで有効にできるアロケータのオプションのデバッグ機能を `CONFIG_SLUB_DEBUG` で有効にします。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### CONFIG\$1STATIC\$1USER\$1MODE\$1HELPER
<a name="CONFIG_STATIC_USERMODEHELPER"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。これは、現在 Amazon Linux にはない配布からの特別なサポートが`CONFIG_STATIC_USERMODEHELPER` で必要なためです。

### 読み取り専用カーネルテキストおよび rodata (`CONFIG_STRICT_KERNEL_RWX` および `CONFIG_STRICT_MODULE_RWX`)
<a name="CONFIG_STRICT_KERNEL_RWX"></a>

 AL2023 カーネルは、カーネルとカーネルモジュールのテキストと rodata メモリを読み取り専用としてマークし、テキスト以外のメモリは実行不可としてマークするように設定されています。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### TCP syncookie のサポート (`CONFIG_SYN_COOKIES`)
<a name="CONFIG_SYN_COOKIES"></a>

 AL2023 カーネルは TCP syncookie をサポートするように構築されています。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### ガードページ (`CONFIG_VMAP_STACK`) 付きの仮想化マップスタック
<a name="CONFIG_VMAP_STACK"></a>

 AL2023 カーネルは `CONFIG_VMAP_STACK` で構築されているため、ガードページ付きの仮想化マッピングカーネルスタックが可能になります。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### コンパイラ警告をエラー (`CONFIG_WERROR`) として構築する
<a name="CONFIG_WERROR"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### 関数 exit (`CONFIG_ZERO_CALL_USED_REGS`) 時にレジスタをゼロにする
<a name="CONFIG_ZERO_CALL_USED_REGS"></a>

 このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### ユーザースペース割り当ての最小アドレス
<a name="CONFIG_DEFAULT_MMAP_MIN_ADDR"></a>

 この強化オプションは、カーネル NULL ポインターのバグの影響を軽減するのに役立ちます。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### `clang` 特定の強化オプション
<a name="kernel-hardening-clang"></a>

 AL2023 カーネルは clang ではなく GCC で構築されているため、`CONFIG_CFI_CLANG` 強化オプションを有効にすることはできません。`CONFIG_CFI_PERMISSIVE` も適用されません。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

## x86-64 固有のカーネル強化オプション
<a name="kernel-hardening-x86-64"></a>


| `CONFIG` オプション | AL2023/6.1/aarch64 | AL2023/6.1/x86\$164 | AL2023/6.12/aarch64 | AL2023/6.12/x86\$164 | AL2023/6.18/aarch64 | AL2023/6.18/x86\$164 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  [`CONFIG_AMD_IOMMU`](#CONFIG_AMD_IOMMU)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_AMD_IOMMU_V2`](#CONFIG_AMD_IOMMU_V2)  | 該当なし |  y  | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_IA32_EMULATION`](#CONFIG_IA32_EMULATION)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_INTEL_IOMMU`](#CONFIG_INTEL_IOMMU)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_INTEL_IOMMU_DEFAULT_ON`](#CONFIG_INTEL_IOMMU_DEFAULT_ON)  | 該当なし |  n  | 該当なし |  n  | 該当なし |  n  | 
|  [`CONFIG_INTEL_IOMMU_SVM`](#CONFIG_INTEL_IOMMU_SVM)  | 該当なし |  n  | 該当なし |  n  | 該当なし |  n  | 
|  [`CONFIG_LEGACY_VSYSCALL_NONE`](#CONFIG_LEGACY_VSYSCALL_NONE)  | 該当なし |  n  | 該当なし |  n  | 該当なし |  n  | 
|  [`CONFIG_MODIFY_LDT_SYSCALL`](#CONFIG_MODIFY_LDT_SYSCALL)  | 該当なし |  n  | 該当なし |  n  | 該当なし |  n  | 
|  [`CONFIG_PAGE_TABLE_ISOLATION`](#CONFIG_PAGE_TABLE_ISOLATION)  | 該当なし |  y  | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_RANDOMIZE_MEMORY`](#CONFIG_RANDOMIZE_MEMORY)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_X86_64`](#CONFIG_X86_64)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_X86_MSR`](#CONFIG_X86_MSR)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_X86_VSYSCALL_EMULATION`](#CONFIG_X86_VSYSCALL_EMULATION)  | 該当なし |  y  | 該当なし |  y  | 該当なし |  y  | 
|  [`CONFIG_X86_X32`](#CONFIG_X86_X32)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_X86_X32_ABI`](#CONFIG_X86_X32_ABI)  | 該当なし |  n  | 該当なし |  n  | 該当なし |  n  | 

### x86-64 サポート
<a name="CONFIG_X86_64"></a>

 基本的な x86-64 サポートには、物理アドレス拡張 (PAE) と実行なし (NX) ビットのサポートが含まれます。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### AMD と Intel IOMMU のサポート
<a name="kernel-x86-64-iommu"></a>

 AL2023 カーネルは AMD と Intel IOMMUsをサポートするように構築されています。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

 `CONFIG_INTEL_IOMMU_DEFAULT_ON` オプションは設定されていませんが、カーネルコマンドラインに `intel_iommu=on` を渡すことで有効にできます。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

 `CONFIG_INTEL_IOMMU_SVM` オプションは現在 AL2023 では有効化されていません。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### 32 ビットユーザースペースのサポート
<a name="kernel-hardening-32bit-support"></a>

**重要**  
 32 ビット x86 ユーザースペースのサポートは廃止され、32 ビットユーザースペースバイナリの実行のサポートは Amazon Linux の今後のメジャーバージョンで削除される可能性があります。

**注記**  
 AL2023 には 32 ビットパッケージは含まれなくなりましたが、カーネルは 32 ビットユーザースペースの実行を引き続きサポートします。詳細については「[32 ビット x86 (i686) パッケージ](compare-with-al2.md#i686)」を参照してください。

 32 ビットユーザースペースアプリケーションの実行をサポートするため、AL2023 では `CONFIG_X86_VSYSCALL_EMULATION` オプションは有効にせず、`CONFIG_IA32_EMULATION`、`CONFIG_COMPAT`、`CONFIG_X86_VSYSCALL_EMULATION` オプションを有効にします。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

 64 ビットプロセッサ用の x32 ネイティブ 32 ビット ABI は有効になっていません (`CONFIG_X86_X32` および `CONFIG_X86_X32_ABI`)。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### x86 モデル固有レジスタ (MSR) のサポート
<a name="CONFIG_X86_MSR"></a>

 `turbostat` をサポートするため `CONFIG_X86_MSR` オプションは有効になっています。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### `modify_ldt` システムコール
<a name="CONFIG_MODIFY_LDT_SYSCALL"></a>

 AL2023 では、ユーザープログラムが `modify_ldt` システムコールを使用して x86 ローカル記述子テーブル (LDT) を変更することはできません。この呼び出しは 16 ビットコードまたはセグメント化されたコードを実行するために必要です。この呼び出しがないと、WINE でプログラムを実行したり、非常に古いスレッドライブラリを実行したりする場合など、`dosemu` などのソフトウェアが動作しなくなる可能性があります。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### ユーザーモードでカーネルマッピングを削除する
<a name="CONFIG_PAGE_TABLE_ISOLATION"></a>

 AL2023 は、カーネルアドレスの大部分がユーザースペースにマップされないようにカーネルを設定します。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### カーネルメモリセクションをランダム化する
<a name="CONFIG_RANDOMIZE_MEMORY"></a>

 AL2023 は、カーネルメモリセクションのベース仮想化アドレスをランダム化するようにカーネルを設定します。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

## aarch64 固有のカーネル強化オプション
<a name="kernel-hardening-aarch64"></a>


| `CONFIG` オプション | AL2023/6.1/aarch64 | AL2023/6.1/x86\$164 | AL2023/6.12/aarch64 | AL2023/6.12/x86\$164 | AL2023/6.18/aarch64 | AL2023/6.18/x86\$164 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  [`CONFIG_ARM64_BTI`](#CONFIG_ARM64_BTI)  |  y  | 該当なし |  y  | 該当なし |  y  | 該当なし | 
|  [`CONFIG_ARM64_BTI_KERNEL`](#CONFIG_ARM64_BTI_KERNEL)  | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 
|  [`CONFIG_ARM64_PTR_AUTH`](#CONFIG_ARM64_PTR_AUTH)  |  y  | 該当なし |  y  | 該当なし |  y  | 該当なし | 
|  [`CONFIG_ARM64_PTR_AUTH_KERNEL`](#CONFIG_ARM64_PTR_AUTH_KERNEL)  |  y  | 該当なし |  y  | 該当なし |  y  | 該当なし | 
|  [`CONFIG_ARM64_SW_TTBR0_PAN`](#CONFIG_ARM64_SW_TTBR0_PAN)  |  y  | 該当なし |  y  | 該当なし |  y  | 該当なし | 
|  [`CONFIG_UNMAP_KERNEL_AT_EL0`](#CONFIG_UNMAP_KERNEL_AT_EL0)  |  y  | 該当なし |  y  | 該当なし |  y  | 該当なし | 

### ブランチターゲット識別
<a name="CONFIG_ARM64_BTI"></a>

 AL2023 カーネルでは、ブランチターゲット識別 (`CONFIG_ARM64_BTI`) がサポートされます。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

 AL2023 で GCC を使用して構築された `CONFIG_ARM64_BTI_KERNEL` オプションは有効になっていません。また、[gcc のバグ](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671)により、このオプションを使ったカーネル構築のサポートは、[アップストリームのカーネルでは現在無効になっています](https://github.com/torvalds/linux/commit/c0a454b9044fdc99486853aa424e5b3be2107078)。このオプションは[カーネルセルフプロテクションプロジェクト (KSPP) の推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つですが、AL2023 ではこの設定オプションを KSPP が推奨するものに設定していません。

### ポインター認証 (`CONFIG_ARM64_PTR_AUTH`)
<a name="CONFIG_ARM64_PTR_AUTH"></a>

 AL2023 カーネルは、リターン指向プログラミング (ROP) 手法の軽減に役立つポインター認証拡張機能 (ARMv8.3 拡張機能の一部) をサポートするように構築されています。[Graviton](https://aws.amazon.com/ec2/graviton) でのポインター認証に必要なハードウェアサポートは Graviton 3 で導入されました。

 `CONFIG_ARM64_PTR_AUTH` オプションは有効になっており、ユーザースペースのポインター認証をサポートします。`CONFIG_ARM64_PTR_AUTH_KERNEL` オプションも有効になっているため、AL2023 カーネルはリターンアドレス保護を自分で使うことができます。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### `TTBR0_EL1` 切り替えを決してしない特権アクセスをエミュレートする
<a name="CONFIG_ARM64_SW_TTBR0_PAN"></a>

 このオプションは、ユーザーアクセスルーチンによって一時的にのみ有効な値に設定される `TTBR0_EL1` で、カーネルがユーザー空間のメモリに直接アクセスすることを防ぎます。

 このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

### ユーザースペースでの実行時にカーネルをアンマップする
<a name="CONFIG_UNMAP_KERNEL_AT_EL0"></a>

 AL2023 カーネルは、ユーザースペース (`CONFIG_UNMAP_KERNEL_AT_EL0`) での実行時にカーネルをアンマップするように設定されています。このオプションは、[カーネルセルフプロテクションプロジェクト推奨設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)の 1 つです。

# AL2023 でのリポジトリメタデータ署名
<a name="repo-metadata-signing"></a>

リリース 以降`2023.11.20260406`、AL2023 リポジトリにはリポジトリメタデータの暗号化署名が含まれています。各リポジトリの `repomd.xml` ファイルには、パッケージがダウンロードされる前にリポジトリメタデータの信頼性と整合性を検証するために使用できる、デタッチされた GPG 署名ファイル (`repomd.xml.asc`) が付属しています。

この署名は、個々のパッケージを検証する既存の RPM パッケージ署名 (`gpgcheck`) に追加されます。リポジトリメタデータ署名は、使用可能なパッケージのリストやチェックサムなど、リポジトリの内容を説明するメタデータを検証します。

## リポジトリメタデータ署名の仕組み
<a name="repo-metadata-signing-overview"></a>

AL2023 リポジトリが公開されると、リポジトリメタデータ (`repomd.xml`) は KMS AWS キーを使用して署名されます。デタッチされた署名 (`repomd.xml.asc`) は、リポジトリ内のメタデータと一緒に配置されます。

リポジトリ設定`repo_gpgcheck`で を有効にすると、 はリポジトリメタデータを使用する前に、GPG パブリックキーに対して`repomd.xml.asc`署名DNFを自動的にダウンロードして検証します。署名の検証に失敗した場合、 はリポジトリメタデータDNFを拒否し、そのリポジトリからのパッケージオペレーションを続行しません。の詳細については`repo_gpgcheck`、[DNF「 設定リファレンス](https://dnf.readthedocs.io/en/latest/conf_ref.html)」を参照してください。

次の AL2023 リポジトリには、署名付きメタデータが含まれています。
+ コアリポジトリ (`amazonlinux`)
+ カーネル Livepatch リポジトリ (`kernel-livepatch`)
+ NVIDIA リポジトリ (`amazonlinux-nvidia`)
+ Amazon Linux リポジトリの補足パッケージ (`amazonlinux-spal`)

## `gpgcheck` と の違い `repo_gpgcheck`
<a name="repo-metadata-signing-gpgcheck-vs-repo-gpgcheck"></a>


| 設定 | 検証内容 | AL2023 のデフォルト | 
| --- | --- | --- | 
| gpgcheck=1 | インストール前に個々の RPM パッケージの GPG 署名を検証します。 | 有効 | 
| repo\$1gpgcheck=1 | リポジトリを使用する前に、リポジトリメタデータ (repomd.xml) の GPG 署名を検証します。 | 無効 (2023.12四半期ごとのリリースからデフォルトで有効) | 

`gpgcheck` と の両方を有効にすることを強くお勧めします`repo_gpgcheck`。これにより、リポジトリメタデータと個々のパッケージの両方が使用前に検証されます。

## リポジトリメタデータ検証の有効化
<a name="repo-metadata-signing-enable"></a>

設定ファイルを更新することで、個々のリポジトリのリポジトリメタデータ検証を有効にできます。

**重要**  
`2023.12` 四半期ごとのリリース以降、 は AL2023 リポジトリ設定ファイルでデフォルトで有効`repo_gpgcheck=1`になります。

### 特定のリポジトリに対して を有効にする
<a name="repo-metadata-signing-enable-per-repo"></a>

の AL2023 リポジトリ設定ファイルは`repo_gpgcheck=0`デフォルトで`/etc/yum.repos.d/`設定されています。リポジトリメタデータの検証を有効にするには、リポジトリ設定`1`でこの値を に変更します。たとえば、コアリポジトリに対して有効にするには:

```
[amazonlinux]
name=Amazon Linux 2023 repository
...
gpgcheck=1
repo_gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2023
```

## リポジトリメタデータ署名が機能していることの確認
<a name="repo-metadata-signing-verify"></a>

を有効にすると`repo_gpgcheck=1`、DNFキャッシュをクリアしてメタデータを更新することで、メタデータの検証が機能していることを確認できます。

```
[ec2-user ~]$ sudo dnf clean metadata
[ec2-user ~]$ sudo dnf makecache
```

メタデータの検証が成功すると、 は GPG キーDNFをインポートし (まだインポートされていない場合）、エラーなしでメタデータキャッシュを作成します。以下のような出力結果が表示されるはずです。

```
Amazon Linux 2023 repository                    1.7 MB/s | 1.8 kB     00:00
Importing GPG key 0xD832C631:
 Userid     : "Amazon Linux <amazon-linux@amazon.com>"
 Fingerprint: B21C 50FA 44A9 9720 EAA7 2F7F E951 904A D832 C631
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2023
Amazon Linux 2023 repository                      18 MB/s |  55 MB     00:03
Metadata cache created.
```

署名の検証に失敗した場合、 は GPG 署名の検証に失敗し、メタデータキャッシュの作成に失敗したことを示すエラーメッセージDNFを表示します。

## AL2023 リポジトリの GPG パブリックキー
<a name="repo-metadata-signing-gpg-keys"></a>

リポジトリメタデータの検証に使用される GPG パブリックキーは、対応するリポジトリ設定 RPMsにインストールされます`/etc/pki/rpm-gpg/`。次の表に、各リポジトリで使用されるパブリックキーを示します。


| Repository | パッケージ署名キー | リポジトリデータ署名キー | で配布 | 
| --- | --- | --- | --- | 
| コア (amazonlinux) | RPM-GPG-KEY-amazon-linux-2023 | RPM-GPG-KEY-amazon-linux-2023 | system-release | 
| カーネル Livepatch (kernel-livepatch) | RPM-GPG-KEY-amazon-linux-2023 | RPM-GPG-KEY-amazon-linux-2023 | system-release | 
| NVIDIA (amazonlinux-nvidia) | RPM-GPG-KEY-NVIDIA-D42D0685 | RPM-GPG-KEY-amazon-linux-2023-nvidia | nvidia-release | 
| SPAL (amazonlinux-spal) | RPM-GPG-KEY-amazonlinux-spal | RPM-GPG-KEY-amazonlinux-spal | spal-release | 

これらのキーは、対応するリポジトリ設定 RPM をインストールすると自動的にインストールされます。

# 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)」を参照してください)。