View a markdown version of this page

Penandatanganan metadata repositori di AL2023 - Amazon Linux 2023

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Penandatanganan metadata repositori di AL2023

Dimulai dengan rilis2023.11.20260406, repositori AL2023 menyertakan tanda tangan kriptografi untuk metadata repositori. Setiap file repositori disertai dengan repomd.xml file tanda tangan GPG terpisah (repomd.xml.asc) yang dapat Anda gunakan untuk memverifikasi keaslian dan integritas metadata repositori sebelum paket diunduh.

Penandatanganan ini merupakan tambahan dari penandatanganan paket RPM yang ada (gpgcheck), yang memverifikasi paket individual. Penandatanganan metadata repositori memverifikasi metadata yang menjelaskan isi repositori, seperti daftar paket yang tersedia dan checksumnya.

Penandatanganan paket melindungi setiap paket. Indeks metadata yang mencantumkan paket-paket tersebut dipercaya hanya berdasarkan TLS dan checksum. Tanpa tanda tangan pada indeks, cermin yang dikompromikan atau jalur transportasi dapat menyajikan metadata yang dimodifikasi yang menyembunyikan atau memblokir pembaruan keamanan. Penandatanganan metadata repositori menutup celah ini dan tidak bergantung pada cermin atau kepercayaan transportasi.

Cara kerja penandatanganan metadata repositori

Ketika repositori AL2023 diterbitkan, repomd.xml metadata repositori () ditandatangani menggunakan kunci KMS.AWS Tanda tangan terpisah (repomd.xml.asc) yang dihasilkan ditempatkan di samping metadata di repositori.

Saat Anda mengaktifkan repo_gpgcheck konfigurasi repositori Anda, DNF verifikasi repomd.xml.asc tanda tangan terhadap kunci publik GPG sebelum menggunakan metadata repositori. Jika verifikasi gagal, DNF tolak metadata dan tidak menjalankan operasi paket dari repositori itu.

Pertama kali DNF memverifikasi metadata repositori, ini meminta Anda untuk mengimpor kunci penandatanganan repositori itu ke keyring per-repositori. Prompt ini default ke. No Jika Anda menolaknya, DNF lewati repositori. Untuk informasi selengkapnyarepo_gpgcheck, lihat Referensi DNF Konfigurasi.

Ini adalah kunci yang sama yang sudah digunakan untuk verifikasi paket, tetapi DNF menyimpannya dalam keyring terpisah untuk pemeriksaan metadata. Anda diminta untuk mengonfirmasinya meskipun kuncinya sudah ada di disk. Ini adalah DNF perilaku yang diharapkan.

Repositori AL2023 berikut menyertakan metadata yang ditandatangani:

  • Repositori inti () amazonlinux

  • Repositori Kernel Livepatch () kernel-livepatch

  • Repositori NVIDIA () amazonlinux-nvidia

  • Paket Tambahan untuk repositori Amazon Linux () amazonlinux-spal

Perbedaan antara gpgcheck dan repo_gpgcheck

Pengaturan Apa yang diverifikasi Standar di AL2023
gpgcheck=1 Memverifikasi tanda tangan GPG dari masing-masing paket RPM sebelum instalasi. Diaktifkan
repo_gpgcheck=1 Memverifikasi tanda tangan GPG dari metadata repositori () repomd.xml sebelum menggunakan repositori. Dinonaktifkan secara default

Kami menyarankan Anda mengaktifkan keduanya gpgcheck danrepo_gpgcheck, setelah Anda mengonfirmasi bahwa otomatisasi Anda sudah siap. Ini memverifikasi metadata repositori dan paket individual sebelum digunakan. Sebelum Anda mengaktifkanrepo_gpgcheck, lihatGunakan verifikasi metadata repositori dalam otomatisasi.

Mengaktifkan verifikasi metadata repositori

Anda dapat mengaktifkan verifikasi metadata repositori untuk masing-masing repositori dengan memperbarui file konfigurasi mereka.

penting

Verifikasi tanda tangan metadata repositori tidak diaktifkan secara default. Itu tetap dinonaktifkan sampai Anda mengubahnya. Sebelum Anda mengaktifkannya, konfirmasikan bahwa setiap DNF perintah tanpa pengawasan dalam otomatisasi Anda melewati -y opsi. Untuk informasi selengkapnya, lihat Gunakan verifikasi metadata repositori dalam otomatisasi.

