Поделиться через


ALTER MASTER KEY (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Изменяет свойства главного ключа базы данных.

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

Синтаксис

-- Syntax for SQL Server

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password'

<encryption_option> ::=
    ADD ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
    |
    DROP ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
-- Syntax for Azure SQL Database
-- Note: DROP ENCRYPTION BY SERVICE MASTER KEY is not supported on Azure SQL Database.

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password'

<encryption_option> ::=
    ADD ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
    |
    DROP ENCRYPTION BY { PASSWORD = 'password' }
-- Syntax for Azure Synapse Analytics and Analytics Platform System

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD ='password'

<encryption_option> ::=
    ADD ENCRYPTION BY SERVICE MASTER KEY
    |
    DROP ENCRYPTION BY SERVICE MASTER KEY

Аргументы

PASSWORD ='password' — указывает пароль, используемый для шифрования или расшифровки главного ключа базы данных. пароль должен соответствовать требованиям политики паролей Windows компьютера, на котором выполняется экземпляр SQL Server.

Замечания

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

SQL Server 2012 (11.x) использует алгоритм шифрования AES для защиты главного ключа службы (SMK) и главного ключа базы данных (DMK). AES - это новый алгоритм шифрования, отличный от алгоритма 3DES, используемого в более ранних версиях. После обновления экземпляра ядро СУБД до SQL Server 2012 (11.x) smK и DMK необходимо повторно создать, чтобы обновить главные ключи до AES. Дополнительные сведения о повторном создании главного ключа базы данных см. в статье об ALTER SERVICE MASTER KEY.

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

Фраза DROP ENCRYPTION BY SERVICE MASTER KEY позволяет отменить шифрование главного ключа базы данных с помощью главного ключа службы.

Фраза ADD ENCRYPTION BY SERVICE MASTER KEY приводит к шифрованию копии главного ключа с помощью главного ключа службы, которая затем сохраняется как в текущей базе данных, так и в базе данных master.

Разрешения

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

Примеры

На этом примере показано, как создается новый главный ключ базы данных AdventureWorks, после чего повторно шифруются ключи, стоящие внизу в иерархии шифрования.

USE AdventureWorks2022;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'dsjdkflJ435907NnmM#sX003';
GO

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

На этом примере показано, как создается новый главный ключ базы данных AdventureWorksPDW2012, после чего повторно шифруются ключи, стоящие внизу в иерархии шифрования.

USE master;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'dsjdkflJ435907NnmM#sX003';
GO

См. также