Security
如何阻止 ansible 將密碼寫入日誌文件?
我正在設置 MySQL 伺服器並希望 Ansible
mysql-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 常見問題解答。它可以應用於整個劇本,但是輸出會因“審查! ”消息而變得有點討厭。