Partager via


Utiliser le chiffrement transparent des données sur SQL Managed Instance dotée d’Azure Arc pour chiffrer une base de données

Cet article explique comment activer le chiffrement transparent des données sur une base de données créée dans une instance gérée SQL Managed Instance dotée d’Azure Arc. Dans cet article, le terme instance gérée fait référence à un déploiement de SQL Managed Instance doté d’Azure Arc.

Prérequis

Avant de poursuivre la lecture de cet article, vous devez disposer d’une instance gérée SQL Managed Instance dotée d’une ressource Azure Arc et vous y connecter.

Activer le chiffrement transparent des données sur une base de données dans l’instance managée

L’activation du chiffrement transparent des données dans l’instance managée suit les mêmes étapes que pour SQL Server local. Effectuez les étapes décrites dans le guide de chiffrement transparent des données de SQL Server.

Après avoir créé les informations d’identification nécessaires, sauvegardez les nouvelles informations d’identification.

Sauvegarder de nouvelles informations d’identification de chiffrement transparent des données

Quand vous sauvegardez des informations d’identification provenant de l’instance managée, ces informations d’identification sont stockées dans le conteneur. Pour stocker les informations d’identification sur un volume persistant, spécifiez le chemin de montage dans le conteneur. Par exemple : var/opt/mssql/data. L’exemple suivant sauvegarde un certificat provenant de l’instance managée :

Remarque

Si la commande kubectl cp est exécutée à partir de Windows, elle peut échouer quand des chemins Windows absolus sont utilisés. Utilisez des chemins relatifs ou les commandes spécifiées ci-dessous.

  1. Sauvegardez le certificat du conteneur dans /var/opt/mssql/data.

    USE master;
    GO
    
    BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    

    Exemple :

    USE master;
    GO
    
    BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    
  2. Copiez le certificat du conteneur vers votre système de fichiers.

kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>

Exemple :

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
  1. Copiez la clé privée du conteneur vers votre système de fichiers.
 kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>

Exemple :

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
  1. Supprimez le certificat et la clé privée du conteneur.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Exemple :

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

Restaurer les informations d’identification de chiffrement transparent des données sur une instance managée

De façon similaire à ce qui est décrit plus haut, pour restaurer des informations d’identification, copiez-les dans le conteneur et exécutez après cela le code T-SQL correspondant.

Remarque

Si la commande kubectl cp est exécutée à partir de Windows, elle peut échouer quand des chemins Windows absolus sont utilisés. Utilisez des chemins relatifs ou les commandes spécifiées ci-dessous.

  1. Copiez le certificat de votre système de fichiers vers le conteneur.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>

Exemple :

type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
  1. Copiez la clé privée de votre système de fichiers vers le conteneur.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>

Exemple :

type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
  1. Créez le certificat en utilisant les chemins de fichiers à partir de /var/opt/mssql/data.

    USE master;
    GO
    
    CREATE CERTIFICATE <certicate-name>
    FROM FILE = '<certificate-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    

    Exemple :

    USE master;
    GO
    
    CREATE CERTIFICATE MyServerCertRestored
    FROM FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    
  2. Supprimez le certificat et la clé privée du conteneur.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Exemple :

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

Chiffrement transparent des données