第 10 章备份加密

为了增强备份数据的安全性,MySQL Enterprise Backup 提供了对单个文件备份的加密。在创建部分、压缩或增量单文件备份时,以及将 备份数据流式传输到另一台设备或服务器时,也可以应用加密。

加密是在 CBC 模式下使用高级加密标准 (AES) 块密码执行的,使用用户提供的 64 位十六进制数字的密钥字符串。使用相同的密钥执行解密。密钥可以通过将 64 个随机十六进制字节放在一起来手动创建,也可以 通过为它提供一个关键字短语来由 shasum(或适用于您的平台的哈希计算的类似程序)生成:

$ echo -n "my secret passphrase" | shasum -a 256
a7e845b0854294da9aa743b807cb67b19647c1195ea8120369f3d12c70468f29  -

请注意,末尾的-不是密钥的一部分,应忽略。 使用该选项将密钥提供给mysqlbackup--key,或将密钥粘贴到密钥文件中并 使用该选项将文件的路径名提供给mysqlbackup --key-file

要随机生成密钥,您可以使用 OpenSSL 等工具:

$ openssl rand -hex 32
8f3ca9b850ec6366f4a54feba99f2dc42fa79577158911fe8cd641ffff1e63d6

要将 OpenSSL 生成的密钥放入密钥文件中,您可以执行以下操作:

$ openssl rand  -hex 32 >keyfile
$ cat keyfile
6a1d325e6ef0577f3400b7cd624ae574f5186d0da2eeb946895de418297ed75b

加密功能使用MySQL Enterprise Backup自带的加密格式,也就是说只有使用MySQL Enterprise Backup才能解密。对于类 Unix 操作系统,使用不同的幻数来识别加密和未加密的备份文件。例如,您可以将这些行添加到/etc/magic操作系统的文件中:

0   string  MBackuP\n   MySQL Enterprise Backup backup image
0   string  MebEncR\n   MySQL Enterprise Backup encrypted backup

然后可以使用 文件命令来识别文件类型:

  $ file /backups/image1 /backups/image2
  /backups/image1: MySQL Enterprise Backup backup image
  /backups/image2: MySQL Enterprise Backup encrypted backup

用于加密和解密的命令选项有 --encrypt--decrypt--key--key-file。这些选项可用于备份映像的各种操作。有关详细信息,请参阅 第 20.13 节,“加密选项”

以下是创建加密备份的示例命令:

mysqlbackup --defaults-file=/home/dbadmin/backup.cnf --backup-image=/backups/image.enc --encrypt \
   --key=23D987F3A047B475C900127148F9E0394857983645192874A2B3049570C12A34 \
   --backup-dir=/var/tmp/backup  backup-to-image

要为同一任务使用密钥文件:

mysqlbackup --defaults-file=/home/dbadmin/backup.cnf --backup-image=/backups/image.enc --encrypt
   --key-file=/meb/key  --backup-dir=/var/tmp/backup  backup-to-image

要在提取备份时解密备份:

mysqlbackup --backup-image=/backups/image.enc --decrypt
   --key-file=/meb/key --backup-dir=/backups/extract-dir  extract

要验证加密的备份映像:

mysqlbackup --backup-image=/logs/encimage.bi --decrypt --key-file=/meb/enckey validate