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


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

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL Azure

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

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

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

Если ваша база данных не настроена с безопасным анклавом, мастер даст вам возможность включить безопасный анклав. Если вы решили не включать безопасный анклав или не используете ключи с включенной поддержкой анклава, мастер работает, перемещая данные из базы данных и выполняя криптографические операции в процессе SQL Server Management Studio (SSMS). Мастер создает новую таблицу (или таблицы) с требуемой конфигурацией шифрования в базе данных, загружает все данные из исходных таблиц, выполняет запрошенные операции шифрования, передает данные в новые таблицы, а затем меняет местами исходные таблицы с новыми.

Совет

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

Примечание.

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

Разрешения

Для выполнения криптографических операций с помощью мастера необходимо иметь разрешения на VIEW ANY COLUMN MASTER KEY DEFINITION и VIEW ANY COLUMN ENCRYPTION KEY DEFINITION. Вам также нужны разрешения хранилища ключей для создания, доступа и использования главного ключа столбца. Подробные сведения о разрешениях хранилища ключей см. в разделе "Создание и хранение главных ключей столбцов" для Always Encrypted или найдите в статье подраздел, соответствующий вашему хранилищу ключей.

Запуск мастера Always Encrypted

Мастер можно запустить на трех разных уровнях.

  • На уровне базы данных — если необходимо зашифровать несколько столбцов, расположенных в разных таблицах.
  • На уровне таблицы — если необходимо зашифровать несколько столбцов, расположенных в одной таблице.
  • На уровне столбца — если требуется зашифровать один конкретный столбец.
  1. Подключитесь к SQL Server с помощью компонента обозреватель объектов SQL Server Management Studio.

  2. Чтобы зашифровать следующие элементы:

    1. Несколько столбцов, расположенных в разной таблице в базе данных, щелкните правой кнопкой мыши базу данных, наведите указатель на задачи и выберите пункт "Шифрование столбцов".
    2. Несколько столбцов, расположенных в одной таблице, перейдите к таблице, щелкните ее правой кнопкой мыши и выберите "Зашифровать столбцы".
    3. Отдельный столбец, перейдите к столбцу, щелкните его правой кнопкой мыши и выберите "Зашифровать столбцы".

Страница выбора столбцов

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

Чтобы зашифровать столбец с открытым текстом (столбец, который не зашифрован), выберите тип шифрования (детерминированный или случайный) и ключ шифрования для столбца.

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

Если вы хотите, чтобы мастер зашифровать или повторно зашифровать один или несколько столбцов с помощью нового ключа шифрования столбца, выберите ключ, содержащий (New) в его имени. Мастер создаст ключ.

Чтобы расшифровать столбец, который в настоящее время зашифрован, выберите обычный текст для типа шифрования.

Примечание.

Если вы хотите использовать шифрование на месте и применяете существующие ключи, убедитесь, что вы выбрали ключи с поддержкой анклава — помеченные как (с поддержкой анклава).

Примечание.

Мастер не поддерживает криптографические операции с темпоральными таблицами и таблицами в памяти. Можно создать пустые темпоральные таблицы или таблицы в памяти с помощью Transact-SQL и вставить данные через приложение.

Страница "Конфигурация главного ключа"

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

При настройке нового главного ключа столбца можно выбрать существующий ключ в хранилище сертификатов Windows или в Azure Key Vault и создать в мастере только объект метаданных для ключа в базе данных, или вы можете создать как ключ, так и объект метаданных, описывающий ключ в базе данных.

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

Дополнительные сведения о создании и хранении главных ключей столбцов в Хранилище сертификатов Windows, Azure Key Vault или других хранилищах ключей см. в статье Создание и хранение главных ключей столбцов для always Encrypted или Управление ключами для Always Encrypted с помощью безопасных анклавов.

Совет

Мастер позволяет просматривать и создавать ключи только в хранилище сертификатов Windows и Azure Key Vault. Он также автоматически создает имена новых ключей и объектов метаданных базы данных, описывающих ключи. Если вам нужен дополнительный контроль над подготовкой ключей (и другие варианты для хранилища ключей, содержащего главный ключ столбца), можно использовать диалоги "Новый главный ключ столбца " и "Новый ключ шифрования столбцов ", чтобы сначала создать ключи, а затем запустить мастер и выбрать созданные ключи. См. "Подготовка главных ключей столбцов" с помощью диалогового окна "Новый главный ключ столбца" или "Подготовка ключей, поддерживающих анклав" и "Подготовка ключей шифрования столбцов" с помощью диалогового окна "Новый ключ шифрования столбцов".

Страница "Параметры шифрования на месте"

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

Дополнительные сведения об аттестации анклава см. в статье Настройка аттестации для Always Encrypted с помощью аттестации Azure

После шифрования

Снимите кэш плана для всех пакетов и хранимых процедур, которые обращаются к таблице для обновления сведений о шифровании параметров.

ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

Примечание.

Если вы не удалите план для затронутого запроса из кэша, первое выполнение запроса после шифрования может завершиться неудачно.

Используйте ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE или DBCC FREEPROCCACHE для тщательного очищения кэша планов, так как это может привести к временному снижению производительности запросов. Чтобы свести к минимуму негативное влияние очистки кэша, можно выборочно удалить планы только затронутых запросов.

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