Управление доступом на основе ролей Azure в рамках службы Azure Cosmos DB

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

Примечание.

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

Дополнительные сведения об управлении доступом на основе ролей, применяемых к операциям плоскости данных в API noSQL, см. в статьях о безопасном доступе к данным и статьям RBAC Azure Cosmos DB. Api Azure Cosmos DB для MongoDB см. в разделе RBAC уровня данных в API для MongoDB.

Служба Azure Cosmos DB предоставляет встроенный контроль доступа на основе ролей Azure (Azure RBAC) для распространенных сценариев управления в Azure Cosmos DB. Пользователь, имеющий профиль в идентификаторе Microsoft Entra, может назначать эти роли Azure пользователям, группам, субъектам-службам или управляемым удостоверениям, чтобы предоставить или запретить доступ к ресурсам и операциям в ресурсах Azure Cosmos DB. Назначения ролей область только для доступа на уровне управления, включая доступ к учетным записям Azure Cosmos DB, базам данных, контейнерам и предложениям (пропускная способность).

Встроенные роли

В рамках службы Azure Cosmos DB поддерживаются следующие встроенные роли:

Встроенная роль Description
Участник учетной записи DocumentDB Может управлять учетными записями Azure Cosmos DB
Роль читателя учетных записей Cosmos DB Позволяет считывать данные учетных записей Azure Cosmos DB.
CosmosBackupOperator Может отправить запрос на восстановление в портал Azure для периодической базы данных или контейнера с поддержкой резервного копирования. Может изменить интервал резервного копирования и хранение в портал Azure. Невозможно получить доступ к каким-либо данным или использовать обозреватель данных.
CosmosRestoreOperator Может выполнять действие восстановления для учетной записи Azure Cosmos DB в режиме непрерывного резервного копирования.
Оператор Cosmos DB Может подготавливать учетные записи, базы данных и контейнеры Azure Cosmos DB. Невозможно получить доступ к каким-либо данным или использовать обозреватель данных.

Система управления идентификацией и доступом (IAM)

Панель управления доступом (IAM) в портал Azure используется для настройки управления доступом на основе ролей Azure в ресурсах Azure Cosmos DB. Роли применяются к пользователям, группам, субъектам-службам и управляемым удостоверениям в Active Directory. Для частных пользователей и групп можно использовать встроенные роли или пользовательские роли. На следующем снимке экрана показана интеграция с Active Directory (Azure RBAC) с использованием функции управления доступом (IAM) на портале Azure:

Access control (IAM) in the Azure portal - demonstrating database security.

Пользовательские роли

Помимо встроенных ролей, пользователи могут также создавать настраиваемые роли в Azure и применять эти роли к субъектам-службам во всех подписках в своем клиенте Active Directory. Настраиваемые роли предоставляют пользователям возможность создавать определения ролей Azure с настраиваемым набором операций поставщика ресурсов. Чтобы узнать, какие операции доступны для создания пользовательских ролей для Azure Cosmos DB, см. раздел Операции поставщика ресурсов Azure Cosmos DB

Совет

Пользовательские роли, необходимые для доступа к данным, хранящимся в Azure Cosmos DB, или использовать данные Обозреватель в портал Azure должны иметь Microsoft.DocumentDB/databaseAccounts/listKeys/* действие.

Примечание.

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

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

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

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

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

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

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

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

Проверьте список перед включением

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

  • Создание, удаление дочерних ресурсов, таких как базы данных и контейнеры. Сюда входят ресурсы для других API, таких как Cassandra, MongoDB, Gremlin, а также ресурсы таблиц.

  • Чтение или обновление пропускной способности для ресурсов уровня базы данных или контейнера.

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

  • Изменение хранимых процедур, триггеров или пользовательских функций.

Если ваши приложения (или пользователи через портал Azure) выполняют какие-либо из этих действий, их необходимо перенести для выполнения при помощи шаблонов ARM, PowerShell, Azure CLI, REST или Библиотеки управления Azure. Обратите внимание, что служба управления Azure доступна на нескольких языках.

Установка при помощи шаблона ARM

Чтобы установить данное свойство при помощи шаблона ARM, обновите существующий шаблон или экспортируйте новый шаблон для текущего развертывания, после чего включите "disableKeyBasedMetadataWriteAccess": true в свойства для ресурсов databaseAccounts. Ниже приведен базовый пример шаблона Azure Resource Manager с данным параметром свойства.

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "[variables('accountName')]",
      "apiVersion": "2020-04-01",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "disableKeyBasedMetadataWriteAccess": true
        }
    }
}

Внимание

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

Установка через Azure CLI

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

az cosmosdb update  --name [CosmosDBAccountName] --resource-group [ResourceGroupName]  --disable-key-based-metadata-write-access true

Установка через PowerShell

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

Update-AzCosmosDBAccount -ResourceGroupName [ResourceGroupName] -Name [CosmosDBAccountName] -DisableKeyBasedMetadataWriteAccess true

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