Support pour le chiffrement transparent des données sur le SQL serveur - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Support pour le chiffrement transparent des données sur le SQL serveur

Amazon RDS prend en charge l'utilisation de Transparent Data Encryption (TDE) pour chiffrer les données stockées sur vos instances de base de données exécutant Microsoft SQL Server. TDEchiffre automatiquement les données avant leur écriture dans le stockage et déchiffre automatiquement les données lorsqu'elles sont lues depuis le stockage.

Amazon RDS prend en TDE charge les versions et éditions de SQL serveur suivantes :

  • SQLÉditions Server 2022 Standard et Enterprise

  • SQLÉditions Standard et Enterprise de Server 2019

  • SQLServer 2017 Édition Enterprise

  • SQLServer 2016 Édition Enterprise

Transparent Data Encryption for SQL Server permet de gérer les clés de chiffrement en utilisant une architecture de clé à deux niveaux. Un certificat, qui est généré à partir de la clé principale de la base de données, permet de protéger les clés de chiffrement des données. La clé de chiffrement de la base de données exécute le chiffrement et le déchiffrement des données sur la base de données utilisateur. Amazon RDS sauvegarde et gère la clé principale de la base de données et le TDE certificat.

La fonction TDE (Transparent Data Encryption) est utilisée dans les scénarios où vous devez chiffrer des données sensibles. Par exemple, vous pouvez souhaiter fournir des fichiers de données et des sauvegardes à un tiers, ou résoudre des problèmes de conformité réglementaire liés à la sécurité. Vous ne pouvez pas chiffrer les bases de données système pour le SQL serveur, telles que les master bases de données model or.

Ce guide n'a pas vocation à offrir une présentation détaillée du chiffrement TDE, mais assurez-vous de bien comprendre les points forts et les points faibles de chaque algorithme et de chaque clé. Pour plus d'informations sur le chiffrement transparent des données pour le SQL serveur, voir Transparent Data Encryption (TDE) dans la documentation Microsoft.

Activation de TDE for RDS for SQL Server

Pour activer le chiffrement transparent des données RDS pour une instance de base de données pour SQL serveur, spécifiez l'TDEoption dans un groupe d'RDSoptions associé à cette instance de base de données :

  1. Déterminez si votre instance de base de données est déjà associée à un groupe d'options disposant de cette TDE option. Pour afficher le groupe d'options auquel une instance de base de données est associée, utilisez la RDS console, la describe-db-instance AWS CLI commande ou l'APIopération escribeDBInstancesD.

  2. Si l'instance de base de données n'est pas associée à un groupe d'options TDE activé, deux choix s'offrent à vous. Vous pouvez créer un groupe d'options et ajouter l'TDEoption, ou vous pouvez modifier le groupe d'options associé pour l'ajouter.

    Note

    Dans la RDS console, l'option est nomméeTRANSPARENT_DATA_ENCRYPTION. Dans le AWS CLI sable RDSAPI, il est nomméTDE.

    Pour plus d'informations sur la création ou la modification d'un groupe d'options, consultez Utilisation de groupes d'options. Pour de plus amples informations sur l'ajout d'une option à un groupe d'options, veuillez consulter Ajout d'une option à un groupe d'options.

  3. Associez l'instance de base de données au groupe d'options qui possède l'TDEoption. Pour plus d'informations sur l'association d'une instance de base de données à un groupe d'options, consultez Modification d'une instance de base de données Amazon RDS.

Considérations relatives au groupe d'options

Il s'agit d'une option persistante. TDE Vous ne pouvez pas la supprimer d'un groupe d'options tant que toutes les instances de base de données et les sauvegardes sont associées au groupe d'options. Une fois que vous avez ajouté l'TDEoption à un groupe d'options, celui-ci ne peut être associé qu'aux instances de base de données qui utilisentTDE. Pour plus d'informations sur les options persistantes dans un groupe d'options, consultez Présentation des groupes d'options.

