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


Настройка ключей, управляемых клиентом, для учетной записи Azure Cosmos DB с помощью Azure Key Vault

Область применения: NoSQL Mongodb Кассандра Гремлин Таблица

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

Схема уровней шифрования вокруг данных клиента.

Ключи, управляемые клиентом, должны храниться в Azure Key Vault и предоставлять ключ для каждой учетной записи Azure Cosmos DB, которая включена с помощью ключей, управляемых клиентом. Этот ключ используется для шифрования всех данных, хранящихся в данной учетной записи.

Примечание.

Если вы хотите включить ключи, управляемые клиентом, в существующих учетных записях Azure Cosmos DB, см. статью "Настройка управляемых клиентом ключей" для существующей учетной записи Azure Cosmos DB с помощью Azure Key Vault.

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

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

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

Если ключи, управляемые клиентом, не включены, зарезервированы только имена полей, начинающиеся с __sys_ .

Предварительные условия

Регистрация поставщика ресурсов Azure Cosmos DB

Если поставщик ресурсов Microsoft.DocumentDB еще не зарегистрирован, необходимо зарегистрировать этот поставщик в качестве первого шага.

  1. Войдите на портал Azure, перейдите к своей подписке Azure и на вкладке Параметры выберите Поставщики ресурсов.

    Снимок экрана: параметр

  2. Найдите поставщик ресурсов Microsoft.DocumentDB. Убедитесь, что поставщик ресурсов уже помечен как зарегистрированный. В противном случае выберите поставщика ресурсов и нажмите Зарегистрировать.

    Снимок экрана: параметр Register для поставщика ресурсов Microsoft.DocumentDB.

Настройка экземпляра Azure Key Vault

Внимание

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

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

Для использования управляемых клиентом ключей с Azure Cosmos DB требуется установка двух свойств в экземпляре Azure Key Vault, который вы планируете использовать для размещения ключей шифрования: Мягкое удаление и Защита от окончательного удаления.

  1. Если вы создаете новый экземпляр Azure Key Vault, включите эти свойства во время создания:

Снимок экрана: параметры Azure Key Vault, включая мягкое удаление и защиту от удаления.

  1. Если вы используете имеющийся экземпляр Azure Key Vault, проверьте, включены ли эти свойства, на портале Azure в разделе Свойства. Если любое из этих свойств не включено, ознакомьтесь с разделами "Включение обратимого удаления " и "Включение защиты от очистки " в одной из следующих статей:

Выбор предпочтительной модели безопасности

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

Необходимые разрешения должны быть предоставлены для разрешения Cosmos DB использовать ключ шифрования. Этот шаг зависит от того, использует ли Azure Key Vault политики доступа или управление доступом на основе ролей.

Примечание.

Важно отметить, что одновременно может быть активна только одна модель безопасности, поэтому нет необходимости заполнять управление доступом на основе ролей, если Azure Key Vault настроено использовать политики доступа и наоборот.

Добавление политики доступа

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

  1. На портале Azure перейдите к экземпляру Azure Key Vault, который планируется использовать для размещения ключей шифрования. В меню слева выберите Политики доступа.

Снимок экрана: параметр

  1. Выберите + Добавить политику доступа.

  2. В раскрывающемся меню Разрешения ключей выберите Получить, Распаковать ключ и Упаковать ключ.

Снимок экрана с разрешениями политики доступа, включая Get, Unwrap Key и Wrap Key.

  1. В разделе Выбор субъекта выберите пункт Не выбрано.

  2. Найдите принципал Azure Cosmos DB и выберите его.

    Совет

    Это регистрирует удостоверение первой стороны Azure Cosmos DB в политике доступа вашего Azure Key Vault. Если объект Azure Cosmos DB отсутствует в списке, возможно, потребуется повторно зарегистрировать поставщика ресурсов Microsoft.DocumentDB.

  3. В нижней части нажмите кнопку Выбрать.

    Снимок экрана: параметр Select principal на странице

  4. Выберите Добавить, чтобы добавить новую политику доступа.

  5. Нажмите Сохранить на экземпляре Key Vault, чтобы сохранить все изменения.

