SYSTEMD-CREDS(1) | systemd-creds | SYSTEMD-CREDS(1) |
BEZEICHNUNG
systemd-creds - Dienstezugangsberechtigungen auflisten, anzeigen, ver- und entschlüsseln
ÜBERSICHT
systemd-creds [OPTIONEN…] BEFEHL [ARG…]
BESCHREIBUNG
systemd-creds ist ein Werkzeug zum Auflisten, Anzeigen, Ver- und Entschlüsseln von Unit-Zugangsberechtigungen. Zugangsberechtigungen sind binäre oder textuelle Objekte beschränkter Größe, die an Unit-Prozesse übergeben werden können. Sie werden primär zur Übergabe kryptographischer Schlüssel (sowohl öffentliche als auch private) oder Zertifikate, Benutzerkonteninformationen oder Identitätsinformationen vom Rechner an Dienste verwandt.
Zugangsberechtigungen werden in Unit-Dateien über die Einstellungen ImportCredential=, LoadCredential=, SetCredential=, LoadCredentialEncrypted= und SetCredentialEncrypted= konfiguriert, siehe systemd.exec(5) für Details.
Für weitere Informationen siehe die Dokumentation System- und Dienste-Zugangsberechtigungen[1].
BEFEHLE
Die folgenden Befehle werden verstanden:
list
Zusammen mit jedem Zugangsberechtigungsnamen wird die Größe und der Sicherheitszustand angezeigt. Letzterer ist entweder »secure« (falls die Zugangsberechtigung sich in nicht-auslagerungsfähigem Speicher befindet, d.h. »ramfs«), »weak« (falls sie sich in anderen Arten von Speicher befindet) oder »insecure« (falls sie einen Zugriffsmodus hat, der nicht 0400 ist, d.h. von irgendjemand anders außer dem Eigentümer lesbar ist).
Hinzugefügt in Version 250.
cat Zugangsberechtigung…
Wird dies mit --json= oder --transcode= kombiniert, dann wird die Ausgabe auf einfache Art vor der Ausgabe umgewandelt.
Hinzugefügt in Version 250.
setup
Hinzugefügt in Version 250.
encrypt Eingabe|- Ausgabe|-
Akzeptiert zwei Dateisystempfade. Der Dateinamenanteil des Ausgabepfades wird als Name in die verschlüsselte Zugangsberechtigung eingebettet, um sicherzustellen, dass verschlüsselte Zugangsberechtigungen nicht umbenannt oder für andere Zwecke wiederverwendet werden, ohne dass das bemerkt wird. Der einzubettende Zugangsberechtigungsname kann mit der Einstellung --name= außer Kraft gesetzt werden. Die Eingabe- oder Ausgabepfade können als »-« angegeben werden, die Zugangsberechtigungsdaten werden dann aus der Standardeingabe gelesen bzw. in die Standardausgabe geschrieben. Falls der Ausgabepfad als »-« angegeben wurde, kann der Zugangsberechtigungsname nicht aus dem Dateisystempfad abgeleitet werden und sollte daher explizit mit dem Schalter --name= angegeben werden.
Die Zugangsberechtigungsdaten werden symmetrisch mit einem der folgenden Verschlüsselungsschlüssel verschlüsselt und authentifiziert:
Welcher der drei Schlüssel für Verschlüsselung verwandt werden soll, kann mit dem Schalter --with-key= konfiguriert werden. Abhängig vom Einsatzfall für die verschlüsselten Zugangsberechtigungen kann sich der Schlüssel unterscheiden. Für Zugangsberechtigungen, auf die während der Initrd zugegriffen werden soll, ist die Verschlüsselung mit dem Rechnerschlüssel nicht geeignet, da von der Initrd typischerweise kein Zugriff auf den Rechnerschlüssel möglich ist. Daher sollte für solche Zugangsberechtigungen nur der TPM2-Schlüssel verwandt werden.
Verschlüsselte Zugangsberechtigungen sind immer Base64-kodiert.
Verwenden Sie decrypt (siehe unten), um die Verschlüsselungsaktion rückgängig zu machen und die entschlüsselte Klartextzugangsberechtigung aus der verschlüsselten Chiffretext-Zugangsberechtigung zu erhalten.
Die Zugangsberechtigungsdaten werden mittels AES256-GCM verschlüsselt, d.h. sowohl Vertraulichkeit als auch Integrität wird geschützt, mittels eines SHA256-Hashes als Schlüssel für einen oder beide der oben beschriebenen Schlüssel.
Hinzugefügt in Version 250.
decrypt Eingabe|- [Ausgabe|-]
Akzeptiert einen oder zwei Dateisystempfade. Der Dateinamenanteil des Eingabepfads wird mit dem in der verschlüsselten Datei eingebetteten Zugangsberechtigungsnamen verglichen. Falls diese nicht übereinstimmen, schlägt die Entschlüsselung fehl. Dies erfolgt, um sicherzustellen, dass verschlüsselte Zugangsberechtigungsdaten nicht für andere Zwecke umgewidmet werden, ohne dass dies erkannt wird. Der mit dem eingebetteten Zugangsberechtigungsnamen zu vergleichende Zugangsberechtigungsname kann mit dem Schalter --name= außer Kraft gesetzt werden. Falls der Eingabepfad als »-« angegeben wurde, wird die verschlüsselte Zugangsberechtigung von der Standardeingabe gelesen. Falls nur ein Pfad angegeben ist oder der Ausgabepfad als »-« angegeben wurde, wird die entschlüsselte Zugangsberechtigung auf die Standardausgabe geschrieben. In diesem Modus kann der eingebettete Name in der Zugangsberechtigung nicht aus dem Pfad abgeleitet werden und sollte explizit mit --name= angegeben werden.
Entschlüsseln von Zugangsberechtigungen benötigt Zugriff auf den ursprünglichen TPM2-Chipsatz und/oder den Zugangsberechtigungs-Rechnerschlüssel, siehe oben. Informationen darüber, welche Schlüssel benötigt werden, sind in den verschlüsselten Zugangsberechtigungsdaten eingebettet und die Entschlüsselung ist daher vollständig automatisiert.
Hinzugefügt in Version 250.
has-tpm2
Kombinieren Sie mit --quiet, um die Ausgabe zu unterdrücken.
Hinzugefügt in Version 251.
-h, --help
--version
OPTIONEN
--system
Hinzugefügt in Version 250.
--transcode=
Beachten Sie, dass dies beim Befehl encrypt keine Auswirkung hat, da die verschlüsselten Zugangsberechtigungen bedingungslos in Base64 kodiert sind.
Hinzugefügt in Version 250.
--newline=
Hinzugefügt in Version 250.
--pretty, -p
Hinzugefügt in Version 250.
--name=Name
Steuert den Zugangsberechtigungsnamen, der zum Validieren des in der verschlüsselten Zugangsberechtigung eingebetteten Zugangsberechtigungsnamens verwandt werden soll, wenn dies zusammen mit dem Befehl decrypt angegeben wird. Falls nicht angegeben, wird der Name automatisch aus der Dateinamenkomponente des angegebenen Eingabepfades ausgewählt. Falls kein Zugangsberechtigungsname in der verschlüsselten Zugangsberechtigungsdatei eingebettet ist (d.h. beim Verschlüsseln wurde --name= mit einer leeren Zeichenkette verwandt), hat der angegebene Name keine Wirkung, da keine Validierung des Zugangsberechtigungsnamens erfolgt.
Einbetten des Zugangsberechtigungsnamens in der verschlüsselten Zugangsberechtigung erfolgt, um gegen die Wiederverwendung von Zugangsberechtigungen für andere als die ursprünglich geplanten Zwecke zu schützen, wobei angenommen wird, dass der Name der Zugangsberechtigung sorgfältig gewählt wird, um seinen geplanten Zweck zu kodieren.
Hinzugefügt in Version 250.
--timestamp=Zeitstempel
Steuert den Zeitstempel, der zum Validieren des »not-after«-Zeitstempels verwandt werden soll, der mit --not-after= während der Verschlüsselung konfiguriert wurde, wenn dies zusammen mit dem Befehl decrypt angegeben wird. Falls nicht angegeben, ist die Vorgabe die aktuelle Systemzeit.
Hinzugefügt in Version 250.
--not-after=Zeitstempel
Hinzugefügt in Version 250.
--with-key=, -H, -T
Der Schalter -H ist eine Abkürzung für --with-key=host. Entsprechend ist -T eine Abkürzung für --with-key=tpm2.
Bei der Verschlüsselung von Zugangsberechtigungen, die in der Initrd verwandt werden sollen, bei der /var/lib/systemd/ typischerweise nicht verfügbar ist, sollte sichergestellt werden, dass der Modus --with-key=auto-initrd verwandt wird, um die Anbindung an das Rechnergeheimnis auszuschalten.
Dieser Schalter hat beim Befehl decrypt keine Auswirkung, da Informationen über den für die Entschlüsselung zu verwendenden Schlüssel bereits in der verschlüsselten Zugangsberechtigung enthalten sind.
Hinzugefügt in Version 250.
--tpm2-device=PFAD
Hinzugefügt in Version 250.
--tpm2-pcrs= [PCR…]
Hinzugefügt in Version 250.
--tpm2-public-key= [PFAD], --tpm2-public-key-pcrs= [PCR…]
Beachten Sie den Unterschied zwischen --tpm2-pcrs= und --tpm2-public-key-pcrs=: Ersterer bindet die Entschlüsselung an die aktuellen, angegebenen PCR-Werte; Letzteres bindet die Entschlüsselung an eine Gruppe von PCR-Werten, für die eine Signatur durch den angegebenen öffentlichen Schlüssel bereitgestellt werden kann. Leztere ist daher in Szenarien nützlicher, bei denen Software-Aktualisierungen möglich sein sollen, ohne Zugriff auf alle vorher verschlüsselten Geheimnisse zu verlieren.
Hinzugefügt in Version 252.
--tpm2-signature= [PFAD]
Hinzugefügt in Version 252.
--quiet, -q
Hinzugefügt in Version 251.
--no-pager
--no-legend
--json=MODUS
EXIT-STATUS
Bei Erfolg wird 0 zurückgeliefert.
Liefert 0 beim Befehl has-tpm2 zurück, falls ein TPM2-Gerät erkannt wurde, unterstützt ist und von der Firmware, dem Treiber und dem Anwendungsraum (d.h. Systemd) verwandt wird. Liefert andernfalls die ODER-Kombination der Werte 1 (falls die Firmware-Unterstützung fehlt), 2 (falls die Treiber-Unterstützung fehlt) und 4 (falls die Unterstützung des Anwendungsraums fehlt). Falls überhaupt keine TPM2-Unterstützung verfügbar ist, wird daher der Wert 7 zurückgeliefert.
BEISPIELE
Beispiel 1. Verschlüsselt ein Passwort zur Verwendung als Zugangsberechtigung
Die folgende Befehlszeile verschlüsselt das angegebene Passwort »hunter2« und schreibt das Ergebnis in eine Datei password.cred.
# echo -n hunter2 | systemd-creds encrypt - password.cred
Dies entschlüsselt die Datei password.cred wieder und legt damit das eigentliche Passwort offen:
# systemd-creds decrypt password.cred hunter2
Beispiel 2. Verschlüsselt ein Passwort und nimmt es in eine Unit-Datei auf
Die folgende Befehlszeile bittet den Benutzer um ein Passwort und erstellt daraus eine SetCredentialEncrypted=-Zeile für eine Zugangsberechtigung namens »mysql-password«, geeignet für die Aufnahme in eine Unit-Datei.
# systemd-ask-password -n | systemd-creds encrypt --name=mysql-password -p - - 🔐 Password: **** SetCredentialEncrypted=mysql-password: \ k6iUCUh0RJCQyvL8k8q1UyAAAAABAAAADAAAABAAAAASfFsBoPLIm/dlDoGAAAAAAAAAA \ NAAAAAgAAAAAH4AILIOZ3w6rTzYsBy9G7liaCAd4i+Kpvs8mAgArzwuKxd0ABDjgSeO5k \ mKQc58zM94ZffyRmuNeX1lVHE+9e2YD87KfRFNoDLS7F3YmCb347gCiSk2an9egZ7Y0Xs \ 700Kr6heqQswQEemNEc62k9RJnEl2q7SbcEYguegnPQUATgAIAAsAAAASACA/B90W7E+6 \ yAR9NgiIJvxr9bpElztwzB5lUJAxtMBHIgAQACCaSV9DradOZz4EvO/LSaRyRSq2Hj0ym \ gVJk/dVzE8Uxj8H3RbsT7rIBH02CIgm/Gv1ukSXO3DMHmVQkDG0wEciyageTfrVEer8z5 \ 9cUQfM5ynSaV2UjeUWEHuz4fwDsXGLB9eELXLztzUU9nsAyLvs3ZRR+eEK/A==
Die erstellte Zeile kann 1:1 in eine Unit-Datei eingefügt werden und wird sicherstellen, dass das erlangte Passwort in der Zugangsberechtigungsdatei $CREDENTIALS_DIRECTORY/mysql-password für den gestarteten Dienst zur Verfügung gestellt wird.
Unter Verwendung der Unit-Datei-Ergänzungslogik kann dies zur sicheren Übergabe einer Passwort-Zugangsberechtigung an eine Unit verwandt werden. Eine ähnliche, umfassende Gruppe an Befehlen zum Einfügen eines Passworts in einen Dienst xyz.service:
# mkdir -p /etc/systemd/system/xyz.service.d # systemd-ask-password -n | ( echo "[Service]" && systemd-creds encrypt --name=MySQL-Passwort -p - - ) >/etc/systemd/system/xyz.service.d/50-password.conf # systemctl daemon-reload # systemctl restart xyz.service
SIEHE AUCH
ANMERKUNGEN
- 1.
- System- und Dienste-Zugangsberechtigungen
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
systemd 255 |