Migrer vers Azure SQL Managed Instance un certificat d’une base de données protégée par TDE
S’applique à : Azure SQL Managed Instance
Quand vous migrez une base de données protégée par Transparent Data Encryption (TDE) vers Azure SQL Managed Instance à l’aide de l’option de restauration native, le certificat correspondant de l’instance SQL Server doit être migré avant la restauration de la base de données. Cet article vous guide dans le processus de migration manuelle du certificat vers Azure SQL Managed Instance :
- Exporter le certificat dans un fichier Personal Information Exchange (.pfx)
- Extraire le certificat d’un fichier vers une chaîne en base 64
- Le charger à l’aide d’une applet de commande PowerShell
Pour prendre connaissance d’une autre possibilité de migration fluide d’une base de données protégée par TDE et d’un certificat correspondant à l’aide d’un service complètement managé, consultez Comment migrer votre base de données locale vers Azure SQL Managed Instance à l’aide d’Azure Database Migration Service.
Important
Un certificat migré permet de restaurer uniquement la base de données protégée par TDE. Peu de temps après la restauration, le certificat migré est remplacé par un autre protecteur, soit un certificat géré par le service, soit une clé asymétrique du coffre de clés, en fonction du type de TDE défini sur l’instance.
Prérequis
Pour effectuer les étapes indiquées dans cet article, vous avez besoin des éléments requis suivants :
- L’outil en ligne de commande Pvk2pfx installé sur le serveur local ou un autre ordinateur avec accès au certificat exporté dans un fichier. Cet outil fait partie du kit Enterprise Windows Driver Kit, un environnement de ligne de commande autonome.
- Windows PowerShell version 5.0 ou supérieure installé.
Vérifiez que vous disposez des éléments suivants :
- Module Azure PowerShell installé et mis à jour.
- Module Az.Sql.
Notes
Cet article utilise le module Azure Az PowerShell, qui est le module PowerShell recommandé pour interagir avec Azure. Pour démarrer avec le module Az PowerShell, consulter Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Important
Le module PowerShell Azure Resource Manager est toujours pris en charge par Azure SQL Managed Instance, mais tous les développements à venir sont destinés au module Az.Sql. Pour ces cmdlets, voir AzureRM.Sql. Les arguments des commandes dans le module Az sont sensiblement identiques à ceux des modules AzureRM.
Exécutez les commandes suivantes dans PowerShell pour installer/mettre à jour le module :
Install-Module -Name Az.Sql
Update-Module -Name Az.Sql
Exporter le certificat TDE vers un fichier .pfx
Le certificat peut être exporté directement à partir de l’instance du serveur SQL Server source ou du magasin de certificats s’il y est conservé.
Exporter le certificat à partir de l’instance du serveur SQL Server source
Pour exporter le certificat avec SQL Server Management Studio et le convertir au format .pfx, procédez comme suit. Dans les étapes indiquées ci-dessous, les noms génériques TDE_Cert et full_path sont utilisés comme noms de certificat et de fichier et comme chemins d’accès. Il convient de les remplacer par les noms réels.
Dans SSMS, ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance du serveur SQL Server source.
Utilisez le script suivant pour lister les bases de données protégées par TDE et obtenir le nom du certificat protégeant le chiffrement de la base de données à migrer :
USE master GO SELECT db.name as [database_name], cer.name as [certificate_name] FROM sys.dm_database_encryption_keys dek LEFT JOIN sys.certificates cer ON dek.encryptor_thumbprint = cer.thumbprint INNER JOIN sys.databases db ON dek.database_id = db.database_id WHERE dek.encryption_state = 3
Exécutez le script suivant pour exporter le certificat vers une paire de fichiers (.cer et .pvk), en conservant les informations de clés publiques et privées :
USE master GO BACKUP CERTIFICATE TDE_Cert TO FILE = 'c:\full_path\TDE_Cert.cer' WITH PRIVATE KEY ( FILE = 'c:\full_path\TDE_Cert.pvk', ENCRYPTION BY PASSWORD = '<SomeStrongPassword>' )
Utilisez la console PowerShell pour copier les informations de certificat d’une paire de fichiers qui viennent d’être créés vers un fichier .pfx à l’aide de l’outil Pvk2Pfx :
.\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
Exporter le certificat à partir d’un magasin de certificats
Si le certificat est conservé dans le magasin de certificats de l’ordinateur local SQL Server, vous pouvez l’exporter en procédant comme suit :
Ouvrez la console PowerShell et exécutez la commande suivante pour ouvrir le composant logiciel enfichable Certificats de Microsoft Management Console :
certlm
Dans le composant logiciel enfichable MMC Certificats, développez le chemin d’accès Personnel > Certificats pour afficher la liste des certificats.
Cliquez avec le bouton droit sur le certificat, puis cliquez sur Exporter.
Suivez l’Assistant pour exporter le certificat et la clé privée dans un format .pfx.
Charger le certificat sur Azure SQL Managed Instance à l’aide d’une applet de commande Azure PowerShell
Commencez par les étapes de préparation dans PowerShell :
# import the module into the PowerShell session Import-Module Az # connect to Azure with an interactive dialog for sign-in Connect-AzAccount # list subscriptions available and copy id of the subscription target the managed instance belongs to Get-AzSubscription # set subscription for the session Select-AzSubscription <subscriptionId>
Une fois que toutes les étapes de préparation sont effectuées, exécutez les commandes suivantes pour charger le certificat encodé en base 64 vers l’instance gérée cible :
# If you are using PowerShell 6.0 or higher, run this command: $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -AsByteStream # If you are using PowerShell 5.x, uncomment and run this command instead of the one above: # $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -Encoding Byte $base64EncodedCert = [System.Convert]::ToBase64String($fileContentBytes) $securePrivateBlob = $base64EncodedCert | ConvertTo-SecureString -AsPlainText -Force $password = "<password>" $securePassword = $password | ConvertTo-SecureString -AsPlainText -Force Add-AzSqlManagedInstanceTransparentDataEncryptionCertificate -ResourceGroupName "<resourceGroupName>" ` -ManagedInstanceName "<managedInstanceName>" -PrivateBlob $securePrivateBlob -Password $securePassword
Le certificat est désormais disponible dans l’instance managée spécifiée, et la sauvegarde de la base de données correspondante protégée par TDE peut être restaurée avec succès.
Notes
Le certificat chargé n’est pas visible dans la vue du catalogue sys.certificates. Pour confirmer la réussite du chargement du certificat, vous pouvez exécuter la commande RESTORE FILELISTONLY .
Étapes suivantes
Dans cet article, vous avez appris à migrer un certificat qui protège la clé de chiffrement d’une base de données avec TDE d’une instance d’un serveur SQL Server local ou IaaS vers Azure SQL Managed Instance.
Consultez Restauration d’une sauvegarde de base de données dans Azure SQL Managed Instance pour apprendre à restaurer une sauvegarde de base de données dans Azure SQL Managed Instance.