Распространенные ошибки при прозрачном шифровании данных с использованием управляемых клиентом ключей в Azure Key Vault

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

В этой статье описывается, как выявить и устранить проблемы с доступом к ключу в Azure Key Vault, из-за которых база данных, настроенная на использование прозрачного шифрования данных (TDE) с управляемыми клиентом ключами в Azure Key Vault, стала недоступной.

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Введение

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

В течение первых 30 минут, если устранена проблема с доступом к ключу хранилища ключей Azure, база данных автоматически выполнит автоматическое управление доступом и будет подключена к сети. Это означает, что во всех сценариях с периодическими или временными сбоями в сети вмешательство пользователя не требуется и база данных автоматически подключится к сети. В большинстве случаев для устранения проблемы с доступом к ключу в основном хранилище ключей требуется вмешательство пользователя.

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

После того, как база данных была недоступна более чем на 30 минут, она больше не будет автоматически претворяться. Если необходимый доступ к ключу хранилища ключей Azure был восстановлен после этого периода, необходимо повторно отменить доступ к ключу вручную, чтобы вернуть базу данных в режим "в сети". Для подключения базы данных к сети может потребоваться много времени (в зависимости от размера базы данных). После подключения базы данных к сети ранее настроенные значения таких параметров, как группа отработки отказа, журнал PITR и теги, будут утрачены. Поэтому рекомендуется реализовать систему отправки уведомлений с помощью групп действий, которая позволит быть в курсе проблем с доступом к ключам в основным хранилище и устранять их как можно скорее.

Распространенные ошибки, из-за которых базы данных становятся недоступными

Большинство проблем, возникающих при использовании TDE с Key Vault, вызваны одной из следующих ошибок конфигурации:

Хранилище ключей недоступно или не существует.

  • Хранилище ключей случайно удалено.
  • Брандмауэр разрешает доступ к Azure Key Vault, но запрещает доступ к службам Майкрософт.
  • Временная ошибка сети, которая приводит к недоступности хранилища ключей.

Нет разрешения на доступ к хранилищу ключей или ключ не существует.

  • Ключ случайно удален, отключен или истек его срок действия.
  • Управляемое удостоверение сервера (назначенное системой или пользователем) было случайно удалено.
  • Сервер был перемещен в другую подписку. Новое управляемое удостоверение (назначаемое системой или назначаемое пользователем) должно быть назначено серверу при перемещении в другую подписку.
  • Разрешения, предоставленные для управляемого удостоверения сервера для ключей являются недостаточными (они не включают разрешения Get, Wrap и Unwrap).
  • Разрешения для управляемого удостоверения сервера были отменены в хранилище ключей.

Определение и исправление распространенных ошибок

В этом разделе перечислены действия по устранению распространенных ошибок.

Отсутствует идентификатор сервера

Сообщение об ошибке

401 AzureKeyVaultNoServerIdentity — удостоверение сервера неправильно настроено на сервере. Обратитесь в службу поддержки.

Обнаружение

Чтобы убедиться, что удостоверение было назначено серверу, используйте следующую команду или командлет:

Исправление

Используйте следующий командлет или команду, чтобы настроить управляемое удостоверение, назначаемое пользователем или назначаемое системой, для сервера:

На портале Azure перейдите в хранилище ключей и выберите Политики доступа. Выполните следующие действия:

  1. Нажмите кнопку Добавить, чтобы добавить AppId для сервера, созданного на предыдущем шаге.
  2. Назначьте следующие разрешения ключа: Get, Wrap и Unwrap

Дополнительные сведения см. в статье "Назначение управляемого удостоверения серверу".

Внимание

Если логический сервер для База данных SQL Azure или Управляемый экземпляр SQL Azure перемещается в новый клиент Microsoft Entra после начальной настройки TDE с key Vault, эта конфигурация управляемого удостоверения должна быть переопределена в новом клиенте.

Отсутствующее хранилище ключей

Сообщение об ошибке

503 AzureKeyVaultConnectionFailed. Операцию не удалось завершить на сервере, так как не удалось подключиться к Azure Key Vault.

Обнаружение

Чтобы определить URI ключа и хранилище ключей, сделайте следующее:

  1. Чтобы получить URI ключа определенного экземпляра сервера, используйте следующий командлет или команду:

  2. Используйте URI ключа для идентификации хранилища ключей:

    • Azure PowerShell. Вы можете проверить свойства переменной $MyServerKeyVaultKey, чтобы получить сведения о хранилище ключей.

    • Azure CLI. Проверьте возвращенный средство защиты шифрования сервера для получения сведений о хранилище ключей.

Исправление

Убедитесь, что хранилище ключей доступно:

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

Отсутствует ключ

Сообщения об ошибках

404 ServerKeyNotFound. Запрашиваемый ключ сервера не найден в текущей подписке.

409 ServerKeyDoesNotExists. Ключ сервера не существует.

Обнаружение

Чтобы определить URI ключа и хранилище ключей, сделайте следующее:

  • Чтобы получить URI ключа, добавленного к экземпляру логического сервера SQL Server, используйте следующие командлет или команду в отсутствующем хранилище ключей: Эти команды возвращают список ключей.

Исправление

Убедитесь, что средство защиты TDE присутствует в Key Vault:

  1. Определите хранилище ключей и перейдите к нему на портале Azure.
  2. Убедитесь, что ключ, определенный по URI ключа, присутствует.

Ключ с истекшим сроком действия

Сообщения об ошибках

