Partilhar via


sp_control_dbmasterkey_password (Transact-SQL)

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

Ícone de vínculo de tópico Convenções da sintaxe 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'password'
    Especifica a senha da chave mestra. password é nvarchar.

  • @action=N'add'
    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'drop'
    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 de serviço da instância. Se a descriptografia falhar, o SQL Server pesquisará o repositório de credenciais em busca das credenciais de chave mestra que têm o mesmo GUID de família do banco de dados cuja chave mestra é necessária. O SQL Server tenta descriptografar a chave mestra de banco de dados com cada credencial compatível até que a descriptografia obtenha êxito ou não haja mais credenciais.

Observação sobre cuidadosCuidado

Não crie uma credencial de chave mestra para um banco de dados que deva permanecer inacessível para 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 com o uso de 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 para criar uma credencial para os seguintes bancos de dados de sistema: master, model, msdb ou 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çãoObservaçã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.

Parâmetros passados para sp_control_dbmasterkey_password não aparecem em rastreamentos.

ObservaçãoObservaçã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.

Permissões

Exige a permissão CONTROL no banco de dados.

Exemplos

A.Criando uma credencial para a chave mestra AdventureWorks2012

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

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

Consulte também

Referência

Procedimentos armazenados de segurança (Transact-SQL)

Procedimentos armazenados do sistema (Transact-SQL)

sys.credentials (Transact-SQL)

Conceitos

Configurar um banco de dados espelho criptografado

Credenciais (Mecanismo de Banco de Dados)