sp_control_dbmasterkey_password (Transact-SQL)
Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure
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. A senha é nvarchar.
@action=N'adicionar'
Especifica que uma credencial para o banco de dados especificado será adicionada ao repositório de credenciais. A credencial conterá a senha da chave mestra do banco de dados. O valor passado para @action é nvarchar.
@action=N'Queda'
Especifica que uma credencial para o banco de dados especificado será descartada do repositório 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 banco de dados com a chave mestra de serviço da instância. Se a descriptografia falhar, o SQL Server procurará no repositório de credenciais credenciais que tenham o mesmo GUID da família que o banco de dados para o qual ele precisa da chave mestra. Em seguida, o SQL Server tenta descriptografar a chave mestra do banco de dados com cada credencial correspondente até que a descriptografia seja bem-sucedida ou não haja mais credenciais.
Cuidado
Não crie uma credencial de chave mestra para um banco de dados que deve ser inacessível para sa e outras entidades de servidor altamente privilegiadas. É 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 é suportada como uma defesa profunda para bancos de dados que contêm informações criptografadas que não devem ser acessíveis a sa ou outras entidades de servidor altamente privilegiadas. A criação de uma credencial de chave mestra para esse banco de dados remove essa defesa em profundidade, permitindo que sa e outras entidades de servidor altamente privilegiadas descriptografem o banco de dados.
As credenciais criadas usando sp_control_dbmasterkey_password ficam visíveis no modo de exibição de catálogo sys.master_key_passwords. Os nomes de credenciais criados 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 da 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 do 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ção
Dois bancos de dados de instâncias de servidor diferentes podem compartilhar o mesmo GUID da família. Se isso ocorrer, os bancos de dados compartilharão os mesmos registros de chave mestra no repositório de credenciais.
Os parâmetros passados para sp_control_dbmasterkey_password não aparecem nos rastreamentos.
Observação
Quando você estiver usando a credencial que foi adicionada usando sp_control_dbmasterkey_password para abrir a chave mestra do banco de dados, a chave mestra do banco de dados será criptografada novamente pela chave mestra de serviço. Se o banco de dados estiver no modo somente leitura, a operação de recriptografia falhará e a chave mestra do banco de dados permanecerá não criptografada. Para acesso subsequente à chave mestra do 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 que 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 do banco de dados e salva a AdventureWorks2022
senha da chave mestra como o 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 texto são convertidas com o operador N
de conversão .
EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';
GO
B. Descartando 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, incluindo a senha.
EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO
Veja 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)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de