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


Глоссарий безопасности

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

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

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

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

Идентичность/Главный субъект

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

Описание
Идентичности рабочих нагрузок Идентификация рабочей нагрузки обозначает программную рабочую нагрузку, которой необходимо получить доступ к другим службам или ресурсам.
Человеческие идентичности Личная учетная запись обозначает пользователя, который может принадлежать вашей организации или добавлен в качестве гостя.
управляемые идентичности Управляемые удостоверения — это отдельные ресурсы в 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. Назначения ролей состоят из следующих компонентов:

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

Подсказка

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

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

Действия

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

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

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

Описание
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 без возможности управления ресурсами в учетной записи. Для примера доступ к уровню данных Azure Cosmos DB может включать возможность:

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

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

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

Клиентская библиотека Azure Identity доступна на нескольких языках программирования как часть пакета Azure SDK. С помощью этой библиотеки можно создать 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 классе, который многие комплекты средств разработки программного обеспечения Azure (SDK) ожидают в рамках логики инициализации клиента, что упрощает процесс переключения между ними.

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

Каждая идентичность в 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>

Подсказка

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

/dbs/<database-name>/colls/<container-name>

Вы также можете предоставить универсальный доступ ко всем базам данных и контейнерам с помощью относительной области:

/