Le Blog Amazon Web Services

Sécuriser les données dans Amazon RDS en utilisant le chiffrement avec AWS KMS

La confidentialité des données est indispensable à toute organisation, quel que soit le secteur. Les services de chiffrement offrent une méthode standard de protection des données contre les accès non-autorisés. Le chiffrement modifie les données de façon à les rendre illisibles si on ne possède pas la clé de chiffrement correspondante.

Par défaut, Amazon RDS chiffre les données en utilisant des clés détenues par AWS. Cependant, certains clients préfèrent chiffrer leurs données en utilisant des clés autres que celles utilisées par défaut. Lorsque l’on utilise ces dernières, il est important de penser aux outils et des processus permettant la création, la gestion et la suppression des clés pour assurer la sécurité de ces données. Ces outils et processus doivent également permettre d’éviter que l’expiration des clés n’affecte pas la disponibilité des données.

Dans cet article, nous expliquons comment AWS KMS simplifie le chiffrement des données et les processus de gestion des clés pour les données stockées dans Amazon RDS. Les principaux domaines abordés sont les suivants :

  • Gestion des clés,
  • Création de clés,
  • Création de bases de données chiffrées,
  • Création et copie d’instantanés de bases de données chiffrées,
  • Rotation des clés,
  • Contrôle de l’accès aux clés.

Introduction à AWS KMS

AWS KMS est un service AWS qui facilite la création, la gestion et l’utilisation de clefs cryptographiques. L’utilisation de ces clefs permet le chiffrement de données stockées par d’autres services, tel que Amazon RDS. Les autorisations d’utilisation des clés s’intègrent complètement avec AWS IAM. En outre, tous les appels d’API d’AWS KMS sont enregistrés dans AWS CloudTrail, ce qui permet d’avoir la traçabilité de la création, de l’utilisation et de la suppression des clés. AWS KMS permet l’utilisation d’une clé principale client (CMK, Customer Master Key) de 256 bits et utilise le standard Advanced Encryption Standard (AES) en mode Galois/Counter (GCM). Pour en savoir plus, consultez les détails cryptographiques du service AWS Key Management Service (Livre blanc PDF en anglais).

Bien que Amazon RDS prenne en charge tous les types de clés, le tableau suivant présente les trois types principaux de clés principales client (CMK, Customer Master Key) utilisées dans KMS. Pour plus d’informations, consultez les concepts du service AWS Key Management Service.

Type de clé CMK Peut afficher les métadonnées de clé CMK Peut gérer la clé CMK Utilisé uniquement pour mon compte AWS
Clé CMK gérée par le client Oui Oui Oui
Clé CMK gérée par AWS Oui Non Oui
Clé CMK détenue par AWS Non Non Non

Les clés CMK détenues par AWS existent en dehors de votre compte AWS et font partie d’un ensemble de clés principales client qu’AWS possède et gère.

AWS est responsable de la création et de la gestion complète des clés CMK gérées par AWS. Les clés CMK gérées par le client sont des clés CMK dans votre compte AWS que vous créez, possédez et gérez.

L’origine des éléments de clé utilisée pour chiffrer et déchiffrer les données avec une clé CMK géré par le client peut provenir de sources différentes, comme indiqué dans le tableau qui suit.

Type de clé CMK gérée par le client Éléments des clés fournis par
Interne avec KMS (par défaut) AWS KMS
Externe Vous (en utilisant une source externe, par exemple, HSM ou OpenSSL)
Magasin de clés personnalisé (AW CloudHSM) Vous (en utilisant AWS CloudHSM)

Le magasin de clés personnalisé doit également être fourni par un HSM, voir l’article consacré à ce sujet. Pour plus d’informations, consultez Présentation d’AWS Key Management Service (KMS) Custom Key Store.

Création de clés

Pour chiffrer une base de données, vous devez indiquer une clé AWS KMS lors de la création du cluster de la base de données. Cette clé permet de chiffrer toutes les données stockées sur le(s) volume(s) utilisé(s) par Amazon RDS. Une fois les données chiffrées, elles deviennent inaccessibles sans autorisation d’accès à la clé AWS KMS. Les tentatives de restauration d’un instantané/snapshot Amazon RDS ou de démarrage d’une instance Amazon RDS arrêtée ne peuvent pas être effectuées sans cette autorisation.

