Linux

在 Puppet 中,我將如何保護密碼變數(在本例中為 MySQL 密碼)?

  • June 26, 2016

我正在使用 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 訪問權限。

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