Security

如何阻止 ansible 將密碼寫入日誌文件?

  • August 20, 2021

我正在設置 MySQL 伺服器並希望 Ansiblemysql-root在安裝期間設置密碼。

在網際網路的幫助下,我想出了這個解決方案:

- name: Set MySQL root password before installing
 debconf: name='mysql-server' question='mysql-server/root_password' value='{{mysql_root_pwd | quote}}' vtype='password'
- name: Confirm MySQL root password before installing
 debconf: name='mysql-server' question='mysql-server/root_password_again' value='{{mysql_root_pwd | quote}}' vtype='password'
- name: Install Mysql
 apt: pkg=mysql-server state=latest

mysql_root_pwd是從 Ansible Vault 載入的變數。這執行正常,但現在伺服器上的日誌中有很多行:

Apr 10 14:39:59 servername ansible-debconf: Invoked with value=THEPASSWORD vtype=password question=mysql-server/root_password name=mysql-server unseen=None
Apr 10 14:39:59 servername ansible-debconf: Invoked with value=THEPASSWORD vtype=password question=mysql-server/root_password_again name=mysql-server unseen=None

如何阻止 Ansible 將明文密碼寫入日誌文件?

觀察到的行為似乎是 debconf 模組中的錯誤。我送出了錯誤報告

github 上的使用者 bcoca 指出,可以no_log: true在設置密碼的任務中使用該指令來防止記錄。這是一種解決方法,在修復錯誤之前對我有用。

為了防止包含機密資訊的任務被記錄,在 syslog 或其他中,no_log: true在任務上設置:

- name: secret stuff
 command: "echo {{secret_root_password}} | sudo su -"
 no_log: true

任務的執行仍將被記錄,但細節很少。另外,使用的模組必須支持no_log,所以測試自定義模組。

有關詳細資訊,請參閱Ansible 常見問題解答。它可以應用於整個劇本,但是輸出會因“審查! ”消息而變得有點討厭。

引用自:https://serverfault.com/questions/681832