Ouvrez la console Amazon RDS et créez un cluster de base de données. Assurez-vous de sélectionner la clé AWS KMS créée dans l’étape précédente. Pour des informations plus détaillées sur ce processus, consultez Chiffrement des ressources Amazon RDS.

Instantanés/Snapshots chiffrés de la base de données

Tous les instantanés/snapshots de base de données que vous créez à partir d’une instance Amazon RDS chiffrée conservent leur chiffrement, en partageant la même clé AWS KMS. Vous pouvez construire une nouvelle base de données à partir d’un tel instantané/snapshot, mais seulement si vous avez accès à la clé AWS KMS utilisée pour chiffrer l’instantané/snapshot de la base de données originale.

Création de instantanés/snapshots Amazon RDS

Pour créer un instantané/snapshot Amazon RDS, sélectionnez l’instance du cluster de base de données, et choisissez Actions, Prendre un instantané.

Copier des instantanés/snapshots RDS chiffrés vers d’autres régions AWS

Après avoir créé des instantanés/snapshots Amazon RDS, vous pouvez copier des instantanés/snapshots Amazon RDS chiffrés vers d’autres régions AWS en suivant les étapes décrites dans cette section. Les clés AWS KMS sont des constructions régionales. Ainsi, pour copier un instantané/snapshot dans une autre région, vous devez d’abord créer une clé AWS KMS dans la région de destination. Utilisez ensuite cette nouvelle clé pour chiffrer le snapshot dans la région de destination.

  1. Tout d’abord, choisissez votre région de destination et créez une clé dans cette région en utilisant la même procédure décrite précédemment. Notez les valeurs de l’ID de clé et du nom d’alias pour la nouvelle clé créée,
  2. Ouvrez la console Amazon RDS dans la région où l’instantané/snapshot Amazon RDS se trouve actuellement,
  3. Choisissez Instantanés et sélectionnez l’instantané/snapshot Amazon RDS à copier. Choisissez Actions, Copier un instantané,
  4. Sélectionnez la région de destination et donnez à l’instantané/snapshot un identifiant. Copiez toutes les balises pour les aligner avec votre stratégie d’identification,
  5. Sous Activer le chiffrement, sélectionnez la nouvelle clé dans la région de destination, et choisissez Copier un instantané.

Utilisez le script bash suivant pour copier automatiquement les instantanés/snapshots des clusters de base de données dans différentes régions à intervalles réguliers. Cette pratique peut être utile à des fins de test ou dans le cadre d’une solution de récupération après sinistre (“Disaster Recory”)

Pour utiliser ce script, copiez et collez le texte dans un fichier local et modifiez les variables en haut pour les adapter à votre environnement. Assurez vous également de modifier les permissions du fichier local pour y inclure le droit d’exécution. Enfin, configurez votre AWS CLI avec un utilisateur ou un rôle AWS IAM approprié, puis exécutez le script.


#!/bin/bash

# Ajuster les valeurs de ces variables
DBINSTANCE=rds-demo-cluster
SRC_AWS_ACCOUNT=111111111111
SRC_AWS_REGION=eu-west-1
DEST_AWS_REGION=eu-central-1
DEST_KMS_KEYID=1111111-2222-3333-4444444444444444

# -------------------------------------------
# Ne modifiez rien d'autre après cette ligne
# -------------------------------------------
DATESR=$(date "+%Y%m%d%H%m")

# Création dynamique d'un identifiant pour l'instantané basé sur la date
SNAPSHOTNAME=$DBINSTANCE-snapshot-$DATESR

# Création d'un Arn pour l'instantané
SRCSNAPSHOTID=arn:aws:rds:$SRC_AWS_REGION:$SRC_AWS_ACCOUNT:cluster-snapshot:$SNAPSHOTNAME

echo "Creating snapshot for DB Instance: $DBINSTANCE"
aws rds create-db-cluster-snapshot \
--db-cluster-identifier $DBINSTANCE \
--db-cluster-snapshot-identifier $SNAPSHOTNAME \
--region $SRC_AWS_REGION