Comme il s'agit d'une option persistante, il peut y avoir un conflit entre le groupe d'options et une instance de base de données associée. TDE Un conflit peut se produire dans les cas suivants :

  • Le groupe d'options actuel contient l'TDEoption, et vous le remplacez par un groupe d'options qui n'en possède pas. TDE

  • Vous effectuez une restauration à partir d'un instantané de base de données vers une nouvelle instance de base de données qui ne possède pas de groupe d'options contenant l'TDEoption. Pour plus d'informations sur ce scénario, consultez Considérations relatives au groupe d'options.

SQLConsidérations relatives aux performances du serveur

L'utilisation du chiffrement transparent des données peut affecter les performances d'une instance de base de données de SQL serveur.

Les performances des bases de données non chiffrées peuvent aussi être dégradées si les bases de données se trouvent sur une instance de base de données qui possède au moins une base de données chiffrée. En conséquence, il est recommandé de garder les bases de données chiffrées et les bases de données non chiffrées sur des instances de base de données distinctes.

Chiffrement des données sur le RDS serveur SQL

Lorsque l'TDEoption est ajoutée à un groupe d'options, Amazon RDS génère un certificat qui est utilisé dans le processus de chiffrement. Vous pouvez ensuite utiliser le certificat pour exécuter SQL des instructions qui chiffrent les données d'une base de données sur l'instance de base de données.

L'exemple suivant utilise le certificat RDS -created appelé RDSTDECertificateName pour chiffrer une base de données appelée. myDatabase

---------- Turning on TDE ------------- -- Find an RDS TDE certificate to use USE [master] GO SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%' GO USE [myDatabase] GO -- Create a database encryption key (DEK) using one of the certificates from the previous step CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName] GO -- Turn on encryption for the database ALTER DATABASE [myDatabase] SET ENCRYPTION ON GO -- Verify that the database is encrypted USE [master] GO SELECT name FROM sys.databases WHERE is_encrypted = 1 GO SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO

Le temps nécessaire pour chiffrer une base de données SQL du serveur TDE dépend de plusieurs facteurs. Il s'agit notamment de la taille de l'instance de base de données, de l'utilisation du IOPS stockage provisionné par l'instance, de la quantité de données et d'autres facteurs.

Sauvegarde et restauration TDE des certificats sur RDS for SQL Server

RDSfor SQL Server fournit des procédures stockées pour la sauvegarde, la restauration et la suppression des TDE certificats. RDSfor SQL Server fournit également une fonction permettant de visualiser les TDE certificats utilisateur restaurés.

Les TDE certificats utilisateur sont utilisés pour restaurer les bases de données RDS des SQL serveurs qui sont sur site et qui sont TDE activées. Ces certificats ont le préfixe UserTDECertificate_. Après avoir restauré les bases de données, et avant de les rendre utilisables, RDS modifie les bases de données TDE activées pour utiliser les certificats RDS générésTDE. Ces certificats ont le préfixe RDSTDECertificate.

TDELes certificats utilisateur restent sur l'instance RDS de base de données SQL du serveur, sauf si vous les supprimez à l'aide de la procédure rds_drop_tde_certificate stockée. Pour de plus amples informations, veuillez consulter Supprimer les TDE certificats restaurés.

Vous pouvez utiliser un TDE certificat utilisateur pour restaurer d'autres bases de données à partir de l'instance de base de données source. Les bases de données à restaurer doivent utiliser le même TDE certificat et être TDE activées. Il n'est pas nécessaire d'importer (restaurer) à nouveau le même certificat.

Prérequis

