Включение Always Encrypted с безопасными анклавами для существующих зашифрованных столбцов
Область применения: SQL Server 2019 (15.x) и более поздних версий — Windows только База данных SQL Azure
В этой статье приводятся сведения о разблокировке функциональности Always Encrypted с безопасными анклавами и включении вычислений анклава для существующих зашифрованных столбцов.
Если существующие столбцы зашифрованы с помощью ключей без поддержки анклава, их можно преобразовать в столбцы, зашифрованные с помощью ключей с поддержкой анклава. Это позволит использовать безопасный анклав в запросах к столбцам.
Существует несколько разных способов включить вычисления анклава для существующих зашифрованных столбцов. Выбор метода зависит от нескольких факторов.
- Область или степень детализации. Вы хотите включить функцию анклава для подмножества столбцов или для всех столбцов, защищенных данным главным ключом столбцов?
- Размер данных. Каков размер таблиц, содержащих столбцы, для которых нужно реализовать поддержку анклава?
- Вы также хотите изменить тип шифрования для своих столбцов? Помните, что только случайное шифрование поддерживает полнофункциональные вычисления (сопоставление шаблонов, операторы сравнения). Если столбец зашифрован с использованием детерминированного шифрования, придется повторно зашифровать его с помощью случайного шифрования, чтобы разблокировать возможности вычислений.
В следующих разделах описываются три способа реализации поддержки анклавов для существующих столбцов.
Метод 1. Смена главного ключа столбца, чтобы заменить его главным ключом столбца с поддержкой анклава
Процесс замены существующего главного ключа столбца, который не поддерживает анклав, на новый главный ключ столбца, который поддерживает анклав, эффективно реализует поддержку анклава для всех ключей шифрования столбцов, связанных с главным ключом столбца.
Преимущества.
- Не требуется повторное шифрование данных, то есть обычно это самый быстрый подход. Это рекомендуемый подход для содержащих большие объемы данных столбцов, которые уже включены для полнофункциональных вычислений и используют детерминированное шифрование.
- Позволяет включить функциональность анклава для нескольких столбцов в масштабе. Процесс замены главного ключа столбца на главный ключ столбца с поддержкой анклава реализует поддержку анклава для всех ключей шифрования столбцов и всех зашифрованных столбцов, связанных с исходным главным ключом столбца.
Недостатки.
- Не поддерживает изменение типа шифрования с детерминированного на случайное. Хотя этот вариант разблокирует шифрование на месте для столбцов, использующих детерминированное шифрование, он не включает полнофункциональные вычисления. Необходимо повторно зашифровать столбцы с помощью случайного шифрования.
- Не позволяет выборочно преобразовывать некоторые столбцы, связанные с данным главным ключом столбца.
- Вводит накладные расходы на управление ключами. Необходимо создать новый главный ключ столбца и сделать его доступным для приложений, которые запрашивают затрагиваемые столбцы.
Сведения о замене главного ключа столбца см. в статье Смена ключей с поддержкой анклава.
Метод 2. Смена главного ключа столбца и повторное шифрование столбцов с помощью случайного шифрования на месте
В качестве первого шага здесь необходимо выполнить метод 1, а затем зашифровать столбцы повторно. К столбцам сначала применяется детерминированное шифрование, а затем они повторно шифруются с использованием случайного шифрования для поддержки выполнения расширенных запросов.
Преимущества.
- Повторно шифрует данные на месте. Этот метод рекомендуется, если требуется использовать расширенные запросы для детерминированно зашифрованных столбцов, содержащих большие объемы данных. Шаг 1 (смена главного ключа столбца) разблокирует шифрование на месте для столбцов, использующих детерминированное шифрование, поэтому шаг 2 (повторное шифрование столбцов) можно выполнить на месте.
- Позволяет включить функциональность анклава для нескольких столбцов в масштабе.
Недостатки.
- Не позволяет выборочно преобразовывать некоторые столбцы, связанные с данным главным ключом столбца.
- Вводит накладные расходы на управление ключами. Необходимо создать новый главный ключ столбца и сделать его доступным для приложений, которые запрашивают затрагиваемые столбцы.
Сведения о смене главного ключа столбца и повторном шифровании столбца на месте для смены ключа шифрования столбца см. в статье Смена ключей с поддержкой анклава.
Метод 3. Повторное шифрование выбранного столбца с помощью ключа шифрования столбца с поддержкой анклава на стороне клиента
Этот метод предусматривает повторное шифрование столбца с помощью ключа шифрования столбца с поддержкой анклава, а также включение расширенных запросов со случайным шифрованием. Поскольку текущий ключ шифрования столбца не поддерживает анклав, повторное шифрование столбца на месте невозможно. Используйте мастер Always Encrypted или командлет Set-SqlColumnEncryption для повторного шифрования столбца базы данных.
Преимущества.
- Позволяет выборочно включить функциональные возможности анклава (шифрование на месте и расширенные запросы, если вы повторно шифруете столбец случайным шифрованием) для одного столбца или небольшого подмножества столбцов.
- Он может включать полнофункциональные вычисления для столбцов за один шаг.
Недостатки.
- Чтобы повторно зашифровать данные, средство переместит их за пределы базы данных, что может занять много времени и стать причиной ошибок в сети.
- Вводит накладные расходы на управление ключами. Необходимо создать новый главный ключ столбца и сделать его доступным для приложений, которые запрашивают затрагиваемые столбцы.
Дополнительные сведения о смене шифрования столбцов с помощью клиентского средства см. в статьях Смена ключей Always Encrypted с помощью SQL Server Management Studio и Смена ключей Always Encrypted с помощью PowerShell.