Linux
在 Puppet 中,我將如何保護密碼變數(在本例中為 MySQL 密碼)?
我正在使用 Puppet 為 MySQL 提供參數化類:
class mysql::server( $password ) { package { 'mysql-server': ensure => installed } package { 'mysql': ensure => installed } service { 'mysqld': enable => true, ensure => running, require => Package['mysql-server'], } exec { 'set-mysql-password': unless => "mysqladmin -uroot -p$password status", path => ['/bin', '/usr/bin'], command => "mysqladmin -uroot password $password", require => Service['mysqld'], } }
我該如何保護
$password
?目前,我從節點定義文件中刪除了預設的全域可讀權限,並puppet
通過 ACL 顯式授予讀取權限。我假設其他人也遇到過類似的情況,所以也許有更好的做法。
在使用 Puppet 和 MySQL 時,我傾向於將 root 密碼放在 /root/.my.cnf 中,鎖定這個文件,然後限制對數據庫伺服器的 SSH 訪問。
是的,以明文形式將 root 密碼儲存在數據庫伺服器上並不是最安全的解決方案。但是,如果您在此文件中寫入 mysql root 密碼,則保護 mysql root 帳戶以僅允許從 localhost 登錄將使密碼不受 puppet 和程序列表
ps
表的影響。此外,如果某人具有讀取 /root/.my.cnf 文件的 root 訪問權限,那麼他們可能也有權停止本地 MySQL 守護程序並在沒有 users 表的情況下重新啟動守護程序以立即獲得對數據庫的 root 訪問權限。