Avant de pouvoir sauvegarder ou restaurer TDE des certificats sur RDS for SQL Server, assurez-vous d'effectuer les tâches suivantes. Les trois premières tâches sont décrites dans Configuration pour les sauvegarde et restauration natives.

  1. Créez des compartiments Amazon S3 pour y stocker les fichiers à sauvegarder et à restaurer.

    Nous vous recommandons d'utiliser des buckets distincts pour les sauvegardes de base de données et pour les sauvegardes de TDE certificats.

  2. Créez un IAM rôle pour la sauvegarde et la restauration de fichiers.

    Le IAM rôle doit être à la fois un utilisateur et un administrateur pour AWS KMS key.

    Outre les autorisations requises pour la sauvegarde et la restauration natives SQL du serveur, le IAM rôle nécessite également les autorisations suivantes :

    • s3:GetBucketACL, s3:GetBucketLocation et s3:ListBucket sur la ressource du compartiment S3

    • s3:ListAllMyBuckets sur la ressource *

  3. Ajoutez l'option SQLSERVER_BACKUP_RESTORE à un groupe d'options sur votre instance de base de données.

    Elle vient s'ajouter à l'option TRANSPARENT_DATA_ENCRYPTION (TDE).

  4. Vérifiez que vous disposez d'une KMS clé de chiffrement symétrique. Vous avez les options suivantes :

    • Si vous avez déjà une KMS clé dans votre compte, vous pouvez l'utiliser. Aucune action supplémentaire n'est nécessaire.

    • Si votre compte ne possède pas de KMS clé de chiffrement symétrique, créez-en une KMS en suivant les instructions de la section Création de clés du guide du AWS Key Management Service développeur.

  5. Activez l'intégration Amazon S3 pour transférer des fichiers entre l'instance de base de données et Amazon S3.

    Pour plus d'informations sur l'activation de l'intégration d'Amazon S3, consultez Intégration d'une instance de base de données Amazon RDS for SQL Server à Amazon S3.

Limites

L'utilisation de procédures stockées pour sauvegarder et restaurer TDE des certificats présente les limites suivantes :

  • Les options SQLSERVER_BACKUP_RESTORE et TRANSPARENT_DATA_ENCRYPTION (TDE) doivent être ajoutées au groupe d'options que vous avez associé à votre instance de base de données.

  • TDEla sauvegarde et la restauration de certificats ne sont pas prises en charge sur les instances de base de données multi-AZ.

  • L'annulation des tâches de sauvegarde et de restauration de TDE certificats n'est pas prise en charge.

  • Vous ne pouvez pas utiliser de TDE certificat utilisateur pour TDE chiffrer une autre base de données sur votre instance de base de données RDS for SQL Server. Vous pouvez l'utiliser pour restaurer uniquement les autres bases de données de l'instance de base de données source qui ont été TDE activées et qui utilisent le même TDE certificat.

  • Vous ne pouvez supprimer que les TDE certificats utilisateur.

  • Le nombre maximum de TDE certificats utilisateur pris en charge sur RDS est de 10. Si le nombre est supérieur à 10, supprimez les TDE certificats non utilisés et réessayez.

  • Le nom de certificat ne peut pas être vide ou null.

  • Lors de la restauration d'un certificat, le nom du certificat ne peut pas inclure le mot-clé RDSTDECERTIFICATE et doit commencer par le préfixe UserTDECertificate_.

  • Le paramètre @certificate_name peut inclure uniquement les caractères suivants : a-z, 0-9, @, $, # et trait de soulignement (_).

  • L'extension de fichier de @certificate_file_s3_arn doit être .cer (insensible à la casse).

  • L'extension de fichier de @private_key_file_s3_arn doit être .pvk (insensible à la casse).

  • Les métadonnées S3 du fichier de clé privée doivent inclure la balise x-amz-meta-rds-tde-pwd. Pour de plus amples informations, veuillez consulter Sauvegarde et restauration des TDE certificats pour les bases de données locales.

Sauvegarde d'un TDE certificat

Pour sauvegarder les TDE certificats, utilisez la procédure rds_backup_tde_certificate stockée. Elle possède la syntaxe suivante.

EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp', @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer', @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk', @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id', [@overwrite_s3_files=0|1];

Les paramètres suivants sont obligatoires :

  • @certificate_name— Le nom du TDE certificat à sauvegarder.

  • @certificate_file_s3_arn— Le nom de ressource Amazon de destination (ARN) pour le fichier de sauvegarde du certificat dans Amazon S3.

  • @private_key_file_s3_arn— La destination S3 ARN du fichier de clé privée qui sécurise le TDE certificat.

  • @kms_password_key_arn— La ARN KMS clé symétrique utilisée pour chiffrer le mot de passe de la clé privée.

