Ротация ключей 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. Шифрование ключей шифрования столбцов с помощью нового главного ключа столбца
Как правило, главный ключ столбца защищает один или несколько ключей шифрования столбцов. Каждый ключ шифрования столбца имеет зашифрованное значение, хранящееся в базе данных, которое является результатом шифрования ключа шифрования столбца с помощью главного ключа столбца. На этом шаге необходимо зашифровать все ключи шифрования столбцов, защищенные заменяемым главным ключом столбца, с помощью нового главного ключа столбца и сохранить новое зашифрованное значение в базе данных. В результате каждый ключ шифрования столбца, затрагиваемый сменой, будет иметь два зашифрованных значения: одно значение, зашифрованное существующим главным ключом столбца, и новое значение, зашифрованное новым главным ключом столбца.
- Используя обозреватель объектов, перейдите в папку главных ключей столбцов безопасности>Always Encrypted и> найдите главный ключ столбца, который вы поворачиваете.
- Щелкните правой кнопкой мыши этот главный ключ столбца и выберите Сменить.
- В диалоговом окне Смена главного ключа столбца выберите имя нового главного ключа столбца, созданного на шаге 1, в поле Целевой объект .
- Просмотрите список ключей шифрования столбца, защищенных существующими главными ключами столбца. Эти ключи будут затронуты сменой.
- Щелкните OK.
Среда SQL Server Management Studio получит метаданные ключей шифрования столбцов, защищенных с помощью старого главного ключа столбца, и метаданные старого и нового главных ключей столбцов. Затем среда SSMS с помощью метаданных главного ключа столбца получит доступ к хранилищу ключей, содержащему старый главный ключа столбца, и расшифрует ключи шифрования столбцов. После этого среда SSMS обратится в хранилище ключей, содержащее новый главный ключ столбца, чтобы создать набор зашифрованных значений ключей шифрования столбцов. Затем среда добавит новые значения в метаданные (создав и выполнив инструкции ALTER COLUMN ENCRYPTION KEY (Transact-SQL) ).
Примечание.
Убедитесь, что каждый ключ шифрования столбца, зашифрованный старым главным ключом столбца, не зашифрован с помощью какого-либо другого главного ключа столбца. Другими словами, каждый ключ шифрования столбца, затрагиваемый сменой, должен иметь ровно одно зашифрованное значение в базе данных. Если какой-либо из затрагиваемых ключей шифрования столбца имеет несколько зашифрованных значений, необходимо удалить лишние значения, прежде чем продолжать смену (см. шаг 4 по удалению зашифрованного значения ключа шифрования столбца).
Шаг 3. Настройка приложений с помощью нового главного ключа столбца
На этом шаге необходимо убедиться, что все клиентские приложения, запрашивающие столбцы базы данных и защищенные с помощью главного ключа столбца, который планируется сменить (то есть столбцы базы данных зашифрованы с помощью ключа шифрования столбца, который зашифрован заменяемым главным ключом столбца), имеют доступ к новому главному ключу столбца. Этот шаг зависит от типа хранилища ключей, используемого для хранения нового главного ключа столбца. Например:
- Если новый главный ключ столбца является сертификатом из хранилища сертификатов Windows, необходимо развернуть этот сертификат в том же расположении хранилища сертификатов (текущего пользователя или локального компьютера), которое указано в пути к главному ключу столбца в базе данных. Приложение должно иметь доступ к сертификату:
- Если сертификат хранится в расположении хранилища сертификатов текущего пользователя, сертификат необходимо импортировать в хранилище текущего пользователя удостоверения Windows приложения.
- Если сертификат хранится в расположении хранилища сертификатов локального компьютера, удостоверение Windows приложения должно иметь разрешение на доступ к этому сертификату.
- Если новый главный ключ столбца хранится в хранилище ключей Microsoft Azure, приложение должно быть реализовано так, чтобы оно могло пройти проверку подлинности в Azure и имело разрешение на доступ к ключу.
Дополнительные сведения см. в разделе Создание и хранение главных ключей столбцов для Always Encrypted.
Примечание.
На этом этапе процедуры смены и старый, и новый главные ключи столбца являются действительными и могут использоваться для доступа к данным.
Шаг 4. Очистка значений ключа шифрования столбца, зашифрованных с помощью старого главного ключа столбца
После настройки использования нового главного ключа столбца во всех приложениях удалите из базы данных значения ключей шифрования столбца, зашифрованные с помощью старого главного ключа столбца. После удаления старых значений все будет готово к новой смене (учитывайте, что для смены главного ключа столбца каждый ключ шифрования столбца, защищенный с помощью главного ключа столбца, должен иметь ровно одно зашифрованное значение).
Еще одна причина для очистки старого значения до архивации или удаления старого главного ключа связана с производительностью: при запросе зашифрованного столбца драйвер клиента с поддержкой постоянного шифрования может попытаться расшифровать два значения — старое и новое. У драйвера нет сведения о том, какой из двух главных ключей столбца является действительным в среде приложения. Поэтому драйвер будет извлекать оба зашифрованных значения с сервера. Если одно из значений не удается расшифровать, так как оно защищено недоступным главным ключом столбца (например, это старый главный ключ столбца, который был удален из хранилища), драйвер будет пытаться расшифровать другое значение с помощью нового главного ключа столбца.
Предупреждение
Если удалить значение ключа шифрования столбца до того, как его соответствующий главный ключ столбца станет доступным для приложения, это приложение больше не сможет расшифровывать столбец базы данных.
- Используя обозреватель объектов, перейдите в папку "Ключи always Encrypted Security>" и найдите существующий главный ключ столбца, который требуется заменить.
- Щелкните правой кнопкой мыши существующий главный ключ столбца и выберите Очистить.
- Просмотрите список значений ключей шифрования столбцов для удаления.
- Щелкните OK.
Среда SQL Server Management Studio выполнит инструкции ALTER COLUMN ENCRYPTION KEY (Transact-SQL) для удаления зашифрованных значений ключей шифрования столбцов, которые зашифрованы с помощью старого главного ключа столбца.
Шаг 5. Удаление метаданных для старого главного ключа столбца
Если вы решили удалить определение старого главного ключа столбца из базы данных, выполните действия, описанные ниже.
- С помощью обозреватель объектов перейдите в папку "Основные ключи столбцов столбцов безопасности>Always Encrypted"> и найдите старый главный ключ столбца, который будет удален из базы данных.
- Щелкните правой кнопкой мыши старый главный ключ столбца и выберите Удалить. (Будет создана и выполнена инструкция DROP COLUMN MASTER KEY (Transact-SQL) для удаления метаданных главного ключа столбца.)
- Щелкните OK.
Примечание.
Настоятельно рекомендуется не удалять старый главный ключ столбца после смены без возможности восстановления. Старый главный ключ столбца следует сохранить в его текущем хранилище ключей или скопировать в другое надежное место. Старый ключ потребуется при восстановлении базы данных из файла резервной копии на момент времени, предшествующий настройке нового главного ключа столбца.
Разрешения на смену главных ключей столбцов
Для смены главного ключа столбца необходимы указанные далее разрешения базы данных.
- ALTER ANY COLUMN MASTER KEY — требуется для создания метаданных для нового главного ключа столбца и удаления метаданных для старого главного ключа столбца.
- ALTER ANY COLUMN ENCRYPTION KEY — требуется для изменения метаданных ключа шифрования столбца (для добавления новых зашифрованных значений).
Вам также требуются разрешения для хранилищ ключей на доступ к старому и новому главным ключам столбцов в их хранилищах. Дополнительные сведения о разрешениях для хранилища ключей, необходимых, чтобы выполнять операции управления ключами, см. в статье Создание и хранение главных ключей столбцов для Always Encrypted в разделе о нужном хранилище.
Выполнение циклического сдвига ключей шифрования столбцов
Процедура смены ключа шифрования столбца включает в себя действия по расшифровке данных во всех столбцах, которые зашифрованы с помощью подлежащего смене ключа, и повторному шифрованию данных с помощью нового ключа шифрования столбца.
Примечание.
Смена ключа шифрования столбца может занимать очень много времени, если размер таблиц, содержащих столбцы, зашифрованные с помощью заменяемого ключа, слишком велик. Во время повторного шифрования данных приложения не смогут выполнять запись в затрагиваемые таблицы. Поэтому организации необходимо очень тщательно спланировать процесс смены ключа шифрования столбца. Для смены ключа шифрования столбца используется мастер постоянного шифрования.
- Откройте мастер в базе данных. Для этого щелкните правой кнопкой мыши базу данных, наведите курсор на пункт Задачи, а затем щелкните Зашифровать столбцы.
- Прочитайте страницу Введение , а затем нажмите кнопку Далее.
- На странице Выбор столбцов разверните таблицы и найдите все подлежащие замене столбцы, которые зашифрованы с помощью старого ключа шифрования столбца.
- Для каждого такого столбца задайте в качестве значения ключа шифрования новый автоматически созданный ключ. Примечание. Кроме того, можно создать новый ключ шифрования столбцов перед запуском мастера. См. раздел "Подготовка ключей шифрования столбцов" с помощью диалогового окна "Новый ключ шифрования столбцов".
- На странице Конфигурация главного ключа выберите расположение для сохранения нового ключа и источник главного ключа, а затем нажмите кнопку Далее. Примечание. Если вы используете существующий ключ шифрования столбцов (а не автоматически сформированный), на этой странице не выполняется никаких действий.
- На странице Проверкавыберите, требуется ли немедленно запустить сценарий, или создайте сценарий PowerShell и нажмите кнопку Далее.
- На странице Сводка просмотрите выбранные параметры и нажмите кнопку Готово, чтобы закрыть мастер.
- В обозревателе объектовперейдите в папку Безопасность/Ключи постоянного шифрования/Ключи шифрования столбцов и найдите старый ключ шифрования столбца, который требуется удалить из базы данных. Щелкните ключ правой кнопкой мыши и выберите команду Удалить.
Разрешения на смену ключей шифрования столбцов
Для смены ключа шифрования столбца требуются следующие разрешения базы данных: ALTER ANY COLUMN MASTER KEY — требуется, если вы используете новый ключ шифрования столбцов с автоматически созданным методом (новый главный ключ столбца и его новые метаданные также будут созданы). ALTER ANY COLUMN ENCRYPTION KEY — требуется для добавления метаданных для нового ключа шифрования столбца.
Вам также требуются разрешения для хранилищ ключей на доступ к старому и новому ключам шифрования столбцов. Дополнительные сведения о разрешениях для хранилища ключей, необходимых, чтобы выполнять операции управления ключами, см. в статье Создание и хранение главных ключей столбцов для Always Encrypted в разделе о нужном хранилище.
Next Steps
- Выполнение запросов к столбцам с помощью Always Encrypted с использованием SQL Server Management Studio
- Разработка приложений с помощью Always Encrypted
См. также
- Always Encrypted
- Общие сведения об управлении ключами для Always Encrypted
- Настройка функции Always Encrypted с помощью SQL Server Management Studio
- Настройка постоянного шифрования с помощью PowerShell
- CREATE COLUMN MASTER KEY (Transact-SQL)
- DROP COLUMN MASTER KEY (Transact-SQL)
- CREATE COLUMN ENCRYPTION KEY (Transact-SQL)
- ALTER COLUMN ENCRYPTION KEY (Transact-SQL)
- DROP COLUMN ENCRYPTION KEY (Transact-SQL)
- sys.column_master_keys (Transact-SQL)
- sys.column_encryption_keys (Transact-SQL)