Aktifkan untuk repositori tertentu

File konfigurasi repositori AL2023 diatur secara default. /etc/yum.repos.d/ repo_gpgcheck=0 Untuk mengaktifkan verifikasi metadata repositori, ubah nilai ini menjadi 1 dalam konfigurasi repositori. Misalnya, untuk mengaktifkannya untuk repositori inti:

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

Nonaktifkan verifikasi metadata repositori

Untuk kembali ke perilaku sebelumnya, atur repo_gpgcheck=0 dalam file konfigurasi repositori. Penyegaran metadata berikutnya berhasil tanpa verifikasi.

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

Memverifikasi bahwa penandatanganan metadata repositori berfungsi

Setelah mengaktifkanrepo_gpgcheck=1, Anda dapat memverifikasi bahwa verifikasi metadata berfungsi dengan membersihkan DNF cache dan menyegarkan metadata:

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

Pertama kali DNF memverifikasi metadata untuk repositori, ini meminta Anda untuk mengimpor kunci penandatanganan repositori itu. Masukkan y untuk mengonfirmasi. Setelah kunci diimpor, DNF buat cache metadata tanpa kesalahan. Anda akan melihat output yang mirip dengan berikut ini:

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.

Prompt impor default ke. No Jika Anda menolaknya, DNF lewati repositori dan laporan Ignoring repositories dalam output. Jika verifikasi gagal, DNF laporkan kesalahan tanda tangan GPG dan tidak membuat cache.

Untuk lari tanpa pengawasan, lihatGunakan verifikasi metadata repositori dalam otomatisasi.

Gunakan verifikasi metadata repositori dalam otomatisasi

catatan

Prompt impor kunci default ke. No Proses tanpa pengawasan DNF tidak dapat menjawab prompt, sehingga menolak impor dan melewatkan repositori. Karena AL2023 skip_if_unavailable=True disetel, perintah masih keluar dengan status. 0 Akibatnya, otomatisasi melaporkan keberhasilan sementara host tidak menerima paket atau pembaruan. Tanda ini ada Ignoring repositories di output.

Untuk mencegah hal ini, teruskan -y opsi ke setiap DNF perintah tanpa pengawasan yang menyegarkan metadata, termasuk pekerjaan integrasi berkelanjutan, build image dan container, manajemen konfigurasicloud-init, dan pekerjaan cron.

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

Perintah yang menyegarkan metadata perlu. -y Perintah yang hanya membaca cache lokal atau database RPM lokal, atau yang menggunakan -C opsi, tidak menyegarkan metadata dan tidak meminta. Untuk daftar lengkapnya, lihat Perintah yang menyegarkan metadata repositori.

Simpan -y otomatisasi Anda secara permanen. Kuncinya diimpor sekali per URL repositori, bukan sekali per host. AL2023 membangun setiap URL repositori dari versi terkunci releasever () dan AWS Wilayah, sehingga peningkatan versi OS atau perubahan Wilayah diselesaikan ke URL baru dan meminta lagi. Kunci penandatanganan tidak berubah; hanya lokasi keyring yang melakukannya. Jangan melakukan pre-seed atau pre-bake kunci sebagai perbaikan satu kali, karena upgrade versi berikutnya atau Region menggunakan keyring baru dan meminta lagi.

Menjalankan dnf clean all menghapus metadata cache tetapi tidak menghapus kunci yang diimpor dalam versi yang sama. Itu tidak memicu kembali prompt.

Build gambar kontainer membutuhkan perhatian khusus. Setiap RUN dnf langkah dalam pembuatan gambar tidak dijaga, dan keyring adalah bagian dari sistem file gambar, sehingga mulai kosong di setiap gambar baru. Prompt muncul selama pembuatan terlepas dari apa yang telah diimpor oleh host yang sedang berjalan Anda. Lewati -y build gambar.

catatan

Jika Anda mengemudi DNF sebagai pustaka Python (import dnf), prompt tidak berlaku. Pustaka mengimpor kunci tanpa meminta, jadi metadata dimuat tanpa. -y

Perintah yang menyegarkan metadata repositori