Le paramètre suivant est facultatif :

  • @overwrite_s3_files : indique s'il convient de remplacer le certificat existant et les fichiers de clé privée dans S3 :

    • 0 : n'écrase pas les fichiers existants. Cette valeur est celle par défaut.

      Si @overwrite_s3_files est défini sur 0, une erreur est renvoyée si un fichier existe déjà.

    • 1 – Écrase le fichier existant qui possède déjà le nom spécifié, même s'il ne s'agit pas d'un fichier de sauvegarde.

Exemple de la sauvegarde d'un TDE certificat
EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='RDSTDECertificate20211115T185333', @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk', @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE', @overwrite_s3_files=1;

Restaurer un TDE certificat

Vous utilisez la procédure rds_restore_tde_certificate stockée pour restaurer (importer) les TDE certificats utilisateur. Elle possède la syntaxe suivante.

EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_certificate_name', @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer', @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk', @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';

Les paramètres suivants sont obligatoires :

  • @certificate_name— Nom du TDE certificat à restaurer. Le nom doit commencer par le préfixe UserTDECertificate_.

  • @certificate_file_s3_arn— Le S3 ARN du fichier de sauvegarde utilisé pour restaurer le TDE certificat.

  • @private_key_file_s3_arn— Le S3 ARN du fichier de sauvegarde à clé privée du TDE certificat à restaurer.

  • @kms_password_key_arn— La ARN KMS clé symétrique utilisée pour chiffrer le mot de passe de la clé privée.

Exemple de la restauration d'un TDE certificat
EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate', @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk', @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';

Afficher les TDE certificats restaurés

Vous utilisez cette rds_fn_list_user_tde_certificates fonction pour afficher les TDE certificats utilisateur restaurés (importés). Elle possède la syntaxe suivante.

SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();

La sortie se présente comme suit : Les colonnes ne sont pas toutes affichées ici.

name certificate_id principal_id pvt_key_encryption_type_desc issuer_name cert_serial_number thumbprint subject start_date expiry_date pvt_key_last_backup_date
UserTDECertificate_tde_cert 343 1 ENCRYPTED_BY_MASTER_KEY AnyCompany Shipping 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af 0x6BB218B34110388680B FE1BA2D86C695096485B5 AnyCompany Shipping 2022-04-05 19:49:45.0000000 2023-04-05 19:49:45.0000000 NULL

Supprimer les TDE certificats restaurés

Pour supprimer les TDE certificats utilisateur restaurés (importés) que vous n'utilisez pas, utilisez la procédure rds_drop_tde_certificate stockée. Elle possède la syntaxe suivante.

EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';

Les paramètres suivants sont obligatoires :

  • @certificate_name— Le nom du TDE certificat à supprimer.

Vous ne pouvez supprimer que les TDE certificats restaurés (importés). Vous ne pouvez pas supprimer les certificats RDS créés.

Exemple de la suppression d'un TDE certificat
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';

Sauvegarde et restauration des TDE certificats pour les bases de données locales

Vous pouvez sauvegarder les TDE certificats des bases de données locales, puis les restaurer RDS ultérieurement sur SQL Server. Vous pouvez également restaurer un TDE certificat RDS for SQL Server sur une instance de base de données sur site.

La procédure suivante sauvegarde un TDE certificat et une clé privée. La clé privée est chiffrée à l'aide d'une clé de données générée à partir de votre KMS clé de chiffrement symétrique.

