Le chiffrement des sauvegardes protège vos fichiers de sauvegarde ApsaraDB RDS for MySQL au repos. Le processus de chiffrement est géré par l'utilitaire Percona XtraBackup, sans nécessiter de modification de vos applications. Lors d'une restauration des données depuis la console ApsaraDB RDS, le backend déchiffre automatiquement la sauvegarde. Si vous téléchargez un fichier de sauvegarde vers un environnement auto-géré, vous devez le déchiffrer manuellement avant la restauration.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance RDS exécutant MySQL 8.0, MySQL 5.7 ou MySQL 5.6
Une instance RDS utilisant l'édition Haute disponibilité (High-availability Edition)
Une instance RDS utilisant des disques SSD locaux Premium (Premium Local SSDs)
Le service Key Management Service (KMS) activé. Pour plus de détails, consultez Acheter une instance KMS dédiée
Fonctionnement
KMS crée et gère la clé de chiffrement. ApsaraDB RDS ne fournit ni clés ni certificats. Lorsque vous activez le chiffrement des sauvegardes, vous choisissez l'un des deux types de clés suivants :
| Type de clé | description | Cas d'utilisation |
|---|---|---|
| Automatically generated key | Alibaba Cloud génère et gère la clé. | Choix par défaut pour la plupart des cas d'utilisation. |
| Clé personnalisée (CMK) | Une clé que vous créez et contrôlez dans KMS. | À utiliser lorsque votre organisation exige un contrôle total sur le cycle de vie de la clé, y compris les plannings de rotation, les politiques d'accès et la possibilité de révoquer l'accès en désactivant la clé. Requis pour les scénarios de conformité impliquant la séparation des rôles de gardien de clé. |
Pour utiliser une clé personnalisée, ApsaraDB RDS crée un rôle lié au service (backupencryption.rds.aliyuncs.com) afin de récupérer les métadonnées de la clé depuis KMS. La console affiche ensuite les clés personnalisées disponibles ainsi que leurs détails de chiffrement.
Limitations
Le chiffrement des sauvegardes ne peut pas être désactivé une fois activé.
La clé de chiffrement ne peut pas être modifiée après sa sélection.
Seuls les fichiers de sauvegarde créés après l'activation de la fonctionnalité sont chiffrés. Les fichiers de sauvegarde existants restent non chiffrés.
Si une clé personnalisée devient indisponible (désactivée, programmée pour suppression ou si son matériel de clé est supprimé), toute opération dépendant d'une sauvegarde chiffrée avec cette clé échouera. Cela inclut la restauration des données et les opérations d'O&M, ce qui peut réduire la disponibilité de l'instance.
Autorisations requises pour les clés personnalisées
Si vous utilisez une clé personnalisée, votre compte Alibaba Cloud ou utilisateur RAM doit disposer 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:*:*:*"
]
}
]
}
Pour accorder ces permissions à un utilisateur RAM, consultez Autoriser un utilisateur RAM à gérer les instances ApsaraDB RDS.
Activer le chiffrement des sauvegardes
Accédez à la page Instances. Dans la barre de navigation supérieure, sélectionnez la région où se trouve votre instance RDS, puis cliquez sur l'ID de l'instance.
Dans le volet de navigation de gauche, cliquez sur Backup and Restoration.
Cliquez sur l'onglet Backup Strategy.
Dans la section Backup Encryption Settings, cliquez sur Edit et activez Backup Encryption Status.
-
Dans la boîte de dialogue Backup Set Encryption Information, sélectionnez une option pour Backup Master Key et cliquez sur OK :
Use Automatically Generated Key — Alibaba Cloud génère la clé.
Use Existing Custom Key — utilise une clé que vous avez créée dans KMS. Si aucune clé n'existe encore, créez-en une au préalable. Pour plus de détails, consultez Créer une CMK.
RemarqueS'il s'agit de votre première utilisation d'une clé KMS personnalisée, suivez les invites d'autorisation à l'écran pour accorder les permissions requises.
Une fois la fonctionnalité activée, tous les nouveaux fichiers de sauvegarde sont chiffrés. Les opérations de restauration dans la console ApsaraDB RDS ne nécessitent pas de déchiffrement manuel, car le backend s'en charge automatiquement. Pour les téléchargements vers un environnement auto-géré, suivez les étapes décrites dans la section Déchiffrer les fichiers de sauvegarde.
Déchiffrer les fichiers de sauvegarde
Cette section explique comment déchiffrer les fichiers de sauvegarde sur Ubuntu 16.04.
Prérequis
Avant de commencer, installez les outils suivants :
Percona XtraBackup — installez la version 2,4 ou la version 8,0 pour correspondre à votre version de MySQL.
-
qpress — exécutez les commandes suivantes pour l'installation :
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 3
Étape 1 : Obtenir le texte chiffré et l'algorithme de chiffrement
Accédez à la page Instances. Sélectionnez votre région et cliquez sur l'ID de l'instance.
Dans le volet de navigation de gauche, cliquez sur Backup and Restoration.
Cliquez sur l'onglet Base Backups, puis sur l'onglet Data Backup.
Dans la colonne Actions du jeu de sauvegarde, cliquez sur l'icône
et sélectionnez View Encryption Information.Notez les valeurs ciphertext et encryption algorithm ; vous en aurez besoin lors des étapes suivantes.
Étape 2 : Déduire le mot de passe de déchiffrement
Appelez l'API KMS Decrypt en définissant CiphertextBlob sur le texte chiffré obtenu à l'étape 1. L'API renvoie une valeur Plaintext , qui correspond à une chaîne binaire encodée en Base64.

