MySQL备份安全加固

125 阅读3分钟

MySQL备份安全加固

Hudson译 原文 如果您曾经使用过MySQL,那么您很可能备份了数据库。如果您备份了数据库,那么您很可能至少想过如何保护它们。在这篇博客文章中,我们将告诉你如何做到这一点。

为什么要对MySQL备份进行安全加固?

在我们告诉您应该如何保护MySQL备份之前,我们可能应该告诉您为什么首先要保护它们。我们所说的“保护”MySQL备份是什么意思?默认情况下,MySQL备份应该是安全的,对吗?不幸的是,并不是所有事情都像看起来那么简单。

要进行并维护安全的MySQL备份,您应该考虑以下事项:

  1. 安全地备份MySQL
  2. 安全地存储MySQL备份
  3. 安全地传输MySQL备份

很明显,说起来容易做起来难,但我们会提供一些一般性的建议,可以指导你走向正确的方向。

保护MySQL备份

1.要通过使用mysqldump等工具安全备份MySQL,请考虑将MySQL用户的用户名和密码放在my.cnf中。你甚至可以创建一个 .my.cnf文件,将用户名和密码存储在主目录中,然后使用 –defaults extra file选项告诉MySQL在全局选项文件之后读取此文件:

  [mysqldump]
  user=demo_user
  password=demo_password

这样,在运行mysqldump时,您就不再需要提供MySQL密码了,只需将您的用户名和密码放在my.cnf中即可。 您的密码对DBA以外的任何人都不可见。

2.考虑使用mysqldump secure 工具:它是一个符合POSIX的mysqldump包装脚本,具有加密功能。该工具可以将数据库备份为单独的文件。还可以将数据库从备份中列入黑名单。该工具还可以加密您的MySQL数据库,它还可以自我验证,即如果出现任何错误,它会告诉您发生了什么以及如何修复它,因此如果您正在寻找mysqldump的替代方案,一定要考虑尝试一下。

3.备份MySQL或MariaDB数据库实例后,考虑对其进行加密。数据很可能是企业最宝贵的资产之一,通过对其加密,您可以确保它得到适当保护。幸运的是,加密MySQL备份并不复杂,可以通过多种方式完成,包括加密本地文件和动态加密备份。要加密备份的本地副本,只需先备份存储在MySQL中的数据,然后使用OpenSSL(将密码替换为要使用的密码)对其进行加密:

 $ openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc -k password

您的备份可以通过运行以下命令进行解密:

$ openssl aes-256-cbc -d -in backup.tar.gz.enc -out backup.tar.gz -k password

您还可以考虑动态加密备份。要做到这一点,通常需要在生成备份时实现加密(即生成备份、压缩并加密)。下面是如何使用mysqldump为MySQL执行此操作(您的备份将称为encrypted_backup.xb.enc):

  mysqldump --all-databases --single-transaction --triggers --routines | gzip | openssl  enc -aes-256-cbc -k password > encrypted_backup.xb.enc

您还可以使用ClusterControl 加密备份:只需在备份的最后阶段选中“Use Compression”和(或)“Enable Encryption”复选框,即可完成备份。是的,就这么简单!

图片

您可能还需要查看一个名为 mysql_secure_installation的shell脚本。该脚本使您能够:

  • 为MySQL的root帐户设置密码。
  • 删除可从localhost外部访问的root帐户。
  • 删除任何匿名用户和可以匿名访问的测试数据库。

小结

当谈到保护MySQL备份的安全时,您可以做的事情列表相当长。我们希望,这篇博客文章为您提供了一些关于如何保护MySQL或MariaDB备份的想法:一般来说,当调用mysqldump时,以及在本地或动态加密备份时,可以通过使密码不可见来保护备份。