Pour sauvegarder un certificat sur site TDE
  1. Générez la clé de données à l'aide de la AWS CLI generate-data-keycommande.

    aws kms generate-data-key \ --key-id my_KMS_key_ID \ --key-spec AES_256

    La sortie se présente comme suit :

    { "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ 2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==", "Plaintext": "U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=", "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33" }

    Vous utilisez la sortie en texte brut à l'étape suivante comme mot de passe de clé privée.

  2. Sauvegardez votre TDE certificat comme indiqué dans l'exemple suivant.

    BACKUP CERTIFICATE myOnPremTDEcertificate TO FILE = 'D:\tde-cert-backup.cer' WITH PRIVATE KEY ( FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key.pvk', ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=');
  3. Enregistrez le fichier de sauvegarde de certificat dans votre compartiment de certificat Amazon S3.

  4. Enregistrez le fichier de sauvegarde de clé privée dans votre compartiment de certificat S3, avec la balise suivante dans les métadonnées du fichier :

    • Clé : x-amz-meta-rds-tde-pwd

    • Valeur : valeur CiphertextBlob issue de la génération de la clé de données, comme dans l'exemple suivant.

      AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ 2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==

La procédure suivante restaure un TDE certificat RDS for SQL Server sur une instance de base de données sur site. Vous copiez et restaurez le TDE certificat sur votre instance de base de données de destination à l'aide de la sauvegarde du certificat, du fichier de clé privée et de la clé de données correspondants. Le certificat restauré est chiffré par la clé principale de base de données du nouveau serveur.

Pour restaurer un TDE certificat
  1. Copiez le fichier de sauvegarde du TDE certificat et le fichier de clé privée depuis Amazon S3 vers l'instance de destination. Pour plus d'informations sur la copie de fichiers depuis Amazon S3, consultez Transfert de fichiers entre RDS for SQL Server et Amazon S3.

  2. Utilisez votre KMS clé pour déchiffrer le texte chiffré de sortie afin de récupérer le texte brut de la clé de données. Le texte chiffré se trouve dans les métadonnées S3 du fichier de sauvegarde de la clé privée.

    aws kms decrypt \ --key-id my_KMS_key_ID \ --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \ --output text \ --query Plaintext

    Vous utilisez la sortie en texte brut à l'étape suivante comme mot de passe de clé privée.

  3. Utilisez la SQL commande suivante pour restaurer votre TDE certificat.

    CREATE CERTIFICATE myOnPremTDEcertificate FROM FILE='D:\tde-cert-backup.cer' WITH PRIVATE KEY (FILE = N'D:\tde-cert-key.pvk', DECRYPTION BY PASSWORD = 'plain_text_output');

Pour plus d'informations sur le KMS déchiffrement, voir déchiffrer dans la KMS section du manuel de référence des AWS CLI commandes.

Une fois le TDE certificat restauré sur l'instance de base de données de destination, vous pouvez restaurer les bases de données chiffrées avec ce certificat.

Note

Vous pouvez utiliser le même TDE certificat pour chiffrer plusieurs bases de données de SQL serveur sur l'instance de base de données source. Pour migrer plusieurs bases de données vers une instance de destination, copiez le TDE certificat qui leur est associé sur l'instance de destination une seule fois.

Désactiver TDE RDS pour le SQL serveur

TDEPour désactiver une instance de base de données RDS for SQL Server, assurez-vous d'abord qu'il ne reste aucun objet chiffré sur l'instance de base de données. Pour ce faire, déchiffrez les objets ou supprimez-les. Si des objets chiffrés existent sur l'instance de base de données, vous ne pouvez pas désactiver l'instance TDE de base de données. Lorsque vous utilisez la console pour supprimer l'TDEoption d'un groupe d'options, la console indique qu'elle est en cours de traitement. En outre, un événement d'erreur est créé si le groupe d'options est associé à une instance de base de données ou un instantané de bases de données chiffré.

L'exemple suivant supprime le TDE chiffrement d'une base de données appeléecustomerDatabase.

------------- Removing TDE ---------------- USE [customerDatabase] GO -- Turn off encryption of the database ALTER DATABASE [customerDatabase] SET ENCRYPTION OFF GO -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO -- Drop the DEK used for encryption DROP DATABASE ENCRYPTION KEY GO -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated USE [master] GO ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE GO

Lorsque tous les objets sont déchiffrés, vous disposez de deux options :

  1. Vous pouvez modifier l'instance de base de données à associer à un groupe d'options sans l'TDEoption.

  2. Vous pouvez supprimer l'TDEoption du groupe d'options.