View a markdown version of this page

AL2023 でのリポジトリメタデータ署名 - Amazon Linux 2023

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

AL2023 でのリポジトリメタデータ署名

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

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

パッケージ署名は、各パッケージを保護します。これらのパッケージを一覧表示するメタデータインデックスは、TLS とチェックサムのみに基づいて信頼されます。インデックスの署名がない場合、侵害されたミラーまたはトランスポートパスは、セキュリティ更新を非表示またはブロックする変更されたメタデータを提供する可能性があります。リポジトリメタデータ署名は、このギャップを埋め、ミラーやトランスポートの信頼に依存しません。

リポジトリメタデータ署名の仕組み

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

リポジトリ設定repo_gpgcheckで を有効にすると、 DNF はリポジトリメタデータを使用する前に、repomd.xml.asc署名を GPG パブリックキーと照合します。検証に失敗した場合、 はメタデータDNFを拒否し、そのリポジトリからパッケージオペレーションを実行しません。

リポジトリのメタデータを初めてDNF検証すると、そのリポジトリの署名キーをリポジトリごとのキーリングにインポートするように求められます。このプロンプトのデフォルトは ですNo。拒否すると、 はリポジトリをDNFスキップします。の詳細についてはrepo_gpgcheckDNF「 設定リファレンス」を参照してください。

これはパッケージの検証に既に使用されているのと同じキーですが、メタデータチェック用に別のキーリングにDNF保存します。キーがすでにディスクにある場合でも、確認を求められます。これは想定されるDNF動作です。

次の AL2023 リポジトリには、署名付きメタデータが含まれています。

  • コアリポジトリ (amazonlinux)

  • カーネル Livepatch リポジトリ (kernel-livepatch)

  • NVIDIA リポジトリ (amazonlinux-nvidia)

  • Amazon Linux リポジトリの補足パッケージ (amazonlinux-spal)

gpgcheck と の違い repo_gpgcheck

設定 検証内容 AL2023 のデフォルト
gpgcheck=1 インストール前に個々の RPM パッケージの GPG 署名を検証します。 有効
repo_gpgcheck=1 リポジトリを使用する前に、リポジトリメタデータ (repomd.xml) の GPG 署名を検証します。 デフォルトでは無効になっています。

オートメーションの準備が整ったことを確認してからrepo_gpgcheckgpgcheckと の両方を有効にすることをお勧めします。これにより、リポジトリメタデータと個々のパッケージの両方が使用前に検証されます。を有効にする前にrepo_gpgcheck、「」を参照してくださいオートメーションでリポジトリメタデータ検証を使用する

リポジトリメタデータ検証の有効化

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

重要

リポジトリメタデータ署名の検証は、デフォルトでは有効になっていません。変更するまで無効のままになります。有効にする前に、オートメーションのすべての無人DNFコマンドが -yオプションに合格していることを確認します。詳細については、「オートメーションでリポジトリメタデータ検証を使用する」を参照してください。

特定のリポジトリに対して を有効にする

の 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

リポジトリメタデータの検証を無効にする

前の動作に戻るには、リポジトリ設定ファイルrepo_gpgcheck=0で を設定します。次のメタデータの更新は検証なしで成功します。

[ec2-user ~]$ sudo sed -i 's/^repo_gpgcheck=1/repo_gpgcheck=0/' /etc/yum.repos.d/amazonlinux.repo [ec2-user ~]$ sudo dnf -y makecache

リポジトリメタデータ署名が機能していることの確認

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

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

リポジトリのメタデータを初めてDNF検証すると、そのリポジトリの署名キーをインポートするように求められます。y を入力して確定します。キーがインポートされると、 はエラーなしでメタデータキャッシュ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 Is this ok [y/N]: y Amazon Linux 2023 repository 18 MB/s | 55 MB 00:03 Metadata cache created.

インポートプロンプトのデフォルトは ですNo。拒否すると、 はリポジトリをDNFスキップし、出力Ignoring repositoriesでレポートします。検証に失敗した場合、 は GPG 署名エラーDNFを報告し、キャッシュを作成しません。

無人実行については、「」を参照してくださいオートメーションでリポジトリメタデータ検証を使用する

オートメーションでリポジトリメタデータ検証を使用する

注記

キーインポートプロンプトのデフォルトは ですNo。自動DNF実行ではプロンプトに応答できないため、インポートは拒否され、リポジトリはスキップされます。AL2023 は を設定するためskip_if_unavailable=True、コマンドは引き続きステータス で終了します0。その結果、オートメーションはホストがパッケージや更新を受信しない間に成功を報告します。この符号は出力Ignoring repositoriesにあります。

これを防ぐには、継続的な統合ジョブ、イメージとコンテナのビルド、、cloud-init設定管理、cron ジョブなど、メタデータを更新するすべての無人DNFコマンドに -yオプションを渡します。

[ec2-user ~]$ sudo dnf -y makecache [ec2-user ~]$ sudo dnf -y check-update [ec2-user ~]$ sudo dnf -y upgrade

メタデータを更新するコマンドには が必要です-y。ローカルキャッシュまたはローカル RPM データベースのみを読み取るコマンド、または -Cオプションを使用するコマンドは、メタデータを更新せず、プロンプトを表示しません。利用できるタイムゾーンの一覧については、「リポジトリメタデータを更新するコマンド」を参照してください。

