systemd-creds
systemd-creds は、systemd によって提供されるユーティリティおよびサービスであり、systemd ユニットによって使用される認証情報を安全に保存および取得するように設計されています。これは、さまざまなサービスやアプリケーションに必要な、ユーザー名、パスワード、API キー、その他の認証データなどの機密情報の管理を簡素化することを目的としています。
詳細については、[1] および systemd-creds(1) を参照してください。
認証情報の暗号化
認証情報は、ローカル TPM2 チップから派生したキー、/var/
に保存されているキー、または使用可能な場合は両方 (デフォルト) を使用して、オプションで暗号化および認証できます。システムが TPM2 暗号化を使用しているか、または /var/
に保存されているキーのみを使用しているかを確認するには、次のコマンドを実行します。
$ systemd-creds has-tpm2
yes +firmware +driver +system +subsystem
plaintext.txt
に保存されているシークレットを暗号化するには、次のコマンドを実行します。
# systemd-creds --name=foobar encrypt plaintext.txt ciphertext.cred
暗号化された認証情報には意図した名前が含まれるため、悪用されることはありません。--name
を省略すると、ファイル名が認証情報名として使用されます。
暗号化が成功したことを確認するには、
# shred -u plaintext.txt # systemd-run -P --wait -p LoadCredentialEncrypted=foobar:$(pwd)/ciphertext.cred systemd-creds cat foobar
Without using --name
above, the correct command would be
# systemd-run -P --wait -p LoadCredentialEncrypted=ciphertext.cred:$(pwd)/ciphertext.cred systemd-creds cat ciphertext.cred
あるいは、systemd-ask-password
を使用して、最初にディスクに書き込まずにシークレットを提供することもできます。 -p
スイッチを使用すると、サービスファイルにすぐに含められる形式で認証情報を出力できます。
# systemd-ask-password -n | systemd-creds encrypt --name=mysql-password -p - - 🔐 Password: *************** SetCredentialEncrypted=mysql-password: \ k6iUCUh0RJCQyvL8k8q1UyAAAAABAAAADAAAABAAAAD42X4T5h86ynMHG5MAAAAAgAAAA \ AAAAAALACMA8AAAACAAAAAAngAgws4cwpkrOvpxVf4/GSyOYCoQ4dmPs3Vcfg3D0eH/Ov \ cAEC/U9JTyeHgktYBDl8U5jOq/NqFX3IPc24EX7aeTevsL6OKwlTDcF04W1M6eodqngRo \ 1JfRqHWnSfVHHYVXgMjIkWT4AcC0OoqAzQobK5e5G1zjTPygiG/ewGttY9sueKCL/INUu \ n1e6/QB6D9T0x9Sl18CeBtoASepCAE4ACAALAAAAEgAgY9RHOefBR+mMgV/Frr+UzQX1S \ IsLFItIbfB6Ep76It0AEAAgKH2Tduip205Dw0GVkME+yvOUNYVhnSHYqWHQoxelKrdj1E \ c558FH6YyBX8Wuv5TNBfVIiwsUi0ht8HoSnvoi3QAAAAA3WzuXTYG2OFX9wFo740b3YjE \ ZtiCWakoAOxzX+D/vIFyB3INROxpfXUCV7LY4eRITI9PJZiE6lGn4kjZBnbUf47yo1WDG \ Wg==
関連する認証情報を含めるサービスファイルを 編集 します。
ヒントとテクニック
例については、systemd-creds を使用して borgmatic.service のパスワードを提供する を参照してください。