我想使用 MySQLDump 使用 cron 作业每周备份数据库。我不想在 shell 脚本中硬编码凭据。MySQL db 版本是 5.1,所以 mysql-config-editor 不可用。我知道选项文件,我可以使用 600 的 linux 文件权限来保护它。有没有办法加密凭据并使它们不可读?
2 回答
有没有办法加密凭据并使它们不可读?
问问自己你想保护文件免受谁的侵害,为什么除了正常的文件权限之外,加密还有帮助。
如果要加密包含密码的文件,则必须确保合法的备份进程可以访问加密密钥,以便它可以从文件中读取密码。然后,您必须确保所有其他进程都无权访问这些密钥。
由于这使事情进一步复杂化,这增加了泄漏的风险,而没有在基本文件系统安全模型之上增加太多安全性。因此,我建议坚持 .my.cnf 文件的正确所有权和文件权限。
进一步阅读:http ://benlog.com/articles/2012/04/30/encryption-is-not-gravy/
我个人每天通过 cron 以 root 身份运行 mysqldump。为了破解这一点,攻击者需要先破坏基本文件系统权限,然后才能访问/root/.my.cnf
(模式为 600,由 root 拥有)。如果攻击者能够做到这一点,他可能也可以直接访问数据库文件,因此加密的密码文件在这里不会有帮助。
只要 ~/.my.cnf 上的模式为 600 并且所有权设置为该系统用户,您还可以设置一个专门的系统用户来运行 mysqldump。
附言。这是我每天在我的机器上运行的 mysql 备份脚本: https ://gist.github.com/timkuijsten/6067107
MySQL 5.6 的最新版本解决了这个问题。您现在可以使用 mysql_config_editor 加密命令行登录的密码