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