Для сервера <server_name> требуется разрешение пользователя шифрования шифрования службы шифрования Key Vault для политики RBAC или следующих разрешений Azure Key Vault: Get, WrapKey, UnwrapKey. Предоставьте отсутствующие разрешения субъекту-службе с идентификатором <akv_key>. Убедитесь, что ключ активен, не истек или отключен, установите дату активации ключа не позднее текущей даты и что доверенные службы Майкрософт могут обойти брандмауэр, если это применимо.

Обнаружение

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

  • Используйте портал Azure, перейдите в меню ">Объекты>службы хранилища ключей" и проверьте срок действия ключа.
  • Используйте команду PowerShell Get-AzKeyVaultKey.
  • Используйте команду Azure CLI, az keyvault key show.

Исправление

  • Проверьте дату окончания срока действия ключа для ключа хранилища ключей, чтобы убедиться, что срок действия ключа истек.
  • Продление срока действия ключа.
  • Верните базу данных в режим "в сети", выбрав параметр отзыва ключа с 1 из следующих вариантов:
    • Повторите существующий ключ.
    • Выберите ключ резервного копирования.

Дополнительные сведения см. в разделе "Недоступное средство защиты TDE".

Примечание.

Ключи необходимо сменять не позднее указанного числа дней до истечения срока действия, чтобы обеспечить достаточное время для реагирования на сбой. Дополнительные сведения см. в Политика Azure встроенных определений для Key Vault.

Отсутствуют разрешения

Сообщение об ошибке

401 AzureKeyVaultMissingPermissions. У сервера отсутствуют необходимые разрешения для Azure Key Vault.

Обнаружение

Чтобы определить URI ключа и хранилище ключей, сделайте следующее:

  • Чтобы определить хранилище ключей, которое использует экземпляр логического сервера SQL Server, используйте следующие командлет или команду в отсутствующем хранилище ключей.

Исправление

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

  • В портал Azure перейдите к политикам доступа к хранилищу >ключей. Найдите управляемое удостоверение сервера (назначенное системой или пользователем).
  • При наличии удостоверения сервера убедитесь, что у него есть следующие основные разрешения: Get, WrapKey и UnwrapKey.
  • Если удостоверение севера отсутствует, добавьте его с помощью кнопки Добавить.

Получение состояния TDE из журнала действий

Чтобы разрешить мониторинг состояния базы данных в связи с проблемами с доступом к ключам в Azure Key Vault, в журнал действий для ИД ресурса, основанного на URL-адресе Azure Resource Manager, будут заноситься следующие события.

Примечание.

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

Событие, когда служба теряет доступ к ключу в Azure Key Vault

База данных SQL Azure

EventName: MakeDatabaseInaccessible

Состояние: запущено

Описание: база данных {database_name} на сервере {server_name} потеряла доступ к ключу Azure Key Vault и теперь переходит в недоступное состояние.

Управляемый экземпляр SQL Azure

EventName: MakeManagedDbInaccessible

Состояние: запущено

Описание: база данных {database_name} на управляемом сервере {server_name} потеряла доступ к ключу Azure Key Vault и теперь переходит в недоступное состояние.

Событие, когда проблема не была устранена в течение 30 минут, а доступ к ключу Azure Key Vault должен быть проверен вручную.

База данных SQL Azure

EventName: MakeDatabaseInaccessible

Состояние: выполнено успешно

Описание. База данных недоступна и требует разрешения ошибок хранилища ключей Azure и повторного доступа к ключу хранилища ключей Azure с помощью повторного ключа.

Управляемый экземпляр SQL Azure

EventName: MakeManagedDbInaccessible

Состояние: выполнено успешно

Описание: база данных {database_name} на управляемом сервере {server_name} недоступна и для нее требуется, чтобы пользователь повторно установил доступ к ключу Azure Key Vault.

Событие, когда повторная проверка доступа к ключу в Azure Key Vault прошла успешно и база данных подключилась к сети

База данных SQL Azure

EventName: MakeDatabaseAccessible

Состояние: запущено

Описание: доступ к ключу Azure Key Vault был восстановлен; выполняется операция по обеспечению доступа к базе данных {database_name} на сервере {server_name}.

Управляемый экземпляр SQL Azure

EventName: MakeManagedDatabaseAccessible

Состояние: запущено

Описание: доступ к ключу Azure Key Vault был восстановлен; выполняется операция по обеспечению доступа к базе данных {database_name} на управляемом сервере {server_name}.

Событие, когда база данных успешно подключается к сети

База данных SQL Azure

EventName: MakeDatabaseAccessible

Состояние: выполнено успешно

Описание: доступ к ключу Azure Key Vault был восстановлен; база данных {database_name} на сервере {server_name} подключена к сети.

Управляемый экземпляр SQL Azure

EventName: MakeManagedDatabaseAccessible

Состояние: выполнено успешно

Описание: доступ к ключу Azure Key Vault был восстановлен; база данных {database_name} на управляемом сервере {server_name} подключена к сети.

Событие, когда повторная проверка доступа к ключу в Azure Key Vault завершилась ошибкой

База данных SQL Azure

EventName: MakeDatabaseAccessible

Состояние: Сбой

Описание: доступ к ключу Azure Key Vault был восстановлен; произошел сбой выполнения операции по обеспечению доступа к базе данных {database_name} на сервере {server_name}

Управляемый экземпляр SQL Azure

EventName: MakeManagedDatabaseAccessible

Состояние: Сбой

Описание: доступ к ключу Azure Key Vault был восстановлен; произошел сбой выполнения операции по обеспечению доступа к базе данных {database_name} на управляемом сервере {server_name}

  • См. дополнительные сведения о работоспособности ресурсов Azure.
  • Настройте группы действий для получения уведомлений и оповещений на основе ваших предпочтений, например email/SMS/Push/Voice, Logic App, Webhook, ITSM или Runbook службы автоматизации.