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

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

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

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

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

Примечание.

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

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

Следующие имена полей зарезервированы в таблицах 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 Cosmos DB требуется установка двух свойств в экземпляре Azure Key Vault, который планируется использовать для размещения ключей шифрования:Обратимое удаление и Защита от очистки.

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

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

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

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

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

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

Примечание.

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

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

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

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

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

  2. Щелкните элемент + Добавить политику доступа.

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

    Снимок экрана: разрешения политики доступа, включая get, unwrap key и wrap key.

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

  5. Выполните поиск субъекта Azure Cosmos DB и выберите его (для удобства поиск можно выполнить по идентификатору приложения: 57506a73-e302-42a9-b869-6f12d9ec29e9 в регионах Azure для государственных организаций и a232010e-820c-4083-83bb-3ace5fc29d0b во всех остальных регионах Azure).

    Совет

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: роль администратора хранилища ключей в результатах поиска.

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

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

    Снимок экрана: субъект Azure Cosmos DB, которому назначено разрешение.

    Внимание

    В регионе Azure для государственных организаций идентификатор 57506a73-e302-42a9-b869-6f12d9ec29e9приложения.

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

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

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

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

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

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

    Снимок экрана: параметр настройки область для запроса назначения ролей.

Создание нового ключа в 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 Key Vault

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

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

Недоступно

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

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

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

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

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

Недоступно

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

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

Недоступно

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

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

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

Двойное шифрование относится только к основному хранилищу транзакций 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 Cosmos DB возникли какие-либо ошибки, Azure Cosmos DB возвращает сведения об ошибке вместе с кодом подсостояния HTTP в ответе. Код подсостояния HTTP можно использовать для отладки основной причины проблемы. Список поддерживаемых кодов подсостояния HTTP см. в статье Коды состояния HTTP для Azure Cosmos DB.

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

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

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

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

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

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

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

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

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

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

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

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

Да, Azure Synapse Link поддерживает только настройку ключей, управляемых клиентом, с помощью управляемого удостоверения учетной записи Azure Cosmos DB. Перед включением Azure Synapse Link в учетной записи необходимо использовать управляемое удостоверение учетной записи Azure Cosmos DB в политике доступа к Azure Key Vault. Инструкции по включению управляемого удостоверения и его использованию в политике доступа см. в руководстве по доступу к 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 или ARM.
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity

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

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

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

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