Добавление ролей управления доступом на основе ролей

  1. На портале Azure перейдите к экземпляру Azure Key Vault, который планируется использовать для размещения ключей шифрования. Выберите элемент управления доступом (IAM) в меню слева и выберите "Предоставить доступ к этому ресурсу".

    Снимок экрана: параметр управления доступом в меню навигации по ресурсам.

    Снимок экрана: параметр

  2. Найдите роль Key Vault Administrator и назначьте ее себе. Это назначение выполняется следующим образом: сначала найдите имя роли в списке и щелкните на вкладку Члены. Затем на этой вкладке выберите вариант пользователя, группу или субъект-службу в списке переключателей, после чего найдите свою учетную запись Azure. После выбора учетной записи можно назначить роль.

    Снимок экрана: назначение роли на странице управления доступом.

  3. Затем необходимые разрешения должны быть назначены главному объекту Cosmos DB. Таким образом, как и в случае последнего назначения ролей, перейдите на страницу назначения, но на этот раз найдите роль Key Vault Crypto Service Encryption User и на вкладке "Члены" найдите принципала Cosmos DB. Чтобы найти субъект, найдите субъект Azure Cosmos DB и выберите его.

    Снимок экрана процесса назначения субъекта Azure Cosmos DB к разрешению.

  4. Выберите "Проверка и назначение" , а роль назначена Cosmos DB.

Проверка правильности задания ролей

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

  1. После назначения ролей выберите "Просмотреть доступ к этому ресурсу" на странице IAM управления доступом, чтобы убедиться, что все задано правильно.

    Снимок экрана: параметр

  2. На странице установите зону действия на этот ресурс и убедитесь, что у вас есть роль администратора Key Vault, а основной объект Cosmos DB имеет роль пользователя шифрования Key Vault Crypto Encryption.

Создание нового ключа в Azure Key Vault

Здесь создайте новый ключ с помощью Azure Key Vault и получите уникальный идентификатор.

  1. На портале Azure перейдите к экземпляру Azure Key Vault, который планируется использовать для размещения ключей шифрования. Затем в меню слева выберите Ключи.

    Снимок экрана: параметр

  2. Выберите Создать или импортировать, введите имя нового ключа и выберите размер ключа RSA. Для максимальной безопасности рекомендуется использовать как минимум 3072. Щелкните Создать.

    Снимок экрана: диалоговое окно для создания нового ключа.

    Совет

    Кроме того, с помощью Azure CLI можно создать ключ с помощью:

    az keyvault key create \
        --vault-name <name-of-key-vault> \
        --name <name-of-key>
    

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

  3. После создания ключа выберите только что созданный ключ, а затем его текущую версию.

  4. Скопируйте идентификатор ключа, исключая часть после последней косой черты.

    Снимок экрана: поле идентификатора ключа и действие копирования.

Создание учетной записи Azure Cosmos DB

Создайте новую учетную запись Azure Cosmos DB с помощью портал Azure или Azure CLI.

При создании учетной записи Azure Cosmos DB на портале Azure на шаге Шифрование выберите Управляемый клиентом ключ. В поле URI ключа вставьте URI или идентификатор ключа Azure Key Vault, скопированный на предыдущем шаге.

Скриншот страницы шифрования с настроенным URI пользовательского ключа.

Внимание

В зависимости от конфигурации сети может потребоваться разрешить доступ к Azure Cosmos DB из других служб Azure.

Использование управляемого удостоверения в политике доступа Azure Key Vault

Эта политика доступа гарантирует, что ваши ключи шифрования будут доступны вашей учетной записи Azure Cosmos DB. Политика доступа реализуется путем предоставления доступа к определенному удостоверению Microsoft Entra. Поддерживается два типа идентичностей.

  • Для предоставления доступа к службе Azure Cosmos DB можно использовать первичное удостоверение Azure Cosmos DB.
  • Для предоставления доступа именно к вашей учетной записи можно использовать управляемое удостоверение учетной записи Azure Cosmos DB.

Недоступно

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

