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 allons suivre les étapes de création, de mise à jour et de récupération d’une base de données Azure SQL 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 se trouve dans un locataire Microsoft Entra différent de celui d’Azure SQL Database. Pour plus d’informations, consultez Clés gérées par le client multilocataires avec Transparent Data Encryption.
Remarque
Microsoft Entra ID était anciennement appelé Azure Active Directory (Azure AD).
Prérequis
Ce guide suppose que vous avez deux locataires Microsoft Entra.
Le premier se compose de la ressource Azure SQL Database, d’une application Microsoft Entra multilocataire et d’une identité managée affectée par l’utilisateur.
Le deuxième locataire héberge le coffre de clés Azure.
Pour obtenir des instructions complètes sur la configuration de la clé CMK inter-locataire et des autorisations RBAC nécessaires à la configuration des applications Microsoft Entra et d’Azure Key Vault, consultez l’un des guides suivants :
Module Az PowerShell version 10.3.0 ou supérieure.
Les autorisations RBAC nécessaires pour la CMK au niveau de la base de données sont les mêmes que celles requises pour la CMK au niveau du serveur. Plus précisément, les mêmes autorisations RBAC applicables lors de l’utilisation d’Azure Key Vault, d’identités managées et de CMK inter-locataire pour TDE au niveau du serveur sont applicables au niveau de la base de données. Pour plus d’informations sur la gestion des clés et la stratégie d’accès, consultez Gestion des clés.
Ressources nécessaires sur le premier locataire
Dans le cadre de ce tutoriel, nous allons supposer que le premier locataire appartient à un fournisseur de logiciels indépendant (ISV) et que le deuxième locataire provient de son client. Pour plus d’informations sur ce scénario, consultez Clés gérées par le client multilocataires avec Transparent Data Encryption.
Avant de pouvoir configurer TDE pour Azure SQL Database avec une clé CMK inter-locataire, nous devons disposer d’une application Microsoft Entra multilocataire configurée avec une identité managée affectée par l’utilisateur, affectée en tant qu’informations d’identification de l’identité fédérée pour l’application. Suivez un des guides dans les prérequis.
Prenez note du nom et l’ID de l’application. Vous pouvez les trouver dans le Portail Azure>Microsoft Entra ID>les applications d’entreprise et en recherchant l’application créée.
Ressources nécessaires sur le second locataire
Remarque
Les modules Azure AD et MSOnline PowerShell sont dépréciés depuis le 30 mars 2024. Pour en savoir plus, lisez les informations de dépréciation. Passé cette date, la prise en charge de ces modules est limitée à une assistance de migration vers le SDK et les correctifs de sécurité Microsoft Graph PowerShell. Les modules déconseillés continueront de fonctionner jusqu’au 30 mars 2025.
Nous vous recommandons de migrer vers Microsoft Graph PowerShell pour interagir avec Microsoft Entra ID (anciennement Azure AD). Pour explorer les questions courantes sur la migration, reportez-vous au FAQ sur la migration. Remarque : Les versions 1.0.x de MSOnline peuvent connaître une interruption après le 30 juin 2024.
Sur le second locataire, où se trouve le coffre de clés Azure, créez un principal de service (application) en utilisant l’ID d’application de l’application inscrite du premier locataire. Voici quelques exemples de la façon d’inscrire l’application multilocataire. Remplacez <TenantID> et <ApplicationID> respectivement par l’ID de locataire de Microsoft Entra ID et par l’ID d’application de l’application multilocataire :
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
Voici des exemples de création d’une base de données sur Azure SQL Database avec une identité managée affectée par l’utilisateur, et de la façon de définir une clé gérée par le client interlocataire au niveau de la base de données. L’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.
Si vous n’êtes pas déjà connecté au portail Azure, connectez-vous lorsque vous y êtes invité.
Sous Bases de données SQL, laissez Type de ressource défini sur Base de données unique, puis sélectionnez Créer.
Sous l’onglet De base du formulaire Créer une base de données SQL, sous Détails du projet, sélectionnez l’Abonnement Azure souhaité,le groupe de ressources et le serveur pour votre base de données. Ensuite, utilisez un nom unique pour le nom de votre base de données. Si vous n’avez pas créé de serveur logique pour Azure SQL Database, consultez Créer un serveur configuré avec TDE avec une clé gérée par le client (CMK) interlocataire pour plus d’informations.
Lorsque vous accédez à l’onglet Sécurité , sélectionnez Configurer le chiffrement transparent des données.
Dans le menu Transparent Data Encryption, sélectionnez Clé gérée par le client (CMK) au niveau de la base de données.
Pour Identité managée affectée par l’utilisateur, sélectionnez Configurer pour autoriser une identité de base de données et Ajouter une identité managée affectée par l’utilisateur à la ressource si l’identité souhaitée n’est pas listée dans le menu Identité. Ensuite, sélectionnez Appliquer.
Dans le menu Transparent Data Encryption, sélectionnez Modifier la clé. Sélectionnez les valeurs de votre choix pour Abonnement, Coffre de clés, Clé et Version pour la clé gérée par le client à utiliser pour le TDE. Sélectionnez le bouton Sélectionner. Après avoir sélectionné une clé, vous pouvez également ajouter des clés de base de données supplémentaires si nécessaire à l’aide de l’URI (identificateur d’objet) de Azure Key vault dans le menu Transparent Data Encryption.
La rotation automatique des clés peut également être activée au niveau de la base de données à l’aide de la case à cocher rotation automatique des clés dans le menu Transparent Data Encryption.
Sélectionnez Appliquer pour continuer à créer la base de données.
Au bas de la page, sélectionnez Vérifier + créer
Dans la page Vérifier + créer, après vérification, sélectionnez Créer.
Notes
La création de la base de données échoue si l’identité managée affectée par l’utilisateur n’a pas les autorisations appropriées activées sur le coffre de clés. L’identité managée affectée par l’utilisateur aura besoin des autorisations Get, wrapKey et unwrapKey sur le coffre de clés. Pour plus d’informations, consultez Identités managées pour le chiffrement transparent des données avec une clé gérée par le client.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
Créez une base de données configurée avec l’identité managée affectée par l’utilisateur et un chiffrement TDE géré par le client multilocataire en utilisant la commande az sql db create. L’identificateur de clé du deuxième locataire peut être utilisé dans le champ encryption-protector. L’ID d’application de l’application multilocataire peut être utilisé dans le champ federated-client-id. Le paramètre --encryption-protector-auto-rotation peut être utilisé pour activer la rotation automatique des clés au niveau de la base de données.
Pour obtenir votre ID de ressource d’identité managée affectée par l’utilisateur, recherchez Identités managées dans le portail Azure. Recherchez votre identité managée, puis accédez à Propriétés. Un exemple de votre ID de ressource UMI va se présenter comme ceci : /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Créez une base de données configurée avec l’identité managée affectée par l’utilisateur et un chiffrement TDE géré par le client multilocataire au niveau de la base de données en utilisant PowerShell.
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
<ResourceGroupName> : nom du groupe de ressources pour votre serveur logique Azure SQL
<DatabaseName> : utilisez un nom de base de données Azure SQL unique
<ServerName> : utiliser un nom de serveur logique Azure SQL unique
<UserAssignedIdentityId> : liste des identités managées affectées par l’utilisateur devant être affectées au serveur (une ou plusieurs)
<CustomerManagedKeyId> : identificateur de clé du coffre de clés du deuxième locataire
<FederatedClientId> : ID d’applications de l’application multilocataire
-EncryptionProtectorAutoRotation : peut être utilisé pour activer la rotation automatique des clés au niveau de la base de données
Pour obtenir votre ID de ressource d’identité managée affectée par l’utilisateur, recherchez Identités managées dans le portail Azure. Recherchez votre identité managée, puis accédez à Propriétés. Un exemple de votre ID de ressource UMI va se présenter comme ceci : /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
Voici un exemple de modèle ARM qui crée une base de données Azure SQL 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. Pour une CMK multilocataire, utilisez l’identificateur de clé du coffre de clés du deuxième locataire et l’ID d’application de l’application multilocataire.
Pour obtenir votre ID de ressource d’identité managée affectée par l’utilisateur, recherchez Identités managées dans le portail Azure. Recherchez votre identité managée, puis accédez à Propriétés. Un exemple de votre ID de ressource UMI va se présenter comme ceci : /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Mettre à jour une base de données Azure SQL existante avec des clés gérées par le client au niveau de la base de données
Voici des exemples de mise à jour d’une base de données existante sur Azure SQL Database avec une identité managée affectée par l’utilisateur, et de la façon de définir une clé gérée par le client interlocataire au niveau de la base de données. L’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.
Dans le Portail Azure, accédez à la ressource de base de données SQL que vous souhaitez mettre à jour avec une clé gérée par le client au niveau de la base de données.
Sous Sécurité, sélectionnez Identité. Ajoutez une identité managée affectée par l’utilisateur pour cette base de données, puis sélectionnez Enregistrer
Accédez maintenant au menu Chiffrement des données sous Sécurité pour votre base de données. Sélectionnez Clé gérée par le client (CMK) au niveau de la base de données. L’identité de base de données pour la base de données doit déjà être Activée, car vous avez configuré l’identité à la dernière étape.
Sélectionnez Changer la clé. Sélectionnez les valeurs de votre choix pour Abonnement, Coffre de clés, Clé et Version pour la clé gérée par le client à utiliser pour le TDE. Sélectionnez le bouton Sélectionner. Après avoir sélectionné une clé, vous pouvez également ajouter des clés de base de données supplémentaires si nécessaire à l’aide de l’URI (identificateur d’objet) de Azure Key vault dans le menu Chiffrement des données.
Cochez la case rotation automatique des clés si vous souhaitez activer la rotation automatique des clés au niveau de la base de données.
Sélectionnez Enregistrer.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
Mettez à jour une base de données configurée avec l’identité managée affectée par l’utilisateur et un chiffrement TDE géré par le client multilocataire en utilisant la commande az sql db create. L’identificateur de clé du deuxième locataire peut être utilisé dans le champ encryption-protector. L’ID d’application de l’application multilocataire peut être utilisé dans le champ federated-client-id.
Pour obtenir votre ID de ressource d’identité managée affectée par l’utilisateur, recherchez Identités managées dans le portail Azure. Recherchez votre identité managée, puis accédez à Propriétés. Un exemple de votre ID de ressource UMI va se présenter comme ceci : /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. Le paramètre --encryption-protector-auto-rotation peut être utilisé pour activer la rotation automatique des clés au niveau de la base de données.
La liste $keys est une liste de clés séparées par un espace qui doivent être ajoutées à la base de données, et $keysToRemove est une liste de clés séparées par un espace qui doivent être supprimées de la base de données
Mettez à jour une base de données configurée avec l’identité managée affectée par l’utilisateur et un chiffrement TDE géré par le client multilocataire au niveau de la base de données en utilisant PowerShell.
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
<ResourceGroupName> : nom du groupe de ressources pour votre serveur logique Azure SQL
<DatabaseName> : utilisez un nom de base de données Azure SQL unique
<ServerName> : utiliser un nom de serveur logique Azure SQL unique
<UserAssignedIdentityId> : liste des identités managées affectées par l’utilisateur devant être affectées au serveur (une ou plusieurs)
<CustomerManagedKeyId> : identificateur de clé du coffre de clés du deuxième locataire
<FederatedClientId> : ID d’applications de l’application multilocataire
<ListOfKeys> : liste séparée par des virgules des clés gérées par le client au niveau de la base de données, à ajouter à la base de données
<ListOfKeysToRemove> : liste séparée par des virgules des clés gérées par le client au niveau de la base de données, à supprimer de la base de données
-EncryptionProtectorAutoRotation : peut être utilisé pour activer la rotation automatique des clés au niveau de la base de données
Pour obtenir votre ID de ressource d’identité managée affectée par l’utilisateur, recherchez Identités managées dans le portail Azure. Recherchez votre identité managée, puis accédez à Propriétés. Un exemple de votre ID de ressource UMI va se présenter comme ceci : /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Voici un exemple de modèle ARM qui met à jour une base de données Azure SQL 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. Pour une clé CMK multilocataire, utilisez l’identificateur de clé du coffre de clés du deuxième locataire et l’ID d’application de l’application multilocataire.
Pour obtenir votre ID de ressource d’identité managée affectée par l’utilisateur, recherchez Identités managées dans le portail Azure. Recherchez votre identité managée, puis accédez à Propriétés. Un exemple de votre ID de ressource UMI va se présenter comme ceci : /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Pour supprimer une clé de la base de données, la valeur du dictionnaire de clés d’une clé particulière doit être passée comme étant null. Par exemple : "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
Visualiser les paramètres de clé gérée par le client au niveau de la base de données sur une base de données Azure SQL
Voici des exemples de récupération des clés gérées par le client au niveau de la base de données pour une base de données. Par défaut, la ressource ARM Microsoft.Sql/servers/databases montre seulement le protecteur TDE et l’identité managée configurés sur la base de données. Pour développer la liste complète des clés, utilisez le paramètre -ExpandKeyList. En outre, des filtres comme -KeysFilter "current" et une valeur de point dans le temps (par exemple 2023-01-01) peuvent être utilisés pour récupérer les clés actuelles utilisées et les clés utilisées dans le passé à un point dans le temps spécifique. Ces filtres sont pris en charge seulement pour les requêtes de base de données individuelles et non pas pour les requêtes au niveau du serveur.
Pour afficher les clés gérées par le client au niveau de la base de données dans le Portail Azure, accédez au menu Chiffrement des données de la ressource SQL Database.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
Utilisez l’API REST 2022-08-01-preview pour Azure SQL Database.
Récupérer les paramètres de base de la clé gérée par le client au niveau de la base de données auprès d’une base de données.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
Récupérer les paramètres de base de la clé gérée par le client au niveau de la base de données auprès d’une base de données et toutes les clés ajoutées jusqu’à présent
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
Récupérer les paramètres de base de la clé gérée par le client au niveau de la base de données auprès d’une base de données et toutes les clés actuellement utilisées
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'))
Récupérer les paramètres de base de la clé gérée par le client au niveau de la base de données auprès d’une base de données et les clés utilisées à un point dans le temps particulier
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('2023-02-04T01:57:42.49Z'))
Lister toutes les clés d’un serveur logique
Pour extraire la liste de toutes les clés (et pas seulement le protecteur principal) utilisées par chaque base de données sous le serveur, elle doit être interrogée individuellement avec les filtres de clé. Voici un exemple de requête PowerShell pour lister chaque clé sous le serveur logique.
Revalider la clé gérée par le client au niveau de la base de données sur une base de données Azure SQL
Dans le cas d’un protecteur TDE inaccessible, comme décrit dans Transparent Data Encryption (TDE) avec CMK, une fois l’accès à la clé corrigé, une opération de revalidation de clé peut être utilisée pour rendre la base de données accessible. Consultez les instructions ou commandes suivantes pour obtenir des exemples.
À l’aide du Portail Azure, recherchez votre ressource de base de données SQL. Une fois que vous avez sélectionné votre ressource SQL Database, accédez à l’onglet Transparent Data Encryption du menu Chiffrement de données sous les paramètres de Sécurité. Si la base de données a perdu l’accès à Azure Key Vault, un bouton Revalider la clé s’affiche et vous aurez la possibilité de revalider la clé existante en sélectionnant Réessayer la clé existante, ou une autre clé en sélectionnant Sélectionner la clé de sauvegarde.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
Utilisez l’API REST 2022-08-01-preview pour Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
Rétablir la clé gérée par le client au niveau de la base de données sur une base de données Azure SQL
Une base de données configurée avec CMK au niveau de la base de données peut être ramenée au chiffrement au niveau du serveur si le serveur est configuré avec une clé gérée par le service en utilisant les commandes suivantes.
Pour rétablir le paramètre de clé gérée par le client au niveau de la base de données à la clé de chiffrement au niveau du serveur dans le Portail Azure, accédez à l’onglet Transparent Data Encryption du menu Chiffrement de données de la ressource SQL Database. Sélectionnez Clé de chiffrement au niveau du serveur , puis Enregistrer pour enregistrer les paramètres.
Notes
Pour utiliser le paramètre de clé de chiffrement au niveau du serveur pour des bases de données individuelles, le serveur logique de la base de données Azure SQL Database doit être configuré pour utiliser la clé gérée par le service pour TDE.
Pour plus d’informations sur l’installation de la version actuelle d’Azure CLI, consultez Installer Azure CLI.
az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
Pour des instructions d’installation du module Az PowerShell, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
Utilisez l’API REST 2022-08-01-preview pour Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
Étapes suivantes
Consultez la documentation suivante sur les différentes opérations de CMK au niveau de la base de données :