Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :Azure SQL Database
Note
- Le niveau de base de données TDE CMK est disponible pour Azure SQL Database (toutes les éditions SQL Database). Il n’est pas disponible pour Azure SQL Managed Instance, SQL Server local, machines virtuelles Azure et Azure Synapse Analytics (pools SQL dédiés (anciennement SQL DW)).
- Le même guide peut être appliqué pour configurer des clés gérées par le client au niveau de la base de données dans le même locataire en excluant le paramètre d’ID de client fédéré. Pour plus d’informations sur les clés gérées par le client au niveau de la base de données, consultez Transparent Data Encryption (TDE) avec des clés gérées par le client au niveau de la base de données.
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.
Note
Microsoft Entra ID était précédemment connu sous le nom d'Azure Active Directory (Azure AD).
Prerequisites
- Ce guide suppose que vous disposez de deux locataires Microsoft Entra.
- La première se compose de la ressource Azure SQL Database, d’une application Microsoft Entra mutualisée 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 multilocataire et des autorisations RBAC nécessaires à la configuration des applications Microsoft Entra et d’Azure Key Vault, consultez un des guides suivants :
- Azure CLI version 2.52.0 ou ultérieure.
- Module Az PowerShell version 10.3.0 ou supérieure.
- Les autorisations RBAC nécessaires pour une CMK au niveau de la base de données sont les mêmes que celles requises pour une 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 interlocataire 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 CMK inter-locataires, nous devons disposer d’une application Microsoft Entra multitenant configurée avec une identité gérée attribuée par l’utilisateur et définie comme informations d’identification d’identité fédérée pour l’application. Suivez un des guides dans les prérequis.
Sur le premier locataire, où vous voulez créer la base de données Azure SQL, créez et configurez une application Microsoft Entra multilocataire.
Configurez l'identité managée utilisateur comme un identifiant d'identité fédérée pour l'application multilocataire.
Prenez note du nom et l’ID de l’application. Trouvez ces informations dans le portail> Azure Microsoft Entra ID>Applications Enterprise et recherchez l’application créée.
Ressources nécessaires sur le second locataire
Note
Les modules PowerShell Azure AD et MSOnline seront obsolètes à compter du 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 obsolètes 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 toutes questions liées à la migration, consultez la 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 Azure Key Vault, créez un principal de service (application) en utilisant l’identifiant de l’application enregistrée dans le premier locataire. Voici quelques exemples montrant comment enregistrer l’application multitenant. Remplacez
<TenantID>et<ApplicationID>par l’ID client de Microsoft Entra ID et l’ID d’application de l’application multi-locataires, respectivement :PowerShell :
Connect-Entra -TenantID <TenantID> New-EntraServicePrincipal -AppId <ApplicationID>L'interface de ligne de commande Azure :
az login --tenant <TenantID> az ad sp create --id <ApplicationID>
Accédez au portail Azure>Microsoft Entra ID>Applications d’entreprise et recherchez l’application qui a été créée.
Si ce n’est déjà fait, créez un Azure Key Vault, puis créez une clé.
Créez ou définissez la stratégie d’accès.
- Sélectionnez les autorisations Obtenir, Inclure la clé et Ne pas inclure la clé sous Autorisations de clé pendant la création de la stratégie d’accès.
- Sélectionnez l’application mutualisée créée à la première étape de l’option Principal lors de la création de la stratégie d’accès.
Après avoir créé la politique d’accès et la clé, récupérez la clé depuis Azure Key Vault et enregistrez l’identifiant de clé.
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
Les exemples suivants montrent comment créer une base de données sur Azure SQL Database avec une identité gérée attribuée par l’utilisateur et comment définir une clé gérée par le client interlocataire au niveau de la base de données. Vous avez besoin de l’identité gérée attribuée par l’utilisateur pour configurer une clé gérée par le client pour le chiffrement transparent des données lors de la phase de création de la base de données.
Accédez à Azure SQL Hub à aka.ms/azuresqlhub.
Dans le menu des ressources, développez Azure SQL Database et sélectionnez bases de données SQL.
Dans la liste déroulante + Créer , sélectionnez une base de données SQL.
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 pour la clé de niveau base de données.
Dans le menu Chiffrement transparent des données, sélectionnez Clé gérée par le client (CMK) au niveau de la base de données.
Pour User-Assigned Identité Gérée, sélectionnez Configurer pour activer une identité de base de données et ajoutez une identité managée attribuée par l’utilisateur à la ressource si l’identité souhaitée n’est pas listée dans le menu Identité . Ensuite, sélectionnez Appliquer.
Note
Vous pouvez configurer l’identité cliente fédérée ici si vous configurez une clé CMK multilocataire pour TDE.
Dans le menu Chiffrement transparent des données, 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) du coffre de clés Azure dans le menu Chiffrement transparent des données.
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 de la clé dans le menu Chiffrement transparent des données.
Sélectionnez Appliquer pour continuer à créer la base de données.
Sélectionnez Suivant: Paramètres supplémentaires.
Sélectionnez Suivant : Balises.
Envisagez d'utiliser les balises Azure. Par exemple, la balise « Owner » ou « CreatedBy » pour identifier qui a créé la ressource et la balise Environnement pour identifier si cette ressource est en production, développement, etc. Pour plus d’informations, consultez Développer votre stratégie de nommage et d’étiquetage pour les ressources Azure.
Sélectionnez Vérifier + créer.
Dans la page Vérifier + créer, après vérification, sélectionnez Créer.
Note
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.
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
Les exemples suivants montrent comment mettre à jour une base de données existante sur Azure SQL Database avec une identité managée attribuée par l’utilisateur et comment définir une clé gérée par le client interlocataire au niveau de la base de données. Vous avez besoin d’une identité gérée attribuée par l’utilisateur pour configurer une clé gérée par le client afin de chiffrer les données transparentes.
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 mutualisée peut être utilisé dans le federated-client-id champ.
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.
az sql db update --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --keys $keys --keys-to-remove $keysToRemove --encryption-protector-auto-rotation True
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
$keys = '"https://yourvault.vault.azure.net/keys/yourkey1/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey2/ fd021f84a0d94d43b8ef33154bca0000"'
$keysToRemove = '"https://yourvault.vault.azure.net/keys/yourkey3/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey4/fd021f84a0d94d43b8ef33154bca0000"'
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 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
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.
Utilisez la cmdlet Get-AzSqlDatabase.
$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}
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
Si le protecteur TDE est inaccessible comme décrit dans le chiffrement transparent des données Azure SQL avec une clé gérée par le client, la base de données devient inaccessible. Après avoir corrigé l’accès à la clé, utilisez l’opération de revalidation de la clé pour rendre la base de données accessible à nouveau. Les commandes suivantes fournissent des exemples.
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
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 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