Вы можете создать учетную запись непрерывного резервного копирования с помощью Azure CLI или шаблона ARM.

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

После создания учетной записи можно обновить удостоверение до управляемой учетной записи, назначенной системой.

Кроме того, пользователи могут сначала создать системное удостоверение с периодическим режимом резервного копирования, а затем перенести учетную запись в режим непрерывного резервного копирования. Подробные инструкции см. в статье "Миграция учетной записи Azure Cosmos DB с периодического в режим непрерывного резервного копирования".

Недоступно

Восстановление постоянной учетной записи с настроенной управляемой идентичностью

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

Недоступно

Ключи, управляемые клиентом, и двойное шифрование

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

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

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

Ротация ключей

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

  • Создайте новую версию используемого ключа из Azure Key Vault.

    Снимок экрана с пунктом

  • Замените ключ, используемый в настоящий момент, на другой, изменив URI ключа в своей учетной записи. В портал Azure перейдите к учетной записи Azure Cosmos DB и выберите шифрование данных в меню слева:

    Снимок экрана: параметр

    Затем замените универсальный код ресурса (URI) ключа новым ключом, который вы хотите использовать, и нажмите Сохранить.

    Снимок экрана: параметр

    Вот как выполнить ту же задачу в PowerShell.

    # Variable for resource group name
    $RESOURCE_GROUP_NAME = "<resource-group-name>"
    
    # Variable for account name
    $ACCOUNT_NAME = "<globally-unique-account-name>"
    
    # Variable for new key URI in the key vault
    $NEW_KEY_VAULT_KEY_URI="https://<key-vault-name>.vault.azure.net/keys/<new-key-name>"
    
    $parameters = @{
        ResourceGroupName = $RESOURCE_GROUP_NAME 
        Name = $ACCOUNT_NAME
        ResourceType = "Microsoft.DocumentDb/databaseAccounts"
    }
    $ACCOUNT = Get-AzResource @parameters
    
    $ACCOUNT.Properties.keyVaultKeyUri = $NEW_KEY_VAULT_KEY_URI
    
    $ACCOUNT | Set-AzResource -Force
    

Предыдущий ключ или его версия могут быть отключены после того, как в журнал аудита Azure Key Vault перестанут добавляться сведения о действиях Azure Cosmos DB с ключом или его версией. Если после смены ключей пройдет 24 часа, не выполняйте другие действия с предыдущим ключом или версией ключа.

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

Обработка ошибок

Если с управляемыми клиентом ключами в Azure Cosmos DB возникли какие-либо ошибки, Azure Cosmos DB возвращает сведения об ошибке вместе с кодом подсостояния HTTP в ответе. Код подсостояния HTTP можно использовать для отладки первопричины проблемы. Чтобы получить список поддерживаемых кодов подстатонов HTTP, см. статью "Коды состояния HTTP" для Azure Cosmos DB.

Часто задаваемые вопросы

Здесь часто задаются вопросы о настройке ключей, управляемых клиентом, в Azure Cosmos DB.

Взимается ли дополнительная плата за включение ключей, управляемых клиентом?

Нет, плата за включение этой функции не взимается.

Как управляемые клиентом ключи влияют на планирование ресурсов?

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

Тип операции Запрос на увеличение единиц.
Чтение по точкам (получение элементов по их идентификаторам) +5 % на каждую операцию
Любая операция записи + 6 % за операцию | Приблизительно + 0,06 RU за индексированное свойство
Запросы, канал изменений для чтения или канал с конфликтами +15 % за операцию

Какие данные шифруются с помощью управляемых клиентом ключей?

Все данные, хранящиеся в учетной записи Azure Cosmos DB, шифруются с помощью ключей, управляемых клиентом, за исключением следующих метаданных:

Поддерживаются ли управляемые клиентом ключи для существующих учетных записей Azure Cosmos DB?

Да. Дополнительные сведения см. в статье Настройка ключей, управляемых клиентом, для существующей учетной записи Azure Cosmos DB с помощью Azure Key Vault.

Можно ли использовать ключи, управляемые клиентом, в сочетании с аналитическим хранилищем Azure Cosmos DB?