echo "Waiting for cluster snapshot $SNAPSHOTNAME to be available"
while STATUS=$(aws rds describe-db-cluster-snapshots --region $SRC_AWS_REGION --query "DBClusterSnapshots[?DBClusterSnapshotIdentifier=='$SNAPSHOTNAME'].Status" --output text); test "$STATUS" != "available"; do sleep 1 && echo "State: $STATUS"; done;
echo "State: $STATUS"

echo "Copying DB Snapshot...this may take a while depending on the size of the snapshot"
aws rds copy-db-cluster-snapshot \
--source-db-cluster-snapshot-identifier $SRCSNAPSHOTID \
--target-db-cluster-snapshot-identifier $SNAPSHOTNAME \
--source-region $SRC_AWS_REGION \
--kms-key-id $DEST_KMS_KEYID \
--region $DEST_AWS_REGION

Rotation des clés dans AWS KMS

La rotation des clés est souvent utilisée pour limiter l’impact d’une éventuel compromission des clés. Si vos clés CMK utilisent des clés provenant d’AWS KMS, vous pouvez choisir qu’AWS effectue une rotation automatique de vos clés CMK chaque année. Vous pouvez opter pour une rotation annuelle automatique soit pendant la création de la clé, soit après la création de la clé par AWS KMS. Consultez Activation et désactivation de la rotation automatique des clés pour plus d’informations. Pour des informations plus détaillées sur la rotation des clés AWS KMS, consultez Rotation des clés principales client.

Si vous avez obtenu les éléments de clé originaux à partir de votre module de sécurité matériel (HSM, Hardware Security Module) ou d’une autre source externe, vous devez faire une rotation manuelle de votre clé CMK. Pour Amazon RDS, vous pouvez créer une nouvelle instance ou un nouveau cluster Amazon RDS à partir d’une copie d’instantané/snapshot rechiffrée en suivant la procédure suivante :

  1. Créez une nouvelle clé CMK en suivant la procédure décrite précédemment,
  2. Créez un instantané/snapshot de votre instance ou cluster existant en utilisant la procédure décrite précédemment dans cet article. Si vous disposez d’un instantané récent, vous pouvez sauter cette étape,
  3. Créez une copie de l’instantané/snapshot en suivant la procédure décrite précédemment. Cependant, vous pouvez également rechiffrer la nouvelle copie du snapshot avec la nouvelle clé CMK en sélectionnant la nouvelle clé dans le champ Activer le chiffrement,
  4. Sélectionnez la nouvelle copie du snapshot et choisissez Actions, Restaurer l’instantané.
  5. Suivez le déroulement des opérations en ligne pour créer une nouvelle instance ou un nouveau cluster Amazon RDS. Les données sont chiffrées à l’aide de la nouvelle clé CMK. Pour vous guider, suivez la procédure de création d’une nouvelle instance ou d’un nouveau cluster décrite précédemment.

Une fois la procédure de rotation manuelle des clés terminée, vous pouvez supprimer l’ancienne instance Amazon RDS et planifier la suppression de la clé CMK précédente. Cependant, notez qu’une éventuelle interruption de service peut se produire si d’autres ressources utilisent l’ancienne clé CMK. Vous pouvez suivre l’utilisation des clés dans AWS KMS en utilisant AWS CloudTrail.

Notez également que si vous avez besoin de pouvoir restaurer à partir d’une sauvegarde, d’un instantané/snapshot ou de journaux de restauration ponctuelle qui ont été chiffrés avant la rotation de la clé, l’ancienne clé CMK ne doit pas être supprimée. En effet, la clé est nécessaire pour déchiffrer la sauvegarde, le snapshot ou les journaux précédents à la création de la nouvelle clé. Ceci n’est nécessaire que lors de la rotation manuelle des clés et n’est pas requis si la rotation automatique des clés est activée.

Contrôle de l’accès aux clés AWS KMS

Vous gérez l’accès aux ressources chiffrées dans AWS en contrôlant l’accès aux clés AWS KMS respectivement utilisées dans le processus de chiffrement. Pour plus d’informations, consultez Gestion de l’accès aux clés CMK AWS KMS.

