A criptografia de backup usa o Percona XtraBackup para criptografar backups de uma instância do RDS for MySQL. Não é necessário alterar a aplicação. Para usar um backup criptografado, baixe-o, descompacte-o e descriptografe-o.
Pré-requisitos
-
Sua instância do RDS for MySQL deve atender aos seguintes requisitos:
Versão principal: 8.0, 5.7 ou 5.6
Edição: High-availability Edition
Tipo de armazenamento: SSDs locais premium
Contexto
O Key Management Service (KMS) gera e gerencia as chaves de criptografia. O RDS não fornece as chaves nem os certificados necessários para a criptografia. Você pode usar chaves geradas automaticamente pela Alibaba Cloud ou suas chaves personalizadas.
Para usar uma chave personalizada na criptografia de backup, crie primeiro uma service-linked role. O RDS usa essa função para recuperar a lista de chaves do KMS, suas propriedades e seus aliases. Assim, o console pode exibir a lista de chaves de criptografia disponíveis e as informações relacionadas após a ativação da criptografia de backup.
Ao ativar a criptografia de backup, o RDS adiciona uma tag à chave selecionada. Em seguida, o sistema de backup usa a service-linked role e a chave para criptografar os backups.
Considerações
Não é possível desativar a criptografia de backup depois de ativada.
Não é possível alterar a chave depois de ativar a criptografia de backup.
A criptografia de backup aplica-se apenas a novos backups criados após a ativação do recurso.
-
Para restaurar um backup criptografado em um ambiente local, baixe-o e decrypt the data.
NotaAo usar um backup para restore data no console, não é necessário descriptografá-lo manualmente. O backend descriptografa e restaura os dados automaticamente.
-
Ao usar uma chave personalizada existente:
Se você desativar uma chave, agendar a exclusão dela ou excluir o material da chave, ela ficará indisponível. Consequentemente, as operações de O&M e as restaurações que dependem desses backups falharão, podendo afetar a disponibilidade da instância.
-
Use uma conta da Alibaba Cloud ou um usuário do RAM com as seguintes permissões:
{ "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:*:*:*" ] } ] }NotaConfigure as permissões e autorize a conta no console do Resource Access Management (RAM). Para mais informações, consulte Authorize a RAM user to access an RDS instance.
Ativar a criptografia de backup
Acesse a página Instances. Na barra de navegação superior, selecione a região onde a instância do RDS está localizada. Em seguida, encontre a instância do RDS e clique no ID dela.
No painel de navegação à esquerda, clique em Backup Recovery.
Na página Backup Recovery, clique na aba Backup Policy.
Na seção Backup encryption Settings, clique em Edit e ative o Backup Encryption Status.
-
Na caixa de diálogo Backup encryption Settings, selecione uma Backup Master Key e clique em OK.
-
Use Automatically Generated Key
A Alibaba Cloud gera a chave automaticamente.
-
Use an Existing Custom Key
Selecione uma chave existente no Key Management Service (KMS). Caso ainda não tenha criado uma, consulte Create a key.
NotaAo usar uma chave personalizada pela primeira vez, é necessário autorizá-la. Siga as instruções na tela.
-
Não é necessário descriptografar os backups manualmente ao usá-los na Alibaba Cloud. O sistema descriptografa os dados automaticamente em operações relacionadas, como a restauração de dados. No entanto, ao baixar um backup criptografado para um ambiente local, você deve descriptografá-lo manualmente antes de usá-lo. Para descriptografar dados, consulte Decrypt data.
Descriptografar dados
Esta seção demonstra o processo de descriptografia com o sistema Ubuntu 16.04 como exemplo.
Pré-requisitos
O Percona XtraBackup deve estar instalado. Caso não esteja, consulte Percona XtraBackup 2.4 (para instâncias MySQL 5.7, 5.6 ou 5.5) ou Percona XtraBackup 8.0 (para instâncias MySQL 8.0).
-
A ferramenta de descompactação qpress deve estar instalada. Caso não esteja, execute os seguintes comandos para instalá-la.
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 O Python 3 é obrigatório.
Procedimento
-
Obtenha o texto cifrado e o algoritmo de criptografia do conjunto de backup.
Acesse a página RDS Instances, selecione uma região na barra de navegação superior e clique no ID da instância de destino.
No painel de navegação à esquerda, clique em Backup Recovery.
Na página Backup Recovery, clique na aba Base Backups > Data Backup.
Na coluna Action do conjunto de backup de destino, clique em
> View Encryption Information para obter o Ciphertext e o Encryption Algorithm.
-
Chame a operação da API Decrypt. No parâmetro CiphertextBlob, passe o Ciphertext obtido em Step 1 para obter a string binária Plaintext codificada em Base64.
{ "KeyId": "xxx", "KeyVersionId": "xxx", "Plaintext": "S14dTb16i4Qo", "RequestId": "7474865d-f1fc-49c8-bf4d-7323de86ce59" } -
Decodifique a string
Plaintextem Base64 e converta os bytes resultantes em hexadecimal para obter a chave de descriptografia. Este exemplo usa um script Python 3 para isso.Execute
vi decrypt.pyna interface de linha de comando para abrir o editor vi.-
Pressione
ipara entrar no modo de inserção. Insira o conteúdo a seguir, pressioneESCe digite:wqpara salvar o arquivo e sair.import base64 import binascii plaintext = 'S14dTbl6i4Qo**********' # Enter the Plaintext that you obtained in the preceding step between the single quotation marks (''). password = binascii.b2a_hex(base64.b64decode(plaintext)) # Obtain the decryption password and assign it to the password variable. print(str(password, 'utf-8')) # Print the password as a string. -
Execute o comando
python decrypt.py. O comando exibe a chave de descriptografia. Veja um exemplo de chave:4b5e1d4db97a********************
-
Baixe os dados de backup criptografados e descriptografe-os.
-
Execute o comando a seguir para criar um diretório, por exemplo,
/home/mysql/data, e armazenar os dados de backup.mkdir /home/mysql/data -
Descompacte o pacote. Escolha o comando de descompactação de acordo com o sufixo do arquivo.
Tipo de arquivo
Comando de descompactação
Pacote tar (.tar.gz)
tar -izxvf test1.tar.gz -C /home/mysql/dataPacote xbstream (.xb.gz)
gzip -d -c test1.xb.gz | xbstream -x -v -C /home/mysql/dataPacote de arquivos xbstream (_qp.xb)
## Unpack the file first. cat test1_qp.xb | xbstream -x -v -C /home/mysql/data ## Then, decompress the file. ### For MySQL 5.6/5.7 innobackupex --decompress --remove-original /home/mysql/data ### For MySQL 8.0 xtrabackup --decompress --remove-original --target-dir=/home/mysql/dataPacote qpress xbstream (_xb.qp)
qpress -do test1_xb.qp | xbstream -x -v -C /home/mysql/dataApós a descompactação, a maioria dos arquivos de dados terá o sufixo
.xbcrypt, o que indica que estão criptografados.backup-my.cnf.xbcrypt testdb dbfortest xtrabackup_binlog_info.xbcrypt ibdata1.xbcrypt xtrabackup_checkpoints mysql xtrabackup_info.xbcrypt performance_schema xtrabackup_logfile.xbcrypt rds_table_info_json_105244.log xtrabackup_slave_filename_info.xbcrypt _recycle_bin_ xtrabackup_slave_info.xbcrypt -
Execute o comando a seguir para descriptografar os dados.
xtrabackup --decompress --remove-original --decrypt=AES256 --encrypt-key=4b5e1d4db97a******************** --target-dir=/home/mysql/dataApós a execução do comando, o sufixo
.xbcrypté removido dos nomes dos arquivos, confirmando que os dados foram descriptografados.backup-my.cnf testdb dbfortest xtrabackup_binlog_info ibdata1 xtrabackup_checkpoints mysql xtrabackup_info performance_schema xtrabackup_logfile rds_table_info_json_105244.log xtrabackup_slave_filename_info recycle_bin xtrabackup_slave_info