View a markdown version of this page

Signierung von Repository-Metadaten in AL2023 - Amazon Linux 2023

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Signierung von Repository-Metadaten in AL2023

Ab der Veröffentlichung enthalten 2023.11.20260406 AL2023-Repositorien kryptografische Signaturen für Repository-Metadaten. Jeder repomd.xml Repository-Datei liegt eine separate GPG-Signaturdatei (repomd.xml.asc) bei, mit der Sie die Authentizität und Integrität der Repository-Metadaten überprüfen können, bevor Pakete heruntergeladen werden.

Diese Signierung erfolgt zusätzlich zur bestehenden RPM-Paketsignierung (gpgcheck), die einzelne Pakete verifiziert. Beim Signieren von Repository-Metadaten werden die Metadaten überprüft, die den Inhalt des Repositorys beschreiben, z. B. die Liste der verfügbaren Pakete und deren Prüfsummen.

Das Signieren von Paketen schützt jedes Package. Der Metadatenindex, der diese Pakete auflistet, ist ansonsten nur auf der Grundlage von TLS und Prüfsummen vertrauenswürdig. Ohne eine Signatur im Index könnte ein kompromittierter Spiegel oder Transportpfad modifizierte Metadaten bereitstellen, die Sicherheitsupdates verbergen oder blockieren. Das Signieren von Repository-Metadaten schließt diese Lücke und hängt nicht von Mirror oder Transport Trust ab.

So funktioniert das Signieren von Repository-Metadaten

Wenn AL203-Repositorys veröffentlicht werden, werden die Repository-Metadaten (repomd.xml) mit einem AWS KMS-Schlüssel signiert. Die daraus resultierende separate Signatur (repomd.xml.asc) wird neben den Metadaten im Repository platziert.

Wenn Sie die Option repo_gpgcheck in Ihrer Repository-Konfiguration aktivieren, DNF wird die repomd.xml.asc Signatur anhand des öffentlichen GPG-Schlüssels überprüft, bevor die Repository-Metadaten verwendet werden. Wenn die Überprüfung fehlschlägt, werden die Metadaten DNF zurückgewiesen und keine Paketoperationen von diesem Repository aus ausgeführt.

Wenn die Metadaten eines Repositorys zum ersten Mal DNF verifiziert werden, werden Sie aufgefordert, den Signaturschlüssel dieses Repositorys in einen Repository-spezifischen Schlüsselbund zu importieren. Diese Aufforderung ist standardmäßig auf. No Wenn Sie sie ablehnen, wird das Repository DNF übersprungen. Weitere Informationen zu repo_gpgcheck finden Sie in der DNFKonfigurationsreferenz.

Dies ist derselbe Schlüssel, der bereits für die Paketverifizierung verwendet wurde, er wird jedoch in einem separaten Schlüsselbund für Metadatenprüfungen DNF gespeichert. Sie werden zur Bestätigung aufgefordert, obwohl sich der Schlüssel bereits auf der Festplatte befindet. Dieses DNF Verhalten wird erwartet.

Die folgenden AL203-Repositorien enthalten signierte Metadaten:

  • Kern-Repository () amazonlinux

  • Kernel-Livepatch-Repository () kernel-livepatch

  • NVIDIA-Repository () amazonlinux-nvidia

  • Zusätzliche Pakete für das Amazon Linux-Repository (amazonlinux-spal)

Unterschied zwischen gpgcheck und repo_gpgcheck

Einstellung Was verifiziert es Standard in AL2023
gpgcheck=1 Überprüft vor der Installation die GPG-Signatur einzelner RPM-Pakete. Aktiviert
repo_gpgcheck=1 Überprüft die GPG-Signatur der Repository-Metadaten (repomd.xml), bevor das Repository verwendet wird. Standardmäßig deaktiviert

Wir empfehlen Ihnen, beide zu aktivieren gpgcheck undrepo_gpgcheck, nachdem Sie bestätigt haben, dass Ihre Automatisierung bereit ist. Dadurch werden sowohl die Repository-Metadaten als auch die einzelnen Pakete vor der Verwendung überprüft. Bevor Sie die Aktivierung durchführenrepo_gpgcheck, finden Sie weitere Informationen unterVerwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung.

Überprüfung der Repository-Metadaten aktivieren

Sie können die Überprüfung von Repository-Metadaten für einzelne Repositorys aktivieren, indem Sie deren Konfigurationsdateien aktualisieren.

Wichtig

Die Überprüfung der Signatur von Repository-Metadaten ist standardmäßig nicht aktiviert. Sie bleibt deaktiviert, bis Sie sie ändern. Bevor Sie es aktivieren, stellen Sie sicher, dass jeder unbeaufsichtigte DNF Befehl in Ihrer Automatisierung die -y Option erfüllt. Weitere Informationen finden Sie unter Verwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung.

Für ein bestimmtes Repository aktivieren

