Что представляет собой управление доступом на основе атрибутов (Azure ABAC)?

Управление доступом на основе атрибутов (ABAC) — это система авторизации, которая определяет доступ на основе атрибутов, связанных с субъектами безопасности, ресурсами и средой запроса на доступ. С помощью ABAC можно предоставить субъекту безопасности доступ к ресурсу на основе атрибутов. Azure ABAC — это реализация ABAC для Azure.

Что такое условия назначения ролей?

Управление доступом на основе ролей Azure (Azure RBAC) — это система авторизации, которая помогает управлять доступом к ресурсам Azure, что они могут делать с этими ресурсами и какими областями они имеют доступ. В большинстве случаев Azure RBAC предоставит необходимые средства управления доступом с помощью определений ролей и назначений ролей. Однако в некоторых случаях может потребоваться более точное управление доступом или упростить управление сотнями назначений ролей.

Azure ABAC основывается на Azure RBAC путем добавления условий назначения ролей на основе атрибутов в контексте определенных действий. Условие назначения роли — это дополнительная проверка, которую можно дополнительно добавить к назначению роли, чтобы обеспечить более детализированный контроль доступа. Условие фильтрует разрешения, предоставленные как часть определения роли и назначения роли. Например, можно добавить условие, которое требует наличия у объекта конкретного тега, чтобы объект можно было считать. Вы не можете явно запретить доступ к определенным ресурсам с помощью условий.

Зачем нужны условия?

Существует три основных преимущества использования условий назначения ролей.

  • Укажите более точное управление доступом. Назначение роли использует определение роли с действиями и действиями данных для предоставления разрешений субъекта безопасности. Можно записать условия для фильтрации этих разрешений для более детального контроля доступа. Можно также добавлять условия к конкретным действиям. Например, вы можете предоставить Джону доступ на чтение BLOB-объектов в подписке только в том случае, если они помечены как Project=Blue.
  • Сокращение количества назначений ролей — в настоящее время каждая подписка Azure имеет ограничение на назначение ролей. Существуют сценарии, для которых требуются тысячи назначений ролей. Все эти назначения ролей должны быть управляемыми. В этих сценариях можно добавить условия для использования значительно меньшего количества назначений ролей.
  • Использование атрибутов, которые имеют определенные бизнес-значение — условия позволяют использовать атрибуты, имеющие определенное бизнес-значение, в системе управления доступом. Некоторые примеры атрибутов: имя проекта, этап разработки программного обеспечения и уровни классификации. Значения этих атрибутов ресурсов являются динамическими и меняются при перемещении пользователей между командами и проектами.

Примеры сценариев для условий

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

  • Доступ на чтение к большим двоичным объектам с тегом Project=Cascade
  • Новые большие двоичные объекты должны содержать тег Project=Cascade
  • Существующие большие двоичные объекты должны быть помечены как минимум одним ключом Project или Program
  • Существующие большие двоичные объекты должны быть помечены ключом Project и значениями Cascade, Baker или Skagit
  • Чтение, запись или удаление больших двоичных объектов в контейнерах с именами в формате "большой_двоичный_объект-пример-контейнер"
  • Доступ на чтение к BLOB-объектам в контейнерах с именами в формате "большой_двоичный_объект-пример-контейнер" с путем только для чтения
  • Доступ на запись к BLOB-объектам в контейнерах с именем Contosocorp с путем uploads/contoso
  • Доступ на чтение к BLOB-объектам с помощью тега Program=Alpine и пути к журналам
  • Доступ для чтения к BLOB-объектам с тегом Project=Baker при наличии у пользователя соответствующего атрибута Project=Baker
  • Доступ на чтение к BLOB-объектам во время определенного диапазона даты и времени.
  • Запись доступа к blob-объектам только через приватную ссылку или из определенной подсети.

Дополнительные сведения о создании этих примеров см. в примере условий назначения ролей Azure для служба хранилища BLOB-объектов.

Где можно добавить условия?

В настоящее время условия можно добавить в встроенные или пользовательские назначения ролей, которые имеют действия хранилища BLOB-объектов или данных хранилища очередей. Условия добавляются в ту же область, что и назначение роли. Как и в случае с назначениями ролей, необходимо иметь разрешения Microsoft.Authorization/roleAssignments/write, чтобы добавить условие.