Décodez Plaintext pour obtenir le mot de passe de déchiffrement :
-
Créez un script Python :
vi decrypt.py -
Appuyez sur
ipour passer en mode insertion, collez le code suivant, puis appuyez surEscet tapez:wqpour enregistrer :import base64 import binascii plaintext = 'S14dTbl6i4Qo**********' # Replace with the Plaintext value from the KMS API response. password = binascii.b2a_hex(base64.b64decode(plaintext)) # Derive the decryption password. print(str(password, 'utf-8')) # Print the password. -
Exécutez le script :
python decrypt.pyLe mot de passe s'affiche à l'écran. Exemple :
4b5e1d4db97a********************
Étape 3 : Télécharger et déchiffrer les données de sauvegarde
Téléchargez le fichier de sauvegarde sur votre machine locale. Pour plus de détails, consultez Restaurer les données d'une instance ApsaraDB RDS for MySQL depuis un fichier de sauvegarde physique vers une base de données MySQL auto-gérée.
-
Créez un répertoire pour stocker les données de sauvegarde :
mkdir /home/mysql/data -
Décompressez le package de sauvegarde. La commande dépend de l'extension du fichier :
Type de fichier Commande de décompression .tar.gztar -izxvf test1.tar.gz -C /home/mysql/data.xb.gz`gzip -d -c test1.xb.gzxbstream -x -v -C /home/mysql/data`
_qp.xbVoir les commandes ci-dessous _xb.qp`qpress -do test1_xb.qpxbstream -x -v -C /home/mysql/data`
Pour les fichiers _qp.xb, exécutez les deux commandes suivantes dans l'ordre :
# Extract the backup stream cat test1_qp.xb | xbstream -x -v -C /home/mysql/data # Decompress the extracted files # For MySQL 5.6 or MySQL 5.7: innobackupex --decompress --remove-original /home/mysql/data # For MySQL 8.0: xtrabackup --decompress --remove-original --target-dir=/home/mysql/dataAprès la décompression, tous les fichiers de données portent le suffixe
.xbcrypt, indiquant qu'ils sont chiffrés.
-
Déchiffrez les données de sauvegarde :
xtrabackup --decompress --remove-original --decrypt=AES256 --encrypt-key=4b5e1d4db97a******************** --target-dir=/home/mysql/dataRemplacez les valeurs des paramètres par les vôtres :
Paramètre description --decryptL'algorithme de chiffrement obtenu à l'étape 1. Dans cet exemple : AES256.--encrypt-keyLe mot de passe déduit à l'étape 2. --target-dirLe répertoire où sont stockés les fichiers de sauvegarde. Une fois la commande terminée, le suffixe .xbcrypt disparaît et les fichiers sont déchiffrés.
