Включение 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.

Следующие шаги