Die AL203-Repository-Konfigurationsdateien sind repo_gpgcheck=0 standardmäßig /etc/yum.repos.d/ festgelegt. Um die Überprüfung der Repository-Metadaten zu aktivieren, ändern Sie diesen Wert 1 in der Repository-Konfiguration auf. Um ihn beispielsweise für das Core-Repository zu aktivieren, gehen Sie wie folgt vor:

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

Deaktivieren Sie die Überprüfung der Repository-Met

Um zum vorherigen Verhalten zurückzukehren, legen Sie es repo_gpgcheck=0 in der Repository-Konfigurationsdatei fest. Die nächste Aktualisierung der Metadaten ist ohne Überprüfung erfolgreich.

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

Es wird überprüft, ob das Signieren von Repository-Metadaten funktioniert

Nach der Aktivierung können Sie überprüfenrepo_gpgcheck=1, ob die Überprüfung der Metadaten funktioniert, indem Sie den DNF Cache leeren und die Metadaten aktualisieren:

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

Bei der ersten DNF Überprüfung der Metadaten für ein Repository werden Sie aufgefordert, den Signaturschlüssel dieses Repositorys zu importieren. Geben Sie y zur Bestätigung ein. DNFErstellt nach dem Import des Schlüssels den Metadaten-Cache ohne Fehler. Die Ausgabe entspricht weitgehend der Folgenden:

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.

Die Importaufforderung ist standardmäßig aufNo. Wenn Sie sie ablehnen, werden das Repository und die Berichte Ignoring repositories in der Ausgabe DNF übersprungen. Schlägt die Überprüfung fehl, DNF meldet es einen GPG-Signaturfehler und erstellt den Cache nicht.

Informationen zu unbeaufsichtigten Läufen finden Sie unter. Verwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung

Verwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung

Anmerkung

Die Schlüsselimportaufforderung ist standardmäßig aufNo. Bei einer unbeaufsichtigten DNF Ausführung kann die Aufforderung nicht beantwortet werden. Daher wird der Import abgelehnt und das Repository übersprungen. Da AL2023 gesetzt wirdskip_if_unavailable=True, wird der Befehl immer noch mit Status beendet. 0 Infolgedessen meldet die Automatisierung einen Erfolg, während der Host keine Pakete oder Updates erhält. Das Zeichen dafür ist Ignoring repositories in der Ausgabe zu sehen.

Um dies zu verhindern, übergeben Sie die -y Option an jeden unbeaufsichtigten DNF Befehl, der Metadaten aktualisiert, einschließlich Continuous Integration-Jobs, Image- und Container-Buildscloud-init, Konfigurationsmanagement und Cron-Jobs.

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

Befehle, die Metadaten aktualisieren müssen. -y Befehle, die nur den lokalen Cache oder die lokale RPM-Datenbank lesen oder die diese -C Option verwenden, aktualisieren keine Metadaten und geben keine Eingabeaufforderung aus. Eine vollständige Liste finden Sie unter Befehle, die Repository-Metadaten aktualisieren.

Behalten -y Sie Ihre Automatisierung dauerhaft bei. Der Schlüssel wird einmal pro Repository-URL importiert, nicht einmal pro Host. AL2023 erstellt jede Repository-URL aus der gesperrten Version (releasever) und der AWS Region, sodass ein Betriebssystem-Versions-Upgrade oder eine Regionsänderung zu einer neuen URL aufgelöst wird und erneut gefragt wird. Der Signaturschlüssel ändert sich nicht, sondern nur die Position des Schlüsselbundes. Verwenden Sie den Schlüssel nicht als einmaliges Problem im Voraus, da beim nächsten Versionsupgrade oder bei der nächsten Region ein neuer Schlüsselbund verwendet wird und Sie erneut aufgefordert werden.

Beim Ausführen dnf clean all werden die zwischengespeicherten Metadaten gelöscht, der importierte Schlüssel innerhalb derselben Version jedoch nicht entfernt. Die Aufforderung wird dadurch nicht erneut ausgelöst.

Container-Image-Builds erfordern besondere Aufmerksamkeit. Jeder RUN dnf Schritt bei der Image-Erstellung erfolgt unbeaufsichtigt, und der Schlüsselbund ist Teil des Image-Dateisystems, sodass er in jedem neuen Image leer beginnt. Die Aufforderung erscheint während des Builds, unabhängig davon, was Ihre laufenden Hosts bereits importiert haben. Übergeben Sie -y Image-Builds.

Anmerkung

Wenn Sie DNF als Python-Bibliothek (import dnf) fahren, gilt die Aufforderung nicht. Die Bibliothek importiert den Schlüssel ohne Aufforderung, sodass Metadaten ohne -y Aufforderung geladen werden.

Befehle, die Repository-Metadaten aktualisieren

