Configurer la géoréplication et la restauration des sauvegardes pour Transparent Data Encryption avec des clés gérées par le client au niveau de la base de données
La CMK TDE au niveau de la base de données est disponible pour Azure SQL Database (toutes les éditions de SQL Database). Elle n’est pas disponible pour Azure SQL Managed Instance, pour SQL Server local, pour les machines virtuelles Azure et pour Azure Synapse Analytics (pools SQL dédiés (anciennement SQL DW)).
Dans ce guide, nous suivons les étapes de configuration de la géoréplication et de la restauration des sauvegardes sur une base de données Azure SQL Database. La base de données Azure SQL est configurée avec Transparent Data Encryption (TDE) et des clés gérées par le client (CMK) au niveau de la base de données, en utilisant une identité managée affectée par l’utilisateur pour accéder à Azure Key Vault. Azure Key Vault et le serveur logique pour Azure SQL se trouvent dans le même locataire Microsoft Entra pour ce guide, mais ils peuvent se trouver dans des locataires différents.
Remarque
Microsoft Entra ID était anciennement appelé Azure Active Directory (Azure AD).
Une fois la base de données créée ou restauré, le menu Transparent Data Encryption dans le portail Azure affiche la nouvelle base de données avec les mêmes paramètres que la base de données source, mais il peut y avoir des clés manquantes. Dans tous les cas où une base de données est créée à partir d’une base de données source, le nombre de clés affichées pour une base de données cible dans la liste Clés de base de données supplémentaires du portail Azure peut être inférieur au nombre de clés affichées pour une base de données source. Cela est dû au fait que le nombre de clés affichées dépend des exigences de fonctionnalités individuelles utilisées pour créer une base de données cible. Pour répertorier toutes les clés disponibles pour une base de données nouvellement créée, utilisez les API disponibles dans Afficher les paramètres de clé gérées par le client au niveau de la base de données sur une Azure SQL Database.
Créer une base de données Azure SQL avec des clés gérées par le client au niveau de la base de données en tant que réplica secondaire ou en tant que copie
Utilisez les instructions ou commandes suivantes pour créer une réplica secondaire ou une cible de copie d’une Azure SQL Database configurée avec des clés gérées par le client au niveau de la base de données. Une identité managée affectée par l’utilisateur est nécessaire pour configurer une clé gérée par le client pour Transparent Data Encryption lors de la phase de création de la base de données.
Créer une copie de base de données avec des clés gérées par le client au niveau de la base de données
Pour créer une base de données dans Azure SQL Database en tant que copie avec des clés gérées par le client au niveau de la base de données, procédez comme suit :
Accédez au portail Azure et accédez au Azure SQL Database configuré avec des clés gérées par le client au niveau de la base de données. Accédez à l’onglet Transparent Data Encryption du menu Chiffrement de données et vérifiez la liste des clés en cours d’utilisation par la base de données.
Créez une copie de la base de données en sélectionnant Copier dans le menu Vue d’ensemble de la base de données.
Le menu Créer SQL Database : Copier la base de données s’affiche. Utilisez un serveur différent pour cette base de données, mais les mêmes paramètres que la base de données que vous essayez de copier. Dans la section Gestion de la clé du chiffrement transparent des données, sélectionnez Configurer le chiffrement transparent des données.
Lorsque le menu Chiffrement transparent des données s’affiche, passez en revue les paramètres CMK pour cette base de données de copie. Les paramètres et les clés doivent être renseignés avec les mêmes identités et clés que celles utilisées dans la base de données source.
Sélectionnez Appliquer pour continuer, puis Vérifier + créer, puis Créer pour créer la base de données de copie.
Créer une réplica secondaire avec des clés gérées par le client au niveau de la base de données
Accédez au portail Azure et accédez au Azure SQL Database configuré avec des clés gérées par le client au niveau de la base de données. Accédez au menu Transparent Data Encryption et vérifiez la liste des clés en cours d’utilisation par la base de données.
Sous Paramètres de gestion des données pour la base de données, sélectionnez Réplicas. Sélectionnez Créer réplica pour créer une réplica secondaire de la base de données.
Le menu Créer SQL Database : Géoréplica s’affiche. Utilisez un serveur secondaire pour cette base de données, mais les mêmes paramètres que la base de données que vous essayez de répliquer. Dans la section Gestion de la clé du chiffrement transparent des données, sélectionnez Configurer le chiffrement transparent des données.
Lorsque le menu Chiffrement transparent des données s’affiche, passez en revue les paramètres CMK pour cette base de données de copie. Les paramètres et les clés doivent être renseignés avec les mêmes identités et clés que celles utilisées dans la base de données primaire.
Sélectionnez Appliquer pour continuer, puis Vérifier + créer, puis Créer pour créer la base de données de copie.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
Préremplissez la liste des clés actuelles utilisées par la base de données primaire en utilisant les expand-keys paramètres avec current en tant que keys-filter.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter current
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Créez une base de données en tant que réplica secondaire, et fournissez la liste préremplie des clés obtenues auprès de la base de données source et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire).
# Create a secondary replica with Active Geo Replication with the same name as the primary database
az sql db replica create -g $resourceGroup -s $serverName -n $databaseName --partner-server $secondaryServer --partner-database $secondaryDatabase --partner-resource-group $secondaryResourceGroup -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Important
$keys est une liste de clés séparées par un espace, récupérées auprès de la base de données source.
Pour créer une copie de la base de données, az sql db copy peut être utilisé avec les mêmes paramètres.
# Create a copy of a database configured with database level customer-managed keys
az sql db copy -g $resourceGroup -s $serverName -n $databaseName --dest-name $secondaryDatabase -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
Préremplissez la liste des clés actuelles utilisées par la base de données primaire en utilisant la commande Get-AzSqlDatabase et les paramètres -ExpandKeyList et -KeysFilter "current". Excluez -KeysFilter si vous souhaitez récupérer toutes les clés.
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Créez une base de données secondaire en utilisant la commande New-AzSqlDatabaseSecondary, et fournissez la liste préremplie des clés obtenues auprès de la base de données source et l’identité ci-dessus (et l’ID de client fédéré en cas de configuration de l’accès interlocataire) dans l’appel d’API en utilisant les paramètres -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (et si nécessaire, -FederatedClientId).
# Create a secondary replica with Active Geo Replication with the same name as the primary database
$database = Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
$database | New-AzSqlDatabaseSecondary -PartnerResourceGroupName <SecondaryResourceGroupName> -PartnerServerName <SecondaryServerName> -AllowConnections "All" -AssignIdentity -UserAssignedIdentityId <UserAssignedIdentityId> -EncryptionProtector <CustomerManagedKeyId> -FederatedClientId <FederatedClientId>
-KeyList $database.Keys.Keys
Pour créer une copie de la base de données, New-AzSqlDatabaseCopy peut être utilisé avec les mêmes paramètres.
Voici un exemple de modèle ARM qui crée une réplica secondaire et une copie d’une base de données Azure SQL configurée avec une identité managée affectée par l’utilisateur et TDE géré par le client au niveau de la base de données.
Préremplissez la liste des clés actuelles utilisées par la base de données primaire en utilisant la requête d’API REST suivante :
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Créez une base de données en tant que réplica secondaire, et fournissez la liste préremplie des clés obtenues auprès de la base de données source et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire) dans le modèle ARM comme paramètre keys_to_add.
Restaurer une base de données Azure SQL avec des clés gérées par le client au niveau de la base de données
Cette section vous guide tout au long des étapes de restauration d’une base de données Azure SQL configurée avec des clés gérées par le client au niveau de la base de données. Une identité managée affectée par l’utilisateur est nécessaire pour configurer une clé gérée par le client pour Transparent Data Encryption lors de la phase de création de la base de données.
Restauration dans le temps
La section suivante explique comment restaurer une base de données configurée avec des clés gérées par le client au niveau de la base de données à un point donné dans le temps. Afin d’en savoir plus sur la récupération d’une sauvegarde pour SQL Database, consultez Récupérer une base de données dans SQL Database.
Accédez au portail Azure et allez dans l’Azure SQL Database configuré avec des clés gérées par le client au niveau de la base de données que vous voulez restaurer.
Pour restaurer la base de données à un point dans le temps, sélectionnez Restaurer dans le menu Vue d’ensemble de la base de données.
Le menu Créer SQL Database : Restaurer la base de données s’affiche. Renseignez les détails nécessaires de la source et de la base de données. Dans la section Gestion de la clé du chiffrement transparent des données, sélectionnez Configurer le chiffrement transparent des données.
Lorsque le menu Chiffrement transparent des données s’affiche, passez en revue les paramètres CMK pour la base de données. Les paramètres et les clés doivent être renseignés avec les mêmes identités et clés que celles utilisées dans la base de données que vous essayez de restaurer.
Sélectionnez Appliquer pour continuer, puis Vérifier + créer, puis Créer pour créer la base de données de copie.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
Préremplissez la liste des clés utilisées par la base de données primaire en utilisant le paramètre expand-keys avec votre point de restauration dans le temps comme keys-filter.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter $timestamp
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Créez une base de données en tant que cible de restauration, et fournissez la liste préremplie des clés obtenues auprès de la base de données source et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire).
# Create a restored database
az sql db restore --dest-name $destName --name $databaseName --resource-group $resourceGroup --server $serverName --subscription $subscriptionId --time $timestamp -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Important
$keys est une liste de clés séparées par un espace, récupérées auprès de la base de données source.
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
Préremplissez la liste des clés utilisées par la base de données primaire en utilisant la commande Get-AzSqlDatabase et les paramètres -ExpandKeyList et -KeysFilter "2023-01-01" (2023-01-01 est un exemple du point dans le temps auquel vous souhaitez restaurer la base de données). Excluez -KeysFilter si vous souhaitez récupérer toutes les clés.
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Utilisez la commande Restore-AzSqlDatabase avec le paramètre -FromPointInTimeBackup, et fournissez la liste préremplie des clés obtenues à partir des étapes ci-dessus et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire) dans l’appel d’API en utilisant les paramètres -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (et si nécessaire, -FederatedClientId).
Restauration d’une base de données qui a été supprimée
La section suivante explique comment restaurer une base de données supprimée qui a été configurée avec des clés gérées par le client au niveau de la base de données. Afin d’en savoir plus sur la récupération d’une sauvegarde pour SQL Database, consultez Récupérer une base de données dans SQL Database.
Accédez au portail Azure et accédez au serveur logique de la base de données supprimée que vous souhaitez restaurer. Sous Gestion des données, sélectionnez Bases de données supprimées.
Sélectionnez la base de données supprimée que vous souhaitez restaurer.
Le menu Créer SQL Database : Restaurer la base de données s’affiche. Renseignez les détails nécessaires de la source et de la base de données. Dans la section Gestion de la clé du chiffrement transparent des données, sélectionnez Configurer le chiffrement transparent des données.
Lorsque le menu Chiffrement transparent des données s’affiche, configurez la section Identité managée affectée par l’utilisateur, Clé gérée par le client et Clés de base de données supplémentaires pour votre base de données.
Sélectionnez Appliquer pour continuer, puis Vérifier + créer, puis Créer pour créer la base de données de copie.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
Préremplissez la liste des clés utilisées par la base de données supprimée en utilisant le paramètre expand-keys. Il est recommandé de passer toutes les clés que la base de données source utilisait. Vous pouvez aussi tenter une restauration avec les clés fournies au moment de la suppression en utilisant le paramètre keys-filter.
az sql db show-deleted --name $databaseName --resource-group $resourceGroup --server $serverName --restorable-dropped-database-id "databaseName,133201549661600000" --expand-keys
Important
restorable-dropped-database-id peut être récupéré en listant toutes les bases de données supprimées restaurables dans le serveur et est au format databaseName,deletedTimestamp.
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Créez une base de données en tant que cible de restauration, et fournissez la liste préremplie des clés obtenues auprès de la base de données source supprimée et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire).
# Create a restored database
az sql db restore --dest-name $destName --name $databaseName --resource-group $resourceGroup --server $serverName --subscription $subscriptionId --time $timestamp -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys --deleted-time "2023-02-06T11:02:46.160000+00:00"
Important
$keys est une liste de clés séparées par un espace, récupérées auprès de la base de données source.
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
Préremplissez la liste des clés utilisées par la base de données primaire en utilisant la commande Get-AzSqlDeletedDatabaseBackup et le paramètre -ExpandKeyList. Il est recommandé de passer toutes les clés que la base de données source utilisait. Vous pouvez aussi tenter une restauration avec les clés fournies au moment de la suppression en utilisant le paramètre -KeysFilter.
DatabaseId peut être récupéré en listant toutes les bases de données supprimées restaurables dans le serveur et est au format databaseName,deletedTimestamp.
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Utilisez la commande Restore-AzSqlDatabase avec le paramètre -FromDeletedDatabaseBackup, et fournissez la liste préremplie des clés obtenues à partir des étapes ci-dessus et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire) dans l’appel d’API en utilisant les paramètres -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (et si nécessaire, -FederatedClientId).
La section suivante explique comment restaurer une sauvegarde géorépliquée d’une base de données qui a été configurée avec des clés gérées par le client au niveau de la base de données. Afin d’en savoir plus sur la récupération d’une sauvegarde pour SQL Database, consultez Récupérer une base de données dans SQL Database.
Accédez au portail Azure et accédez au serveur logique dans lequel vous souhaitez restaurer la base de données.
Dans le menu Vue d’ensemble , sélectionnez Créer une base de données.
Le volet Créer SQL Database s’affiche. Renseignez les onglets de base et de Mise en réseau pour votre nouvelle base de données. Dans Paramètres supplémentaires, sélectionnez Copie de sauvegarde pour la section Utiliser les données existantes , puis sélectionnez une sauvegarde géo-répliquée.
Accédez à l’onglet Sécurité. Dans la section Gestion de la clé du chiffrement transparent des données, sélectionnez Configurer le chiffrement transparent des données.
Lorsque le menu Chiffrement transparent des données apparaît, sélectionnez Clé gérée par le client (CMK) au niveau de la base de données. L’identité managée affectée par l’utilisateur, la clé gérée par le client et les clés de base de données supplémentaires doivent correspondre à la base de données source que vous souhaitez restaurer. Vérifiez que l’identité managée affectée par l’utilisateur a accès au coffre de clés qui contient la clé gérée par le client qui a été utilisée dans la copie de sauvegarde.
Sélectionnez Appliquer pour continuer, puis Vérifier + créer, puis Créer pour créer la base de données de sauvegarde.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
Préremplissez la liste des clés utilisées par la géosauvegarde de la base de données configurée avec des clés gérées par le client au niveau de la base de données en utilisant le paramètre expand-keys.
az sql db geo-backup --database-name $databaseName --g $resourceGroup --server $serverName --expand-keys
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Créez une base de données en tant que cible de géorestauration, et fournissez la liste préremplie des clés obtenues auprès de la base de données source supprimée et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire).
# Create a geo restored database
az sql db geo-backup restore --geo-backup-id "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recoverableDatabases/{databaseName}" --dest-database $destName --resource-group $resourceGroup --dest-server $destServerName -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Important
$keys est une liste de clés séparées par un espace, récupérées auprès de la base de données source.
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
Préremplissez la liste des clés utilisées par la base de données primaire en utilisant la commande Get-AzSqlDatabaseGeoBackup et -ExpandKeyList pour récupérer toutes les clés.
DatabaseId peut être récupéré en listant toutes les bases de données supprimées restaurables dans le serveur et est au format databaseName,deletedTimestamp.
Sélectionnez l’identité managée affectée par l’utilisateur (et l’ID de client fédéré si vous configurez l’accès interlocataire).
Utilisez la commande Restore-AzSqlDatabase avec le paramètre -FromGeoBackup, et fournissez la liste préremplie des clés obtenues à partir des étapes ci-dessus et l’identité ci-dessus (et l’ID de client fédéré si vous configurez l’accès interlocataire) dans l’appel d’API en utilisant les paramètres -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (et si nécessaire, -FederatedClientId).
Les sauvegardes avec conservation à long terme (LTR, Long Term Retention) ne fournissent pas la liste des clés utilisées par la sauvegarde. Pour restaurer une sauvegarde LTR, toutes les clés utilisées par la base de données source doivent être passées à la cible de restauration LTR.
Option de rotation automatique des clés pour les bases de données copiées ou restaurées
Les bases de données nouvellement copiées ou restaurées peuvent être configurées pour la rotation automatique de la clé gérée par le client utilisée pour Transparent Data Encryption. Pour plus d’informations sur l’activation de la rotation automatique des clés dans le Portail Azure ou l’utilisation des API, consultez Rotation automatique des clés au niveau de la base de données.
Étapes suivantes
Consultez la documentation suivante sur les différentes opérations de CMK au niveau de la base de données :