备份加密是利用备份工具(Xtrabackup)的加密能力对专属集群MyBase for MySQL实例的备份进行加密,以此来提高数据的安全性。
前提条件
- 实例类型为如下之一:
- MyBase MySQL 8.0高可用版(本地SSD盘)
- MyBase MySQL 5.7高可用版(本地SSD盘)
- 购买专属KMS实例。
背景信息
加密使用的密钥由密钥管理服务(KMS)产生和管理,MyBase不提供加密所需的密钥和证书。您不仅可以使用阿里云自动生成的密钥,也可以使用自定义密钥。
如果您需要使用自定义密钥进行备份加密,首先需要创建一个服务关联角色,MyBase服务通过该角色获取KMS密钥列表、密钥属性以及别名后,才能在控制台给您展示加密密钥列表,并且在备份加密之后展示加密的相关信息。
开通加密服务的操作中,MyBase服务会标记您选择的密钥,然后备份系统通过服务关联角色使用密钥进行备份加密。
注意事项
警告 备份加密功能开通后不可关闭。
- 备份加密开通后无法修改密钥。
- 备份加密开通后新增的备份才会加密,存量备份不会加密。
- 备份加密开通后,您如果要恢复数据到本地,请在下载后解密数据。说明 在控制台使用备份直接恢复数据,不需要您手动解密,后端会自动解密后执行恢复操作。
- 使用已有自定义密钥时,需要注意:
- 禁用密钥、设置密钥删除计划或者删除密钥材料都会造成密钥不可用,从而使基于该密钥加密备份的实例运维操作失败,可能会影响实例的可用性。基于该加密备份的恢复操作也会失败。
- 需要使用主账号或者具有如下权限的子账号:
{ "Version": "1", "Statement": [ { "Action": [ "ram:CreateServiceLinkedRole" ], "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "backupencryption.rds.aliyuncs.com" } } }, { "Action": [ "kms:ListResourceTags", "kms:TagResource" ], "Effect": "Allow", "Resource": [ "acs:kms:*:*:*" ] } ] }
开通备份加密
- 登录云数据库专属集群控制台。
- 在页面左上角,选择目标地域。
- 在左侧单击 。
- 找到目标实例,单击操作列的详情。
- 在左侧导航栏中单击备份恢复。
- 单击备份设置页签,在备份加密设置区域,单击备份加密状态的开关。
- 选择加密设置选项,然后单击确认。加密设置说明如下:
- 使用阿里云自动生成的密钥
阿里云自动生成密钥供您使用。
- 使用已有自定义密钥
首次使用自定义密钥需要授权,请根据页面提示进行授权操作。授权成功后,选择一个自定义密钥。如果没有可用的自定义密钥,单击前往创建,创建密钥。具体操作,请参见创建密钥。
说明 开通成功后,新生成的备份就会被加密,在阿里云上使用备份时不需要您手动解密,后端会自动解密后执行相关操作(例如恢复数据),但是如果下载加密的备份到本地,您需要手动解密才能使用。 - 使用阿里云自动生成的密钥
解密数据
本文以Ubuntu 16.04系统为例,演示解密数据的全过程。
前提条件- 系统中已安装Percona XtraBackup。如未安装,请参见Percona XtraBackup 2.4(MySQL 5.7、5.6或5.5实例)或Percona XtraBackup 8.0(MySQL 8.0实例)。
- 系统中已安装qpress解压工具。如未安装,请执行下列命令安装。
wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/183466/cn_zh/1608011575185/qpress-11-linux-x64.tar" tar xvf qpress-11-linux-x64.tar chmod 775 qpress cp qpress /usr/bin
- Python大版本需为Python 3。
操作步骤
- 获取加密备份数据的密文和加密算法。
- 登录云数据库专属集群控制台。
- 在页面左上角,选择目标地域。
- 在左侧单击 。
- 找到目标实例,单击操作列的详情,然后在左侧导航栏中单击备份恢复。
- 单击目标备份集操作列下的 ,即可获取加密备份数据的密文和加密算法。
- 调用Decrypt接口,在CiphertextBlob参数中传入步骤1中获取的密文,获取base64编码的二进制串Plaintext。
- 通过base64对Plaintext进行解码,并将各个二进制转换为对应的十六进制获取解密密码。本文通过Python代码实现这一操作。说明 Python大版本需为Python 3。
- 下载加密备份数据并解密该数据。