Vous pouvez révoquer l’accès à une clé AWS KMS, et en conséquence révoquer l’accès à toutes les ressources AWS chiffrées à l’aide de cette clé, en utilisant l’une des méthodes suivantes :

  • Désactivez la clé AWS KMS. Cette procédure est réversible car la clé peut être activée ultérieurement.
  • Supprimez la clé AWS KMS. Cette procédure programme la suppression de la clé mais ne la supprime pas immédiatement. Vous spécifiez une période de suppression comprise entre sept et trente jours et vous pouvez annuler la suppression de la clé à tout moment pendant la période de suppression spécifiée. Après cette période, la suppression est permanente. Attention : Vous ne pouvez pas récupérer des données chiffrées à l’aide d’une clé supprimée.
  • Supprimer les éléments de clé provenant de sources externes. Si vous utilisez des éléments de clé provenant de sources externes, vous pouvez les supprimer. La suppression désactive la clé en question. Cette opération est réversible en réimportant les éléments de clé. Cette option offre un degré élevé de confiance dans l’impossibilité d’accéder aux données tout en vous permettant de rétablir l’accès à une date ultérieure.

Si une clé AWS KMS devient indisponible pour Amazon RDS pendant une certaine période, soit par la révocation de l’accès à la clé en utilisant l’une des méthodes décrites précédemment, soit si une date d’expiration configurée pour la clé est atteinte, l’instance Amazon RDS peut signaler une erreur du type inaccessible-encryption-credentials et devenir inaccessible. Cela peut se produire si la clé AWS KMS n’est pas disponible et que l’hôte Amazon EC2 sous-jacent change pour une raison quelconque, si Amazon RDS tente de sauvegarder les journaux pour prendre en charge une future restauration ponctuelle, ou si les sauvegardes automatiques sont activées.

Pour récupérer un état en erreur de type inaccessible-encryption-credentials, l’instance Amazon RDS doit être restaurée à partir d’une sauvegarde ou d’un instantané/snapshot dans le passé. Cependant, la clé AWS KMS originale doit être disponible pour que la restauration s’effectue avec succès. Cela est dû au fait que la sauvegarde et les journaux sont chiffrés en utilisant la même clé AWS KMS que celle qui a été utilisée pour chiffrer la base de données originale. Par conséquent, la sauvegarde et les journaux doivent être déchiffrés en utilisant la même clé AWS KMS pendant la procédure de restauration ou de récupération ponctuelle.

Audit de l’utilisation et du cycle de vie des clés AWS KMS

Pour assurer la continuité des meilleures pratiques de sécurité, vous pouvez surveiller la création, l’utilisation, la modification et la suppression des clés AWS KMS utilisées pour chiffrer les données dans votre organisation. Comme toutes les opérations d’AWS KMS sont réalisées à partir des appels d’API, vous pouvez les surveiller en utilisant AWS CloudTrail. Pour plus d’informations, consultez Journalisation des appels d’API AWS KMS avec AWS CloudTrail.

Synthèse

Dans cet article, nous avons vu comment utiliser AWS KMS pour protéger les données stockées dans les bases de données Amazon RDS. Nous avons décrit comment créer des clés et chiffrer des données dans des instances ou des clusters Amazon RDS. Nous avons également expliqué comment créer des instantanés/snapshots Amazon RDS chiffrés et comment copier ces instantanés vers d’autres régions AWS. Finalement, nous avons expliqué comment faire la rotation des clés, contrôler l’accès aux clés dans AWS KMS, et auditer les activités liées à l’utilisation de AWS KMS dans AWS.

Vous pouvez désormais appliquer des techniques de protection des données dans Amazon RDS pour sécuriser vos données conformément à la politique de protection des données de votre organisation. Pour plus d’informations, consultez Chiffrement des ressources Amazon RDS.

Les concepts et méthodes décrits dans cet article s’appliquent également à la protection des données dans de nombreux autres services AWS, tels que volumes Amazon EBS attachés aux instances Amazon EC2, Amazon S3, Amazon Redshift, et de nombreux autres.

Article original rédigé en anglais par Nicholas Ansell, Principal Consultant dans l’équipe AWS Professional Services, et traduit par Bruno Medeiros de Barros, Solutions Architect dans l’équipe AWS France, LinkedIn.