Настройка шифрования столбцов с помощью Always Encrypted с пакетом приложения уровня данных

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

Пакет приложения уровня данных (DAC), также известный как DACPAC, является переносимой единицей развертывания базы данных SQL Server, определяющей все объекты SQL Server, включая таблицы и столбцы внутри таблиц. При публикации DACPAC в базу данных (при обновлении базы данных с помощью DACPAC) схема целевой базы данных обновляется в соответствии со схемой в DACPAC. DACPAC можно опубликовать с помощью мастера обновления приложения уровня данных в SQL Server Management Studio, PowerShell или sqlpackage.

В этой статье рассматриваются особые замечания относительно обновления базы данных, когда DACPAC или (и) целевая база данных содержит столбцы, защищенные с помощью Always Encrypted. Если схема шифрования столбца в DACPAC отличается от схемы шифрования существующего столбца в целевой базе данных, при публикации DACPAC происходит шифрование, расшифровка или повторное шифрование хранящихся в столбце данных. Подробные сведения приведены в представленной ниже таблице.

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

Развертывание пакета DAC может также привести к созданию или удалению объектов метаданных для главных ключей столбцов или ключей шифрования столбцов в Always Encrypted.

Замечания, связанные с быстродействием

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

Заметка

Если вы используете SQL Server 2019 (15.x) и экземпляр SQL Server настроен с безопасным анклавом, вы можете выполнять криптографические операции на месте без перемещения данных из базы данных. См. статью Настройка шифрования столбцов на месте с помощью Always Encrypted с безопасными анклавами. Обратите внимание, что шифрование на месте недоступно для развертываний DACPAC.

Разрешения для публикации пакета DAC, если функция Always Encrypted настроена

Для публикации пакета DAC в случае, если функция Always Encrypted настроена в DACPAC или (и) целевой базе данных, могут потребоваться некоторые или все перечисленные ниже разрешения, которые зависят от различий между схемой в DACPAC и схемой целевой базы данных.

ALTER ANY COLUMN MASTER KEY, ALTER ANY COLUMN ENCRYPTION KEY, VIEW ANY COLUMN MASTER KEY DEFINITION, VIEW ANY COLUMN ENCRYPTION KEY DEFINITION

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

Дальнейшие действия

См. также