sp_control_dbmasterkey_password (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Permet d'ajouter et de supprimer des informations d'identification contenant le mot de passe requis pour ouvrir la clé principale d'une base de données.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
sp_control_dbmasterkey_password @db_name = 'database_name,  
     @password = 'master_key_password' , @action = { 'add' | 'drop' }  

Arguments

@db_name=N'database_name'
Spécifie le nom de la base de données associée à ces informations d'identification. Il ne peut s'agir d'une base de données système. database_name est nvarchar.

@password=N'password'
Spécifie le mot de passe de la clé principale. le mot de passe est nvarchar.

@action=N'add'
Indique que des informations d'identification seront ajoutées dans la banque d'informations d'identification pour la base de données spécifiée. Les informations d'identification contiennent le mot de passe de la clé principale de base de données. La valeur passée à @action est nvarchar.

@action=N'drop'
Indique que des informations d'identification seront supprimées de la banque d'informations d'identification pour la base de données spécifiée. La valeur passée à @action est nvarchar.

Remarques

Quand SQL Server a besoin d’une clé principale de base de données pour déchiffrer ou chiffrer une clé, SQL Server tente de déchiffrer la clé principale de base de données avec la clé principale du service de l’instance. Si le déchiffrement échoue, SQL Server recherche dans le magasin d’informations d’identification les informations d’identification de clé principale qui ont le même GUID de famille que la base de données pour laquelle elle a besoin de la clé principale. SQL Server tente ensuite de déchiffrer la clé principale de base de données avec chaque informations d’identification correspondantes jusqu’à ce que le déchiffrement réussisse ou qu’il n’y ait plus d’informations d’identification.

Attention

Ne créez pas d'informations d'identification de clé principale pour une base de données qui doit être inaccessible à sa et à d'autres principaux de serveur dotés de privilèges de haut niveau. Vous pouvez configurer une base de données de sorte que la hiérarchie de ses clés ne puisse pas être déchiffrée par la clé principale du service. Cette option est prise en charge dans le cadre d'une défense en profondeur de bases de données qui contiennent des données chiffrées qui ne doivent pas être accessibles à sa ni à d'autres principaux de serveur dotés de privilèges de haut niveau. La création d'informations d'identification de clé principale pour une telle base de données supprime cette défense en profondeur en permettant à sa et à d'autres principaux de serveur dotés de privilèges de haut niveau de déchiffrer la base de données.

Les informations d’identification créées à l’aide de sp_control_dbmasterkey_password sont visibles dans l’affichage catalogue sys.master_key_passwords . Les noms des informations d'identification créées pour les clés principales des bases de données ont le format suivant :##DBMKEY_<database_family_guid>_<random_password_guid>##. Le mot de passe est stocké en tant que secret des informations d'identification. À chaque mot de passe ajouté dans la banque d'informations d'identification correspond une ligne dans sys.credentials.

Vous ne pouvez pas utiliser sp_control_dbmasterkey_password pour créer des informations d'identification pour les bases de données système suivantes : master, model, msdb ou tempdb.

sp_control_dbmasterkey_password ne vérifie pas que le mot de passe permet d'ouvrir la clé principale de la base de données spécifiée.

Si vous spécifiez un mot de passe déjà stocké dans des informations d'identification pour la base de données spécifiée, sp_control_dbmasterkey_password échoue.

Note

Deux bases de données issues d'instances de serveur différentes peuvent partager le même GUID de famille. Dans ce cas de figure, les bases de données partagent les mêmes enregistrements de clé principale dans la banque d'informations d'identification.

Les paramètres passés à sp_control_dbmasterkey_password n'apparaissent pas dans les traces.

Note

Lorsque vous utilisez les informations d'identification ajoutées à l'aide de sp_control_dbmasterkey_password pour ouvrir la clé principale de la base de données, celle-ci est rechiffrée par la clé principale du service. Si la base de données est en mode lecture seule, l'opération de rechiffrement échouera et la clé principale de la base de données restera non chiffrée. Pour un accès ultérieur à la clé principale de la base de données, vous devez utiliser l'instruction OPEN MASTER KEY et un mot de passe. Pour ne pas à avoir à utiliser un mot de passe, créez les informations d'identification avant de placer la base de données en mode lecture seule.

Problème potentiel de compatibilité descendante : actuellement, la procédure stockée ne vérifie pas si une clé principale existe. Cette opération est autorisée à des fins de compatibilité descendante, mais affiche un avertissement. Ce comportement est déconseillé. Dans une version ultérieure, la clé principale doit exister et le mot de passe utilisé dans la procédure stockée sp_control_dbmasterkey_password doit être le même mot de passe que l’un des mots de passe utilisés pour chiffrer la clé principale de base de données.

Autorisations

Nécessite l'appartenance au rôle serveur fixe sysadmin .

Exemples

A. Création d’informations d’identification pour la clé principale AdventureWorks

Dans l'exemple ci-dessous, des informations d'identification sont créées pour la clé principale de la base de données AdventureWorks2022 et le mot de passe de la clé principale est enregistré en tant que secret dans les informations d'identification. Étant donné que tous les paramètres passés sp_control_dbmasterkey_password doivent être de type de données nvarchar, les chaînes de texte sont converties avec l’opérateur Nde cast.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',   
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';  
GO  

B. Suppression d'informations d'identification pour la clé principale d'une base de données

Dans l'exemple ci-dessous, les informations d'identification créées dans l'exemple A sont supprimées. Notez que tous les paramètres sont requis, y compris le mot de passe.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',   
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';  
GO  

Voir aussi

Configurer une base de données miroir chiffrée
Procédures stockées liées à la sécurité (Transact-SQL)
Procédures stockées système (Transact-SQL)
sys.credentials (Transact-SQL)
Informations d'identification (moteur de base de données)