Jeder Befehl, der Repository-Metadaten herunterlädt oder aktualisiert, löst den Schlüsselimport und die Aufforderung aus. Befehle, die nur den lokalen Cache oder die lokale RPM-Datenbank lesen, tun dies nicht. Optionen ändern das Ergebnis: So wird beispielsweise der -v Befehl repolist fetch, keep --installed list und info local ausgeführt -C oder der Abruf --cacheonly wird vermieden und --refresh erzwungen. Bestehen Sie im Zweifelsfall. -y

Befehl Aktualisiert Metadaten
dnf makecacheJa
dnf check-updateJa
dnf upgrade, dnf updateJa
dnf upgrade-minimalJa
dnf distro-syncJa
dnf installJa
dnf reinstallJa
dnf downgradeJa
dnf autoremoveJa
dnf swapJa
dnf list(Standard oder--available)Ja
dnf info(Standard oder--available)Ja
dnf searchJa
dnf providesJa
dnf repoqueryJa
dnf repoinfoJa
dnf deplistJa
dnf repository-packagesJa
dnf updateinfoJa
dnf group(Liste, Info, Installation)Ja
dnf module(Liste, Information)Ja
dnf shell(wenn seine Unterbefehle fetchJa
dnf builddepJa
dnf changelogJa
dnf debuginfo-installJa
dnf downloadJa
dnf repoclosureJa
dnf repographJa
dnf reposyncJa
dnf debug-dumpJa
dnf repolist -v(ausführlich)Ja
dnf repolist(schlicht oder--all)Nein
dnf list --installed, dnf info --installedNein
dnf remove, dnf eraseNein
dnf markNein
dnf historyNein
dnf checkNein
dnf cleanNein
dnf config-managerNein
dnf needs-restartingNein
dnf aliasNein
dnf helpNein
dnf repomanageNein
dnf repodiffNein (Fehler, sofern nicht zwei Repositorys benannt sind)
dnf coprNein
dnf groups-managerNein
dnf playgroundNein
dnf debug-restoreNein (wirkt auf einen gespeicherten Speicherauszug)
Irgendein Befehl mit -C oder --cacheonlyNein

Ein auf diese Weise übersprungenes Repository wird wie Ignoring repositories in der Ausgabe gemeldet, aber die meisten dieser Befehle werden trotzdem mit dem Status beendet, 0 weil AL2023 setzt. skip_if_unavailable=True Verlassen Sie sich nicht nur auf den Exit-Code. Beenden Sie den Vorgang, -y damit der Schlüsselimport erfolgreich ist.

Erkennt ein übersprungenes Repository

Der Exit-Code allein bestätigt nicht, dass die Überprüfung erfolgreich war. Ein übersprungenes Repository wird beendet0, und der Signaturschlüssel bleibt bestehen, sobald er von einem Lauf importiert wurde, sodass eine spätere Prüfung erfolgreich sein kann, während ein früherer Schritt immer noch fehlschlägt. Verwenden Sie stattdessen diese beiden Prüfungen:

  • Prüfen Sie Ihre Automatisierung. Vergewissern Sie sich, dass jeder Befehl zum Abrufen von Metadaten erfolgreich DNF ist. -y Das ist es, was Sie dazu bringt, an der nächsten neuen Repository-URL zu arbeiten.

  • Überprüfen Sie die Ausgabe fürIgnoring repositories. Der folgende Befehl schlägt fehl, wenn das Repository übersprungen wird. Mit diesem Befehl können Sie eine Pipeline ausfallen lassen:

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

Angeheftete Versionen

Wenn Sie releasever (mit --releasever/etc/dnf/vars/releasever, oderdnf.conf) an eine zuvor veröffentlichte Version anheften2023.11.20260406, hat diese Version keine Signaturdatei und das Repository repo_gpgcheck=1 kann nicht aktualisiert werden:

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

Eine angeheftete Version erhält keine Updates, die über diese Version hinausgehen. Wenn Sie eine Anheftung vornehmen, an eine Version 2023.11.20260406 oder eine neuere Version anheften oder festlegenrepo_gpgcheck=0.

Öffentliche GPG-Schlüssel für AL203-Repositorien

Die öffentlichen GPG-Schlüssel, die für die Überprüfung der Repository-Metadaten verwendet werden, werden von den entsprechenden Repository-Konfigurations-RPMs auf installiert. /etc/pki/rpm-gpg/ In der folgenden Tabelle sind die öffentlichen Schlüssel aufgeführt, die von den einzelnen Repositorien verwendet werden.

Repository Schlüssel zum Signieren von Paketen Repodata-Signaturschlüssel Verteilt in
Kern (amazonlinux) RPM-GPG-KEY-amazon-linux-2023 RPM-GPG-KEY-amazon-linux-2023 system-release
Kernel-Live-Patch () 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

Diese Schlüssel werden automatisch installiert, wenn Sie das entsprechende RPM für die Repository-Konfiguration installieren.