Perintah apa pun yang mengunduh atau menyegarkan metadata repositori memicu impor kunci dan prompt. Perintah yang hanya membaca cache lokal atau database RPM lokal tidak. Opsi mengubah hasilnya: misalnya, -v membuat repolist fetch, --installed keep list dan info local, -C atau --cacheonly menghindari pengambilan, dan --refresh memaksanya. Jika ragu, lulus-y.

Perintah Menyegarkan metadata
dnf makecacheYa
dnf check-updateYa
dnf upgrade, dnf updateYa
dnf upgrade-minimalYa
dnf distro-syncYa
dnf installYa
dnf reinstallYa
dnf downgradeYa
dnf autoremoveYa
dnf swapYa
dnf list(default atau--available)Ya
dnf info(default atau--available)Ya
dnf searchYa
dnf providesYa
dnf repoqueryYa
dnf repoinfoYa
dnf deplistYa
dnf repository-packagesYa
dnf updateinfoYa
dnf group(daftar, info, instal)Ya
dnf module(daftar, info)Ya
dnf shell(jika subperintahnya diambil)Ya
dnf builddepYa
dnf changelogYa
dnf debuginfo-installYa
dnf downloadYa
dnf repoclosureYa
dnf repographYa
dnf reposyncYa
dnf debug-dumpYa
dnf repolist -v(bertele-tele)Ya
dnf repolist(polos atau--all)Tidak
dnf list --installed, dnf info --installedTidak
dnf remove, dnf eraseTidak
dnf markTidak
dnf historyTidak
dnf checkTidak
dnf cleanTidak
dnf config-managerTidak
dnf needs-restartingTidak
dnf aliasTidak
dnf helpTidak
dnf repomanageTidak
dnf repodiffTidak (kesalahan kecuali dua repositori diberi nama)
dnf coprTidak
dnf groups-managerTidak
dnf playgroundTidak
dnf debug-restoreTidak (bertindak pada tempat pembuangan yang disimpan)
Setiap perintah dengan -C atau --cacheonlyTidak

Repositori yang dilewati dengan cara ini dilaporkan seperti Ignoring repositories pada output, tetapi sebagian besar perintah ini masih keluar dengan status karena 0 AL2023 disetel. skip_if_unavailable=True Jangan mengandalkan kode keluar saja. Lulus -y sehingga impor kunci berhasil.

Mendeteksi repositori yang dilewati

Kode keluar saja tidak mengkonfirmasi bahwa verifikasi berhasil. Repositori yang dilewati keluar0, dan kunci penandatanganan tetap ada setelah proses apa pun mengimpornya, sehingga pemeriksaan selanjutnya dapat lolos sementara langkah sebelumnya masih gagal. Gunakan dua pemeriksaan ini sebagai gantinya:

  • Audit otomatisasi Anda. Konfirmasikan bahwa setiap perintah pengambilan metadata lewatDNF. -y Inilah yang membuat Anda bekerja pada URL repositori baru berikutnya.

  • Periksa output untukIgnoring repositories. Perintah berikut gagal ketika repositori dilewati, yang dapat Anda gunakan untuk gagal dalam pipeline:

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

Versi yang disematkan

Jika Anda menyematkan releasever (dengan --releasever/etc/dnf/vars/releasever,, ataudnf.conf) ke versi yang dirilis sebelumnya2023.11.20260406, versi tersebut tidak memiliki file tanda tangan, dan repo_gpgcheck=1 gagal menyegarkan repositori:

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

Versi yang disematkan tidak menerima pembaruan di luar versi itu. Jika Anda menyematkan, menyematkan ke versi 2023.11.20260406 atau yang lebih baru, atau mengaturrepo_gpgcheck=0.

Kunci publik GPG untuk repositori AL2023

Kunci publik GPG yang digunakan untuk verifikasi metadata repositori diinstal oleh RPM konfigurasi repositori yang sesuai. /etc/pki/rpm-gpg/ Tabel berikut mencantumkan kunci publik yang digunakan oleh setiap repositori.

Repositori Kunci penandatanganan Package Kunci penandatanganan repodata Didistribusikan di
Inti (amazonlinux) RPM-GPG-KEY-amazon-linux-2023 RPM-GPG-KEY-amazon-linux-2023 system-release
Kernel 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

Tombol-tombol ini secara otomatis diinstal ketika Anda menginstal konfigurasi repositori yang sesuai RPM.