Partilhar via


sp_control_dbmasterkey_password (Transact-SQL)

Aplica-se a: Instância Gerenciada de SQL do Azure do SQL Server

Adiciona ou descarta uma credencial que contém a senha necessária para abrir uma chave mestra de banco de dados.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@db_name=N'database_name'
Especifica o nome do banco de dados associado a essa credencial. Não pode ser um banco de dados do sistema. database_name é nvarchar.

@password=N'senha'
Especifica a senha da chave mestra. password é nvarchar.

@action=N'adicionar'
Especifica que uma credencial para o banco de dados especificado será adicionada ao armazenamento de credenciais. A credencial conterá a senha da chave mestra de banco de dados. O valor passado para @action é nvarchar.

@action=N'soltar'
Especifica que uma credencial para o banco de dados especificado será descartada do armazenamento de credenciais. O valor passado para @action é nvarchar.

Comentários

Quando o SQL Server precisa de uma chave mestra de banco de dados para descriptografar ou criptografar uma chave, o SQL Server tenta descriptografar a chave mestra do banco de dados com a chave mestra de serviço da instância. Se a descriptografia falhar, o SQL Server pesquisará o repositório de credenciais em busca de credenciais de chave mestra que tenham o mesmo GUID de família que o banco de dados para o qual ele precisa da chave mestra. O SQL Server, em seguida, tenta descriptografar a chave mestra do banco de dados com cada credencial correspondente até que a descriptografia obtenha êxito ou não haja mais credenciais.

Cuidado

Não habilite a descriptografia de failover de um banco de dados que deva permanecer inacessível o sa e outros principais de servidor altamente privilegiados. É possível configurar um banco de dados de forma que sua hierarquia fundamental não possa ser descriptografada pela chave mestra de serviço. Essa opção tem suporte como uma defesa para bancos de dados contendo informações criptografadas que não devem estar acessíveis ao sa ou outros principais de servidor altamente privilegiados. A criação de uma credencial de chave mestra para esse banco de dados remove a defesa, permitindo que o sa e outros principais de servidor altamente privilegiados descriptografem o banco de dados.

As credenciais criadas usando sp_control_dbmasterkey_password são visíveis na exibição do catálogo sys.master_key_passwords . Os nomes das credenciais que são criadas para chaves mestras de banco de dados têm o seguinte formato: ##DBMKEY_<database_family_guid>_<random_password_guid>##. A senha é armazenada como o segredo de credencial. Para cada senha adicionada ao repositório de credenciais há uma linha em sys.credentials.

Não é possível usar sp_control_dbmasterkey_password ao criar uma credencial para os seguintes bancos de dados do sistema: mestre, modelo, msdbou tempdb.

sp_control_dbmasterkey_password não verifica se a senha pode abrir a chave mestra do banco de dados especificado.

Se você especificar uma senha que já esteja armazenada em uma credencial para o banco de dados especificado, sp_control_dbmasterkey_password falhará.

Observação

Dois bancos de dados de instâncias de servidor diferentes podem compartilhar o mesmo GUID de família. Se isso acontecer, os bancos de dados compartilharão os mesmos registros de chave mestra no armazenamento de credenciais.

Os parâmetros passados a sp_control_dbmasterkey_password não são exibidos em rastreamentos.

Observação

Quando você estiver usando a credencial que foi adicionada com o uso de sp_control_dbmasterkey_password para abrir a chave mestra do banco de dados, essa chave será criptografada novamente pela chave mestra de serviço. Se o banco de dados estiver no modo somente leitura, a operação de nova criptografia falhará e a chave mestra de banco de dados permanecerá não criptografada. Para o acesso subsequente à chave mestra de banco de dados, você deve usar a instrução OPEN MASTER KEY e uma senha. Para evitar o uso de uma senha, crie a credencial antes de mover o banco de dados para o modo somente leitura.

Possível problema de compatibilidade com versões anteriores: atualmente, o procedimento armazenado não verifica se existe uma chave mestra. Isso é permitido para compatibilidade com versões anteriores, mas exibe um aviso. Este comportamento é preterido. Em uma versão futura, a chave mestra deve existir e a senha usada no procedimento armazenado sp_control_dbmasterkey_password deve ser a mesma senha de uma das senhas usadas para criptografar a chave mestra do banco de dados.

Permissões

Exige associação à função de servidor fixa sysadmin .

Exemplos

R. Criando uma credencial para a chave mestra do AdventureWorks

O exemplo a seguir cria uma credencial para a chave mestra de banco de dados AdventureWorks2022 e salva a senha de chave mestra como segredo na credencial. Como todos os parâmetros passados devem sp_control_dbmasterkey_password ser do tipo de dados nvarchar, as strings de texto são convertidas com o operador Nde conversão .

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

B. Removendo uma credencial para uma chave mestra de banco de dados

O exemplo a seguir remove a credencial criada no exemplo A. Observe que todos os parâmetros são necessários, inclusive a senha.

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

Confira também

Configurar um banco de dados espelho criptografado
Procedimentos armazenados de segurança (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)
sys.credentials (Transact-SQL)
Credenciais (Mecanismo de Banco de Dados)