オートメーションを永続的-yに保持します。キーは、ホストごとに 1 回ではなく、リポジトリ URL ごとに 1 回インポートされます。AL2023 は、ロックされたバージョン (releasever) とAWSリージョンから各リポジトリ URL を構築するため、OS バージョンのアップグレードまたはリージョンの変更は新しい URL に解決され、再度プロンプトが表示されます。署名キーは変更されません。キーリングの場所のみが変更されます。次のバージョンアップグレードまたはリージョンでは新しいキーリングが使用され、再度プロンプトが表示されるため、キーを 1 回限りの修正として事前シードまたは事前ベイクしないでください。

を実行するとキャッシュされたメタデータはdnf clean allクリアされますが、同じバージョン内でインポートされたキーは削除されません。プロンプトは再トリガーされません。

コンテナイメージビルドには特に注意が必要です。イメージビルドのすべてのRUN dnfステップは無人であり、キーリングはイメージファイルシステムの一部であるため、すべての新しいイメージで空から始まります。実行中のホストがすでにインポートした内容に関係なく、ビルド中にプロンプトが表示されます。イメージビルド-yを渡します。

注記

Python ライブラリ (import dnf) DNFとしてドライブする場合、プロンプトは適用されません。ライブラリはプロンプトを表示せずにキーをインポートするため、メタデータは なしでロードされます-y

リポジトリメタデータを更新するコマンド

リポジトリメタデータをダウンロードまたは更新するコマンドは、キーのインポートとプロンプトをトリガーします。ローカルキャッシュまたはローカル RPM データベースのみを読み取るコマンドは読み取りません。オプションは結果を変更します。たとえば、 repolist -vはフェッチ、 --installed listinfoローカルを保持、 -C はフェッチ--cacheonlyを回避し、--refresh強制します。疑わしい場合は、 を渡します-y

コマンド メタデータの更新
dnf makecacheはい
dnf check-updateはい
dnf upgrade, dnf updateはい
dnf upgrade-minimalはい
dnf distro-syncはい
dnf installはい
dnf reinstallはい
dnf downgradeはい
dnf autoremoveはい
dnf swapはい
dnf list (デフォルトは または --available)はい
dnf info (デフォルトは または --available)はい
dnf searchはい
dnf providesはい
dnf repoqueryはい
dnf repoinfoはい
dnf deplistはい
dnf repository-packagesはい
dnf updateinfoはい
dnf group (リスト、情報、インストール)はい
dnf module (リスト、情報)はい
dnf shell (サブコマンドがフェッチする場合)はい
dnf builddepはい
dnf changelogはい
dnf debuginfo-installはい
dnf downloadはい
dnf repoclosureはい
dnf repographはい
dnf reposyncはい
dnf debug-dumpはい
dnf repolist -v (詳細)はい
dnf repolist (プレーンまたは --all)いいえ
dnf list --installed, dnf info --installedいいえ
dnf remove, dnf eraseいいえ
dnf markいいえ
dnf historyいいえ
dnf checkいいえ
dnf cleanいいえ
dnf config-managerいいえ
dnf needs-restartingいいえ
dnf aliasいいえ
dnf helpいいえ
dnf repomanageいいえ
dnf repodiffいいえ (2 つのリポジトリに名前が付けられていない限りエラー)
dnf coprいいえ
dnf groups-managerいいえ
dnf playgroundいいえ
dnf debug-restoreいいえ (保存されたダンプで動作)
-C または を使用するコマンド --cacheonlyいいえ

この方法でスキップされたリポジトリは出力Ignoring repositoriesで として報告されますが、AL2023 が を設定する0ため、これらのコマンドのほとんどは引き続き ステータスで終了しますskip_if_unavailable=True。終了コードだけに依存しないでください。キーのインポートが成功-yするように を渡します。

スキップされたリポジトリを検出する

終了コードだけでは、検証が成功したことは確認されません。スキップされたリポジトリは を終了し0、任意の実行がインポートしても署名キーは保持されるため、前のステップが失敗しても、後のチェックに合格する可能性があります。代わりに、次の 2 つのチェックを使用します。

  • オートメーションを監査します。すべてのメタデータ取得DNFコマンドが を渡すことを確認します-y。これにより、次の新しいリポジトリ URL で作業を続けることができます。

  • の出力を確認しますIgnoring repositories。次のコマンドは、リポジトリがスキップされると失敗します。このコマンドを使用してパイプラインを失敗させることができます。

[ec2-user ~]$ sudo dnf makecache 2>&1 | grep -q "Ignoring repositories" && { echo "repo skipped"; exit 1; }

固定バージョン

(--releasever、、/etc/dnf/vars/releaseverまたは releaseverを使用してdnf.conf) より前にリリースされたバージョンにピン留めすると2023.11.20260406、そのバージョンには署名ファイルがなく、リポジトリの更新にrepo_gpgcheck=1失敗します。

Error: Failed to download metadata for repo 'amazonlinux': GPG verification is enabled, but GPG signature is not available...

固定バージョンは、そのバージョン以降の更新を受信しません。ピン留めする場合は、 をバージョン 2023.11.20260406 以降にピン留めするか、 を設定しますrepo_gpgcheck=0

AL2023 リポジトリの GPG パブリックキー

リポジトリメタデータの検証に使用される 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 をインストールすると自動的にインストールされます。