Ниже приведены некоторые атрибуты хранилища BLOB-объектов, которые можно использовать в условиях.

  • Имя учетной записи
  • Теги индекса BLOB-объектов
  • Путь к большому двоичному объекту
  • Префикс BLOB-объекта
  • Имя контейнера
  • Имя области шифрования
  • Текущая версия
  • Включено ли иерархическое пространство имен
  • Приватный канал
  • Снимок
  • В формате UTC (текущая дата и время в универсальном времени в формате UTC)
  • Идентификатор версии

Как выглядит условие?

Условия можно добавлять к новым или существующим назначениям ролей. Ниже приведена роль Читатель данных BLOB-объекта хранилища, которая была назначена пользователю с именем Chandra в области группы ресурсов. Также было добавлено условие, разрешающее доступ только для чтения к BLOB-объектам с тегом Project=Cascade.

Схема назначения роли с условием.

Если Chandra попытается считать BLOB-объект без тега Project=Cascade, в доступе будет отказано.

Схема отказа в доступе с условием

Вот как выглядит условие на портале Azure.

Снимок экрана: редактор условий в портал Azure с разделом выражения сборки со значениями тегов индекса BLOB-объектов.

Вот как выглядит условие в коде:

(
    (
        !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}
        AND NOT
        SubOperationMatches{'Blob.List'})
    )
    OR
    (
        @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'
    )
)

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

Состояние функций условия

В следующей таблице перечислены сведения о состоянии функций условий:

Функция Состояние Дата
Использование атрибутов среды в условии Общедоступная версия Апрель 2024 г.
Добавление условий с помощью редактора условий в портал Azure Общедоступная версия Октябрь 2022
Добавление условий с помощью Azure PowerShell, Azure CLI или REST API Общедоступная версия Октябрь 2022
Используйте атрибуты ресурсов и запросов для определенных сочетаний ресурсов хранилища Azure, типов атрибутов доступа и уровней производительности учетной записи хранения. Дополнительные сведения см. в разделе "Состояние возможностей условий" в служба хранилища Azure. Общедоступная версия Октябрь 2022
Использование настраиваемых атрибутов безопасности в субъекте в условии Общедоступная версия Ноябрь 2023 г.

Условия и Microsoft Entra PIM

Вы также можете добавить условия для соответствующих назначений ролей с помощью Microsoft Entra управление привилегированными пользователями (Microsoft Entra PIM) для ресурсов Azure. При использовании Microsoft Entra PIM конечные пользователи должны активировать соответствующее назначение ролей, чтобы получить разрешение на выполнение определенных действий. Использование условий в Microsoft Entra PIM позволяет не только ограничить доступ пользователя к ресурсу с помощью точных условий, но и использовать Microsoft Entra PIM для защиты с помощью параметра с привязкой времени, рабочего процесса утверждения, аудита и т. д. Дополнительные сведения см. в статье Назначение ролей ресурсов Azure в управлении привилегированными пользователями.

Терминология

Для понимания Azure RBAC и Azure ABAC обратитесь к следующему списку терминов.

Термин Определение
Управление доступом на основе атрибутов (ABAC) Система авторизации, которая определяет доступ на основе атрибутов, связанных с субъектами безопасности, ресурсами и средой. С помощью ABAC можно предоставить субъекту безопасности доступ к ресурсу на основе атрибутов.
Azure ABAC Это реализация ABAC для Azure.
Условие назначения роли Дополнительная проверка, которую можно дополнительно добавить к назначению роли, чтобы обеспечить более детализированный контроль доступа.
атрибут В этом контексте это пара "ключ — значение", например Project=Blue, где Project — ключ атрибута, а Blue — значение атрибута. В управлении доступом атрибуты и теги являются синонимами.
выражение Инструкция в условии, результатом которого является значение true или false. Выражение имеет формат значения оператора>атрибута><<.<>

Ограничения

Ниже приведены некоторые ограничения для условий.

Ресурс Ограничение Примечания.
Количество выражений на условие с помощью визуального редактора 5 Вы можете добавить более пяти выражений с помощью редактора кода

Известные проблемы

Ниже приведены известные проблемы, связанные с условиями:

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