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

ПРИМЕНИМО К: Nosql Mongodb Кассандра Гремлин Таблица

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

Важно!

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

  2. Нажмите + Добавить политику доступа.

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

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

  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. В нижней части нажмите кнопку Выбрать.

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

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

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

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

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

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

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

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

    Снимок экрана: роль администратора Key Vault в результатах поиска.

    Снимок экрана: назначение роли на странице

  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. На странице задайте область "этот ресурс" и убедитесь, что у вас есть роль администратора Key Vault, а субъект Cosmos DB имеет роль пользователя шифрования шифрования Key Vault.

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

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

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

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

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

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

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

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

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

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

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

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

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

Снимок экрана: страница

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

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

  • Для предоставления доступа к службе 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.

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

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

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

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

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

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

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

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

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

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

Да, Azure Synapse Link поддерживает только настройку ключей, управляемых клиентом, с помощью управляемого удостоверения учетной записи Azure Cosmos DB. Вам нужно использовать управляемое удостоверение учетной записи Azure Cosmos DB в политике доступа Azure Key Vault до того, как вы включите Azure Synapse Link в своей учетной записи. Инструкции по включению управляемого удостоверения и его использованию в политике доступа см. в руководстве по доступу к 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 дней. Чтобы использовать непрерывное резервное копирование в учетной записи, где включены ключи, управляемые клиентом, необходимо использовать управляемое удостоверение, назначаемое пользователем, в политике доступа хранилища ключей. Собственные удостоверения Azure Cosmos DB или управляемые удостоверения, назначаемые системой, в настоящее время не поддерживаются в учетных записях, использующих непрерывное резервное копирование.

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

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

Важно!

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

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

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

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

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

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

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

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

Дальнейшие действия