sp_control_dbmasterkey_password (Transact-SQL)

Применимо к:Управляемому экземпляру SQL Server Azure

Добавляет или удаляет учетные данные, содержащие пароль, необходимый для открытия главного ключа базы данных.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

@db_name=N"database_name"
Указывает имя базы данных, ассоциированной с этими учетными данными. База данных не может быть системной. database_name — nvarchar.

@password=NПароль
Указывает пароль для главного ключа. парольnvarchar.

@action=N'add'
Указывает на то, что учетные данные для указанной базы данных будет добавлены в хранилище учетных данных. Учетные данные будут содержать пароль главного ключа базы данных. Переданное значение @action — nvarchar.

@action=N'drop'
Указывает на то, что учетные данные для указанной базы данных будет удалены из хранилища учетных данных. Переданное значение @action — nvarchar.

Замечания

Если SQL Server требуется главный ключ базы данных для расшифровки или шифрования ключа, SQL Server пытается расшифровать главный ключ базы данных с помощью главного ключа службы экземпляра. Если расшифровка завершается ошибкой, SQL Server выполняет поиск хранилища учетных данных для учетных данных главного ключа, имеющих тот же идентификатор GUID семейства, что и база данных, для которой требуется главный ключ. Затем SQL Server пытается расшифровать главный ключ базы данных с каждым соответствующими учетными данными до тех пор, пока расшифровка не будет выполнена или нет дополнительных учетных данных.

Внимание

Не создавайте учетные данные главного ключа для базы данных, которая должна быть недоступна sa и другим привилегированным участникам [системы безопасности] на уровне сервера. База данных может быть настроена таким образом, чтобы иерархия ее ключей не могла быть расшифрована главным ключом службы. Этот параметр поддерживается для максимальной защиты баз данных, содержащих зашифрованные сведения, которые не должны быть доступны sa или другим привилегированным участникам [системы безопасности] на уровне сервера. Создание учетных данных главного ключа для такой базы данных сводит на нет эту защиту, позволяя sa и другим привилегированным участникам [системы безопасности] на уровне сервера расшифровывать базу данных.

Учетные данные, созданные с помощью sp_control_dbmasterkey_password, отображаются в представлении каталога sys.master_key_passwords . Имена учетных данных, созданных для главных ключей базы данных, имеют следующий формат: ##DBMKEY_<database_family_guid>_<random_password_guid>## Пароль хранится как секретные учетные данные. Для каждого пароля, добавленного в хранилище учетных данных, существует строка в представлении sys.credentials.

Нельзя использовать sp_control_dbmasterkey_password для создания учетных данных для следующих системных баз данных: master, model, msdb или tempdb.

Процедура sp_control_dbmasterkey_password не проверяет возможность пароля открывать главный ключ указанной базы данных.

Если задан пароль, который уже хранится в учетных данных для указанной базы данных, выполнение процедуры sp_control_dbmasterkey_password будет завершено неудачно.

Заметка

Две базы данных из различных экземпляров сервера могут иметь один и тот же идентификатор GUID семейства. Если такое происходит, базы данных будут иметь одну и ту же запись главного ключа в хранилище учетных данных.

Параметры, переданные в процедуру sp_control_dbmasterkey_password, не появляются в трассировках.

Заметка

Если учетные данные, добавленные с помощью процедуры sp_control_dbmasterkey_password, используются для открытия главного ключа базы данных, то главный ключ базы данных повторно шифруется главным ключом службы. Если база данных находится в режиме только для чтения, то операция повторного шифрования оканчивается неудачей и главный ключ базы данных останется незашифрованным. Для последующего доступа к главному ключу базы данных необходимо использовать инструкцию OPEN MASTER KEY и пароль. Чтобы избежать необходимости использовать пароль, создавайте учетные данные до того, как база данных будет переведена в режим только для чтения.

Потенциальная проблема с обратной совместимостью. В настоящее время хранимая процедура не проверяет, существует ли главный ключ. Это разрешено для обратной совместимости, но при этом отображается предупреждение. Такое поведение является устаревшим. В будущем выпуске главный ключ должен существовать, а пароль, используемый в хранимой процедуре , sp_control_dbmasterkey_password должен совпадать с одним из паролей, используемых для шифрования главного ключа базы данных.

Разрешения

Необходимо членство в предопределенной роли сервера sysadmin .

Примеры

О. Создание учетных данных для главного ключа AdventureWorks

В следующем примере создаются учетные данные для главного ключа базы данных AdventureWorks2022, пароль главного ключа сохраняется в виде секретного кода в учетных данных. Так как все передаваемые sp_control_dbmasterkey_password параметры должны иметь тип данных nvarchar, текстовые строки преобразуются с помощью оператора Nприведения.

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

B. Удаление учетных данных для главного ключа базы данных

В следующем примере удаляются учетные данные, созданные в примере A. Обратите внимание, что все параметры являются обязательными, включая пароль.

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

См. также

Настройка зашифрованной зеркальной базы данных
Хранимые процедуры безопасности (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sys.credentials (Transact-SQL)
Учетные данные (ядро СУБД)