Да, Azure Synapse Link поддерживает только настройку ключей, управляемых клиентом, с помощью управляемого удостоверения учетной записи Azure Cosmos DB. Перед тем как включить Azure Synapse Link в учетной записи, в политике доступа к Azure Key Vault необходимо использовать управляемое удостоверение учетной записи Azure Cosmos DB. Инструкции по включению управляемого удостоверения и его использованию в политике доступа см. в руководстве по доступу к Azure Key Vault из базы данных Azure Cosmos DB с помощью управляемого удостоверения.

Планируется ли поддержка большей детализации по сравнению с ключами уровня учетной записи?

В настоящее время нет, но рассматривается возможность поддержки ключей уровня контейнера.

Как узнать, включены ли ключи, управляемые клиентом, в учетной записи Azure Cosmos DB?

На портале Azure перейдите к учетной записи Azure Cosmos DB и просмотрите запись шифрования данных в меню слева. Если эта запись существует, ключи, управляемые клиентом, включены в вашей учетной записи:

Снимок экрана: параметр шифрования данных в меню навигации по ресурсам.

Вы также можете программно получить сведения об учетной записи Azure Cosmos DB и найти наличие keyVaultKeyUri свойства.

Как ключи, управляемые клиентом, влияют на периодические резервные копирования?

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

Для успешного восстановления периодического резервного копирования необходимы приведенные ниже условия.

  • Ключ шифрования, который вы использовали во время резервного копирования, является обязательным и должен быть доступен в Azure Key Vault. Это условие требует, чтобы ключ не отзывался, и та его версия, которая использовалась во время резервного копирования, была по-прежнему активна.
  • Прежде чем восстанавливать данные, если вы использовали управляемое удостоверение, назначаемое системой в политике доступа, временно предоставьте доступ удостоверению первой стороны Azure Cosmos DB. Это требование обусловлено тем, что управляемое удостоверение, назначаемое системой, относится к учетной записи и не может быть повторно использовано в целевой учетной записи. После полного восстановления данных в целевой учетной записи вы можете настроить желаемую конфигурацию удостоверения и удалить удостоверение первой стороны из политики доступа Key Vault.

Как ключи, управляемые клиентом, влияют на непрерывное резервное копирование?

Azure Cosmos DB позволяет настроить непрерывное резервное копирование в вашей учетной записи. С помощью непрерывного резервного копирования можно восстановить данные в любой момент времени за последние 30 дней. Чтобы использовать непрерывные резервные копии в учетной записи, в которой включены ключи, управляемые клиентом, необходимо использовать управляемое удостоверение, назначаемое системой или назначаемое пользователем, в политике доступа Key Vault. В настоящее время удостоверения первой стороны Azure Cosmos DB не поддерживаются на учетных записях, использующих непрерывные резервные копии.

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

  • Добавьте идентификатор, назначенный пользователем, в учетную запись Cosmos DB и предоставьте доступ в соответствии с политикой доступа к хранилищу ключей.
  • Назначьте удостоверение пользователя в качестве удостоверения по умолчанию с помощью Azure CLI или Azure Resource Manager (ARM).
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity

Необходимые условия для успешного выполнения восстановления из точки во времени:

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

  • Необходимо убедиться, что управляемое удостоверение, назначаемое пользователем, первоначально использовавшееся в исходной учетной записи, по-прежнему объявлено в политике доступа Key Vault.

Внимание

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

Как отозвать ключ шифрования?

Отзыв ключа выполняется путем отключения его последней версии.

Снимок экрана: отключенная версия пользовательского ключа.

Кроме того, чтобы отозвать все ключи из хранилища Azure Key Vault, можно удалить политику доступа, предоставленную принципалу Azure Cosmos DB.

Снимок экрана: параметр

Какие операции доступны после отзыва управляемого клиентом ключа?

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

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

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

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

Шаги для назначения новой управляемой идентичности:

  1. Создание новой управляемой идентичности, назначенной пользователем
  2. Предоставление доступа к ключу Key Vault к этому удостоверению
  3. Назначьте это новое удостоверение восстановленной учетной записи базы данных

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