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


Ротация ключей Always Encrypted с помощью SQL Server Management Studio

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Обзор управления ключами Always Encrypted, включая общие рекомендации и важные вопросы безопасности, см. в разделе Общие сведения об управлении ключами Always Encrypted.

Примечание.

Чтобы использовать главные ключи столбцов, хранящиеся в управляемом модуле HSM в Azure Key Vault, требуется SSMS 18.9 или более поздних версий.

Перемещение главных ключей столбцов

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

Шаг 1. Создание нового мастер-ключа столбца

Следуйте инструкциям в разделе Настройка главных ключей столбцов с использованием диалогового окна "Новый главный ключ столбца".

Шаг 2. Шифрование ключей шифрования столбцов с помощью нового главного ключа столбца

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

  1. Используя обозреватель объектов, перейдите в папку Безопасность>Always Encrypted Keys>Главные ключи столбцов и найдите главный ключ столбца, который вы заменяете.
  2. Щелкните правой кнопкой мыши главный ключ столбца и выберите Обновить.
  3. В диалоговом окне Смена главного ключа столбца выберите имя нового главного ключа столбца, созданного на шаге 1, в поле Целевой объект .
  4. Просмотрите список ключей шифрования столбцов, которые защищены существующими главными ключами столбцов. Эти ключи будут затронуты ротацией.
  5. Щелкните OK.

Среда SQL Server Management Studio получит метаданные ключей шифрования столбцов, защищенных с помощью старого главного ключа столбца, и метаданные старого и нового главных ключей столбцов. Затем среда SSMS с помощью метаданных главного ключа столбцов получит доступ к хранилищу ключей, содержащему старого главного ключа столбца, и расшифрует ключи шифрования столбца. После этого среда SSMS обратится в хранилище ключей, содержащее новый главный ключ столбца, чтобы создать набор зашифрованных значений ключей шифрования столбцов. Затем среда добавит новые значения в метаданные (создав и выполнив инструкции ALTER COLUMN ENCRYPTION KEY (Transact-SQL) ).

Примечание.

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

Шаг 3: Настройте ваши приложения с использованием нового ключа шифрования столбца

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

  • Если новый главный ключ столбца представляет собой сертификат из хранилища сертификатов Windows, необходимо развернуть этот сертификат в том же расположении хранилища сертификатов (текущего пользователя или локального компьютера), которое указано в пути к главному ключу столбца в базе данных. Приложение должно иметь доступ к сертификату:
    • Если сертификат хранится в хранилище сертификатов текущего пользователя, его необходимо импортировать в хранилище текущего пользователя для данной Windows-учетной записи приложения.
    • Если сертификат хранится в расположении хранилища сертификатов локального компьютера, идентификация Windows приложения должна иметь разрешение на доступ к этому сертификату.
  • Если новый главный ключ столбца хранится в хранилище ключей Microsoft Azure, приложение должно быть реализовано так, чтобы оно могло пройти проверку подлинности в Azure и имело разрешение на доступ к ключу.

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

Примечание.

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

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

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

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

Предупреждение

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

  1. Используя Обозреватель объектов, перейдите в папку > и найдите существующий главный ключ столбца, который требуется заменить.
  2. Щелкните правой кнопкой мыши на вашем существующем колоночном мастер-ключе и выберите Очистить.
  3. Просмотрите список значений ключей шифрования столбцов для удаления.
  4. Щелкните OK.

Среда SQL Server Management Studio выполнит инструкции ALTER COLUMN ENCRYPTION KEY (Transact-SQL) для удаления зашифрованных значений ключей шифрования столбцов, которые зашифрованы с помощью старого главного ключа столбца.

Шаг 5. Удаление метаданных для старого главного ключа столбца

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

  1. С помощью Обозреватель объектов перейдите в папку Безопасность>Всегда шифрованные ключи>Основные ключи столбцов и найдите старый основной ключ столбца, который будет удален из базы данных.
  2. Щелкните правой кнопкой мыши старый главный ключ столбца и выберите Удалить. (Будет создана и выполнена инструкция DROP COLUMN MASTER KEY (Transact-SQL) для удаления метаданных главного ключа столбца.)
  3. Щелкните OK.

Примечание.

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

Разрешения на смену главных ключей столбцов

Для ротации главного ключа столбца требуются следующие разрешения базы данных.

  • ALTER ANY COLUMN MASTER KEY — требуется для создания метаданных для нового главного ключа столбца и удаления метаданных для старого главного ключа столбца.
  • ALTER ANY COLUMN ENCRYPTION KEY — требуется для изменения метаданных ключа шифрования столбца (для добавления новых зашифрованных значений).

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

Перестановка ключей шифрования столбцов

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

Примечание.

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

  1. Откройте мастер в базе данных. Для этого щелкните правой кнопкой мыши базу данных, наведите курсор на пункт Задачи, а затем щелкните Зашифровать столбцы.
  2. Прочитайте страницу Введение , а затем нажмите кнопку Далее.
  3. На странице Выбор столбцов разверните таблицы и найдите все подлежащие замене столбцы, которые зашифрованы с помощью старого ключа шифрования столбца.
  4. Для каждого такого столбца задайте в качестве значения ключа шифрования новый автоматически созданный ключ. Примечание. Кроме того, можно создать новый ключ шифрования столбцов перед запуском мастера. См. раздел "Подготовка ключей шифрования столбцов" с помощью диалогового окна "Новый ключ шифрования столбцов".
  5. На странице Конфигурация главного ключа выберите расположение для сохранения нового ключа и источник главного ключа, а затем нажмите кнопку Далее. Примечание. Если вы используете существующий ключ шифрования столбцов (а не автоматически сформированный), на этой странице не выполняется никаких действий.
  6. На странице Проверкавыберите, требуется ли немедленно запустить сценарий, или создайте сценарий PowerShell и нажмите кнопку Далее.
  7. На странице Сводка просмотрите выбранные параметры и нажмите кнопку Готово, чтобы закрыть мастер.
  8. В обозревателе объектовперейдите в папку Безопасность/Ключи постоянного шифрования/Ключи шифрования столбцов и найдите старый ключ шифрования столбца, который требуется удалить из базы данных. Щелкните ключ правой кнопкой мыши и выберите команду Удалить.

Разрешения на смену ключей шифрования столбцов

Для замены ключа шифрования столбца требуются следующие разрешения базы данных: ALTER ANY COLUMN MASTER KEY — требуется, если вы используете новый автоматически сгенерированный ключ шифрования столбца (также будут созданы новый главный ключ столбца и его метаданные). ALTER ANY COLUMN ENCRYPTION KEY — требуется для добавления метаданных для нового ключа шифрования столбца.

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

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

См. также