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


Глоссарий безопасности для Azure Cosmos DB для NoSQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Схема текущего расположения (

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

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

Управление доступом на основе ролей

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

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

Удостоверение или субъект

Удостоверения ссылаются на объекты в Microsoft Entra, представляющие некоторую сущность, которая может потребовать уровня доступа к вашей системе. В контексте Azure и Microsoft Entra удостоверения могут ссылаться на один из следующих типов сущностей:

Description
Удостоверения рабочей нагрузки Удостоверение рабочей нагрузки представляет рабочую нагрузку программного обеспечения, необходимую для доступа к другим службам или ресурсам.
Человеческие удостоверения Удостоверение человека представляет пользователя, который может быть собственным для клиента или добавлен в качестве гостя.
Управляемые удостоверения Управляемые удостоверения — это отдельные ресурсы в Azure, представляющие удостоверение службы Azure.
Субъекты-службы Субъект-служба — это учетная запись службы, которая может использоваться в гибких сценариях проверки подлинности.
Удостоверения устройств Удостоверение устройства — это объект в Microsoft Entra, сопоставленный с устройством.
Группы Группы — это объекты, используемые для управления доступом к одному или нескольким удостоверениям в виде одной операции.

Дополнительные сведения см . в разделе "Основы идентификации".

Роль

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

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

Значение
Роль CosmosBackupOperator
Определение Microsoft.DocumentDB/databaseAccounts/backup/action & Microsoft.DocumentDB/databaseAccounts/restore/action
Область применения Группа ресурсов

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

Внимание

Некоторые службы Azure, такие как Azure Cosmos DB, имеют собственную реализацию управления доступом на основе ролей, которая использует различные свойства Azure Resource Manager, команды Azure CLI и cmdLets Azure PowerShell. Команды, которые обычно используются для управления доступом на основе ролей, не будут работать с доступом уровня данных Azure Cosmos DB. Некоторые команды для управления доступом на основе ролей Azure могут работать с доступом уровня управления Azure Cosmos DB.

Дополнительные сведения см. в статье о встроенных ролях Azure

Определение роли

Определение роли — это объект JSON, содержащий список действий уровня управления и плоскости данных, которые разрешены и не допускаются. Рассмотрим этот усеченный пример из встроенной CosmosRestoreOperator роли:

{
  "roleName": "CosmosRestoreOperator",
  "type": "Microsoft.Authorization/roleDefinitions",
  ...
  "permissions": [
    {
      "actions": [
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action",
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read",
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read"
      ],
      "notActions": [],
      "dataActions": [],
      "notDataActions": []
    }
  ],
  ...
}

В этом определении удостоверение, назначаемое этой ролью, может выполнять restore действие. После завершения операции восстановления удостоверение может считывать различные ресурсы, чтобы убедиться, что восстановление выполнено успешно. Мы можем определить, что он может считывать эти ресурсы из-за * оператора (подстановочного знака) для read.

Дополнительные сведения см . в концепциях определения ролей.

Назначение ролей

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

Description
Основной Назначение удостоверений этой роли
Роль Роль, назначенная удостоверению
Область применения Целевой ресурс Или группа назначения Azure
Имя и описание Метаданные, упрощающие управление назначениями в масштабе

Совет

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

Дополнительные сведения см . в концепциях назначения ролей.

Действия

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

Description Плоскость
Microsoft.DocumentDB/databaseAccounts/listKeys/action Только чтение ключей учетной записи Уровень управления
Microsoft.DocumentDB/databaseAccounts/backup/action выполнять резервное копирование; Уровень управления
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace Полностью замените существующий элемент Плоскость данных
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery Выполнение запроса NoSQL Плоскость данных

Действия также могут содержать * (подстановочные знаки), поэтому вам не нужно вручную детализировать каждую конкретную вложенные символы. Ниже приведены несколько примеров действий с подстановочными знаками:

Description
Microsoft.DocumentDb/databaseAccounts/* Создание учетных записей Azure Cosmos DB и управление ими
Microsoft.DocumentDB/*/read Чтение любого контейнера или базы данных

Действия разделены на плоскость управления и плоскость данных. Необходимо отдельно определить действия на ресурсах и действиях уровня управления, которые могут влиять на данные. В определении роли действия уровня управления используют actions действия свойства и плоскости данных находятся в свойствеdataActions. Вы также можете определить действия, которые удостоверение не может выполнять с помощью соответствующих notActions и notDataActions свойств.

Примечание.

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

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

Предоставление прав по принципу минимальных разрешений

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

  • Приложение может неустранительно уничтожить данные
  • Несанкционированный пользователь может получить доступ к учетным данным приложения и изменить данные

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

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

Уровень управления

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

  • Чтение всех учетных записей и метаданных ресурсов
  • Чтение и повторное создание ключей учетной записи и строка подключения
  • Резервное копирование и восстановление учетных записей
  • Запуск и отслеживание заданий передачи данных
  • Управление базами данных и контейнерами
  • Изменение свойств учетной записи

Внимание

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

Плоскость данных

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

  • Чтение некоторых учетных записей и метаданных ресурсов
  • Создание, чтение, обновление, исправление и удаление элементов
  • Выполнение запросов NoSQL
  • Чтение из канала изменений контейнера
  • Выполнение хранимых процедур
  • Управление конфликтами в веб-канале конфликтов

Переносимая проверка подлинности

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

Клиентская библиотека удостоверений Azure доступна на нескольких языках программирования в составе пакета SDK Azure. С помощью этой библиотеки можно создать DefaultAzureCredential объект, который интеллектуально проходит по нескольким параметрам, чтобы найти правильные учетные данные в зависимости от среды. Эти параметры проверки подлинности включают (в порядке):

  1. Секрет клиента или сертификат, хранящиеся в качестве переменной среды
  2. Идентификация рабочей нагрузки Microsoft Entra
  3. Назначаемое пользователем или назначаемое системой управляемое удостоверение
  4. Учетные данные Azure, производные от параметров Visual Studio
  5. Учетные данные, используемые в расширении учетной записи Azure в Visual Studio Code
  6. Текущие учетные данные из Azure CLI
  7. Текущие учетные данные из Azure PowerShell
  8. Текущие учетные данные из Интерфейса командной строки разработчика Azure
  9. Интерактивный сеанс, запускающий браузер системы для входа

Каждая современная библиотека Azure SDK поддерживает конструктор для соответствующих клиентских объектов или классов, которые принимают экземпляр или его базовый DefaultAzureCredential тип.

Совет

Чтобы упростить отладку и более предсказуемый рабочий код, можно использовать DefaultAzureCredential в разработке и переключении на более конкретные учетные данные, например WorkloadIdentityCredential или ManagedIdentityCredential после развертывания приложения. Все эти классы основаны на TokenCredential классе, который многие пакеты SDK Azure ожидают в рамках логики инициализации клиента, что упрощает переключение обратно и вперед.

Уникальный идентификатор

Каждое удостоверение в Microsoft Entra имеет уникальный идентификатор. Иногда этот уникальный идентификатор называется id, objectIdили principalId. При создании назначений ролей вам потребуется уникальный идентификатор удостоверения, который вы используете с назначением.

Область

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

Например:

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

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

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>

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

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>

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

Область (собственный код Azure Cosmos DB)

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

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

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/

Кроме того, вы можете задать назначение роли плоскости данных определенной базе данных:

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>

Наконец, можно ограничить назначение одним контейнером, наиболее детализированной областью:

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>/colls/<container-name>

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