sp_control_dbmasterkey_password (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Добавляет или удаляет учетные данные, содержащие пароль, необходимый для открытия главного ключа базы данных (DMK).
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_control_dbmasterkey_password @db_name = 'db_name'
, @password = 'password'
, @action = { N'add' | N'drop' }
Аргументы
@db_name= N'db_name'
Указывает имя базы данных, ассоциированной с этими учетными данными. Не может быть системной базой данных. @db_name — nvarchar.
@password= N'password'
Задает пароль динамического интеллектуального анализа данных. @password — nvarchar.
@action = { N'add' | N'drop' }
Указывает действие для учетных данных для указанной базы данных в хранилище учетных данных. Значение, переданное в @action , — nvarchar.
Действие | Description |
---|---|
add |
Указывает на то, что учетные данные для указанной базы данных будет добавлены в хранилище учетных данных. Учетные данные содержат пароль интеллектуального анализа данных. |
drop |
Указывает на то, что учетные данные для указанной базы данных будет удалены из хранилища учетных данных. |
Замечания
Если SQL Server требует интеллектуального анализа данных для расшифровки или шифрования ключа, SQL Server пытается расшифровать dmK с помощью главного ключа службы (SMK) экземпляра. Если расшифровка завершается ошибкой, SQL Server выполняет поиск хранилища учетных данных для учетных данных, имеющих тот же идентификатор GUID семейства, что и база данных, для которой требуется ключ. Затем SQL Server пытается расшифровать dmK с каждым соответствующими учетными данными, пока расшифровка не будет выполнена или нет дополнительных учетных данных.
Внимание
Не создавайте учетные данные главного ключа для базы данных, которая должна быть недоступна sa
и другим субъектам сервера с высоким уровнем привилегий. Базу данных можно настроить таким образом, чтобы ее иерархия ключей не была расшифровывается с помощью SMK. Этот параметр поддерживается в качестве глубокой защиты для баз данных, содержащих зашифрованные сведения, которые не должны быть доступны 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
Не проверяет, что пароль может открыть dmK указанной базы данных.
Если указать пароль, который уже хранится в учетных данных указанной базы данных, sp_control_dbmasterkey_password
завершается ошибкой.
Две базы данных из различных экземпляров сервера могут иметь один и тот же идентификатор GUID семейства. В этом случае базы данных используют те же записи DMK в хранилище учетных данных.
Параметры, передаваемые в sp_control_dbmasterkey_password
трассировку, не отображаются.
Когда вы используете учетные данные, добавленные с помощью sp_control_dbmasterkey_password
для открытия dmK, dmK повторно шифруется с помощью SMK. Если база данных находится в режиме только для чтения, операция повторного шифрования завершается сбоем, и dmK остается незашифрованным. Для последующего доступа к dmK необходимо использовать OPEN MASTER KEY
инструкцию и пароль. Чтобы избежать необходимости использовать пароль, создавайте учетные данные до того, как база данных будет переведена в режим только для чтения.
Потенциальная проблема с обратной совместимостью
В настоящее время хранимая процедура не проверяет, существует ли ключ. Эта функция разрешена для обратной совместимости, но отображает предупреждение. Такое поведение является устаревшим. В будущем выпуске ключ должен существовать, а пароль, используемый в хранимой процедуре sp_control_dbmasterkey_password
, должен совпадать с одним из паролей, используемых для шифрования dmK.
Разрешения
Требуется членство в предопределенных ролях сервера sysadmin или разрешение на выполнение непосредственно в этой хранимой процедуре.
Примеры
Примеры кода Transact-SQL в этой статье используют AdventureWorks2022
базу данных или AdventureWorksDW2022
пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.
А. Создание учетных данных для главного ключа 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