Le chiffrement des sauvegardes utilise Percona XtraBackup pour chiffrer les sauvegardes d'une instance RDS for MySQL. Aucune modification de l'application n'est requise. Pour utiliser une sauvegarde chiffrée, vous devez la télécharger, puis la décompresser et la déchiffrer.
Prérequis
-
Votre instance RDS for MySQL doit répondre aux exigences suivantes :
Version majeure : 8.0, 5,7 ou 5,6
Édition : Édition Haute Disponibilité
Type de stockage : SSD locaux Premium
Contexte
Key Management Service (KMS) génère et gère les clés de chiffrement. RDS ne fournit pas les clés ni les certificats requis pour le chiffrement. Vous pouvez utiliser des clés générées automatiquement par Alibaba Cloud ou vos propres clés personnalisées.
Pour utiliser une clé personnalisée pour le chiffrement des sauvegardes, vous devez d'abord créer un rôle lié au service. RDS utilise ce rôle pour récupérer la liste des clés KMS, leurs propriétés et leurs alias. Cela permet à la console d'afficher la liste des clés de chiffrement disponibles et les informations de chiffrement associées après l'activation du chiffrement des sauvegardes.
Lorsque vous activez le chiffrement des sauvegardes, RDS ajoute un tag à la clé que vous sélectionnez. Le système de sauvegarde utilise ensuite le rôle lié au service et la clé pour chiffrer les sauvegardes.
Considérations
Une fois le chiffrement des sauvegardes activé, il est impossible de le désactiver.
Vous ne pouvez pas modifier la clé après l'activation du chiffrement des sauvegardes.
Le chiffrement des sauvegardes s'applique uniquement aux nouvelles sauvegardes créées après l'activation de la fonctionnalité.
-
Pour restaurer une sauvegarde chiffrée dans un environnement local, vous devez la télécharger, puis déchiffrer les données.
RemarqueSi vous utilisez une sauvegarde pour restaurer des données via la console, vous n'avez pas besoin de la déchiffrer manuellement. Le backend déchiffre automatiquement les données avant de procéder à la restauration.
-
Si vous utilisez une clé personnalisée existante :
Si vous désactivez une clé, planifiez sa suppression ou supprimez son matériel de clé, celle-ci devient indisponible. Par conséquent, les opérations de maintenance et les restaurations qui dépendent de ces sauvegardes échoueront, ce qui pourrait affecter la disponibilité de l'instance.
-
Vous devez utiliser un compte Alibaba Cloud ou un utilisateur RAM disposant des permissions suivantes :
{ "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:*:*:*" ] } ] }RemarqueVous pouvez configurer les permissions et autoriser le compte depuis la console Resource Access Management (RAM). Pour plus d'informations, consultez la rubrique Autoriser un utilisateur RAM à accéder à une instance RDS.
Activer le chiffrement des sauvegardes
Accédez à la page Instances. Dans la barre de navigation supérieure, sélectionnez la région où réside l'instance RDS. Localisez ensuite l'instance RDS et cliquez sur son ID.
Dans le volet de navigation de gauche, cliquez sur Backup Recovery.
Sur la page Backup Recovery, cliquez sur l'onglet Backup Policy.
Dans la section Backup encryption Settings, cliquez sur Edit et activez Backup Encryption Status.
-
Dans la boîte de dialogue Backup encryption Settings, sélectionnez une Backup Master Key et cliquez sur OK.
-
Use Automatically Generated Key
Alibaba Cloud génère automatiquement une clé.
-
Use an Existing Custom Key
Sélectionnez une clé existante depuis Key Management Service (KMS). Si vous n'en avez pas créé, consultez la rubrique Créer une clé.
RemarqueLa première utilisation d'une clé personnalisée nécessite une autorisation. Suivez les instructions affichées à l'écran.
-
Aucun déchiffrement manuel des sauvegardes n'est nécessaire lors de leur utilisation au sein d'Alibaba Cloud. Le système déchiffre automatiquement les données pour les opérations connexes, telles que la restauration des données. Toutefois, si vous téléchargez une sauvegarde chiffrée dans un environnement local, vous devez la déchiffrer manuellement avant de pouvoir l'utiliser. Pour déchiffrer les données, consultez la rubrique Déchiffrer les données.
Déchiffrer les données
Cette section illustre le processus de déchiffrement en prenant pour exemple un système Ubuntu 16.04.
Prérequis
Percona XtraBackup est installé. Sinon, consultez Percona XtraBackup 2.4 (pour les instances MySQL 5.7, 5,6 ou 5,5) ou Percona XtraBackup 8.0 (pour les instances MySQL 8.0).
-
L'outil de décompression qpress est installé. Sinon, exécutez les commandes suivantes pour l'installer.
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 Requiert Python 3.
Procédure
-
Obtenez le texte chiffré et l'algorithme de chiffrement du jeu de sauvegarde.
Accédez à la page RDS Instances, sélectionnez une région dans la barre de navigation supérieure, puis cliquez sur l'ID de l'instance cible.
Dans le volet de navigation de gauche, cliquez sur Backup Recovery.
Sur la page Backup Recovery, accédez à l'onglet Base Backups > Data Backup.
Dans la colonne Action du jeu de sauvegarde cible, cliquez sur
> View Encryption Information pour obtenir le Ciphertext et l'Encryption Algorithm.
-
Appelez l'opération API Decrypt. Dans le paramètre CiphertextBlob, transmettez le Ciphertext obtenu à l'étape Étape 1 afin d'obtenir la chaîne binaire encodée en Base64 Plaintext.
{ "KeyId": "xxx", "KeyVersionId": "xxx", "Plaintext": "S14dTb16i4Qo", "RequestId": "7474865d-f1fc-49c8-bf4d-7323de86ce59" } -
Décodez la chaîne
Plaintexten Base64 et convertissez les octets résultants en hexadécimal pour obtenir la clé de déchiffrement. Cet exemple utilise un script Python 3 pour effectuer cette opération.Exécutez
vi decrypt.pydans l'interface de ligne de commande pour ouvrir l'éditeur vi.-
Appuyez sur
ipour passer en mode insertion. Saisissez le contenu suivant, appuyez surESC, puis entrez:wqpour enregistrer le fichier et quitter.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. -
Exécutez la commande
python decrypt.py. La commande affiche la clé de déchiffrement. Voici un exemple de clé :4b5e1d4db97a********************
-
Téléchargez les données de sauvegarde chiffrées, puis déchiffrez-les.
Télécharger les données de sauvegarde sur une machine locale.
-
Exécutez la commande suivante pour créer un répertoire, par exemple
/home/mysql/data, afin de stocker les données de sauvegarde.mkdir /home/mysql/data -
Décompressez le package. Choisissez une commande de décompression en fonction de l'extension du fichier.
Type de fichier
Commande de décompression
Package tar (.tar.gz)
tar -izxvf test1.tar.gz -C /home/mysql/dataPackage xbstream (.xb.gz)
gzip -d -c test1.xb.gz | xbstream -x -v -C /home/mysql/dataPackage de fichiers xbstream (_qp.xb)
## Décompressez d'abord le fichier. cat test1_qp.xb | xbstream -x -v -C /home/mysql/data ## Ensuite, décompressez le fichier. ### Pour MySQL 5.6/5,7 innobackupex --decompress --remove-original /home/mysql/data ### Pour MySQL 8.0 xtrabackup --decompress --remove-original --target-dir=/home/mysql/dataPackage qpress xbstream (_xb.qp)
qpress -do test1_xb.qp | xbstream -x -v -C /home/mysql/dataAprès la décompression, la plupart des fichiers de données portent l'extension
.xbcrypt, indiquant qu'ils sont chiffrés.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 -
Exécutez la commande suivante pour déchiffrer les données.
xtrabackup --decompress --remove-original --decrypt=AES256 --encrypt-key=4b5e1d4db97a******************** --target-dir=/home/mysql/dataUne fois la commande exécutée, l'extension
.xbcryptdisparaît des noms de fichiers, confirmant que les données sont déchiffrées.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