Partager via


sp_control_dbmasterkey_password (Transact-SQL)

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.

Icône Lien de rubriqueConventions de syntaxe de 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 de type nvarchar.

  • @password = N'password'
    Spécifie le mot de passe de la clé principale. password est de type 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 de type 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 de type nvarchar.

Notes

Lorsque SQL Server requiert la clé principale d'une base de données pour chiffrer ou déchiffrer une clé, SQL Server tente de déchiffrer la clé principale de base de données à l'aide de la clé principale de service de l'instance. Si le déchiffrement échoue, SQL Server recherche dans la banque d'informations d'identification les informations d'identification de clé principale qui possèdent le même GUID de famille que la base de données pour laquelle la clé principale est requise. SQL Server tente alors de déchiffrer la clé principale de base de données avec toutes les informations d'identification correspondantes, jusqu'à ce que le déchiffrement réussisse ou qu'il ne reste plus d'informations d'identification.

AttentionAttention

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 afin que sa hiérarchie de 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 consultables dans 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.

Notes

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.

Notes

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.

Autorisations

Requiert l'autorisation CONTROL sur la base de données.

Exemples

A. Création d'informations d'identification pour la clé principale d'AdventureWorks2008R2

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

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2008R2', 
    @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'AdventureWorks2008R2', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO