Bel*_*dez 13 mysql linux puppet best-practices
我正在使用 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'],
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何保护$password?目前,我从节点定义文件中删除了默认的puppet全局可读权限,并通过 ACL明确授予了读取权限。
我假设其他人也遇到过类似的情况,所以也许有更好的做法。
当使用 Puppet 和 MySQL 时,我倾向于将 root 密码放在 /root/.my.cnf 中,锁定该文件,然后限制对数据库服务器的 SSH 访问。
是的,以明文形式将 root 密码存储在数据库服务器上并不是最安全的解决方案。但是,如果您在此文件中写入 mysql root 密码,则保护 mysql root 帐户以仅允许从本地主机登录将使密码远离 puppet,并且也远离进程列表ps。
此外,如果某人具有 root 访问权限来读取 /root/.my.cnf 处的文件,那么他们可能还具有停止本地 MySQL 守护程序并重新启动守护程序的权限,而无需用户表来立即获得对数据库的 root 访问权限。