Общие сведения об определениях ролей Azure

Чтобы составить представление о роли Azure или создать собственную настраиваемую роль Azure, полезно узнать, как определяются роли. В этой статье подробно описаны определения ролей и приведены примеры.

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

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

Ниже показан пример свойств в определении роли при отображении с помощью Azure PowerShell:

Name
Id
IsCustom
Description
Actions []
NotActions []
DataActions []
NotDataActions []
AssignableScopes []
Condition
ConditionVersion

Ниже показан пример свойств в определении роли при отображении с помощью Azure CLI или REST API:

roleName
name
id
roleType
type
description
actions []
notActions []
dataActions []
notDataActions []
assignableScopes []
condition
conditionVersion
createdOn
updatedOn
createdBy
updatedBy

В следующей таблице описано значение свойств роли.

Свойство Description
Name
roleName
Отображаемое имя роли.
Id
name
Уникальный идентификатор роли. Встроенные роли имеют одинаковый идентификатор роли в облаках.
id Полный уникальный идентификатор роли. Даже если роль переименована, идентификатор роли не изменяется. Рекомендуется использовать идентификатор роли в скриптах.
IsCustom
roleType
Указывает, является ли эта роль настраиваемой ролью. Задайте значение true или CustomRole для настраиваемых ролей. Задайте значение false или BuiltInRole для встроенных ролей.
type Тип объекта. Задайте значение Microsoft.Authorization/roleDefinitions.
Description
description
Описание роли.
Actions
actions
Массив строк, указывающих действия уровня управления, которые позволяет выполнять роль.
NotActions
notActions
Массив строк, указывающих действия уровня управления, исключенные из разрешенного Actions.
DataActions
dataActions
Массив строк, указывающих действия плоскости данных, которые роль позволяет выполнять с данными в этом объекте.
NotDataActions
notDataActions
Массив строк, указывающих действия плоскости данных, исключенные из разрешенного DataActions.
AssignableScopes
assignableScopes
Массив строк, указывающих области, доступные роли для назначения.
Condition
condition
Для встроенных ролей оператор условия на основе одного или нескольких действий в определении ролей.
ConditionVersion
conditionVersion
Номер версии условия. По умолчанию используется версия 2.0 и является единственной поддерживаемой версией.
createdOn Была создана роль даты и времени.
updatedOn Дата и время последнего обновления роли.
createdBy Для пользовательских ролей субъект, создавший роль.
updatedBy Для пользовательских ролей субъект, обновляющий роль.

Формат действий

Действия указываются со строками, имеющими следующий формат:

  • {Company}.{ProviderName}/{resourceType}/{action}

Часть {action} строки действия указывает тип действий, которые можно выполнить в типе ресурса. Например, в {action} могут содержаться следующие подстроки:

Подстрока действия Description
* Подстановочный знак предоставляет доступ ко всем действиям, соответствующим строке.
read Включает действия чтения (GET).
write Включает действия записи (PUT или PATCH).
action Включает пользовательские действия, такие как перезапуск виртуальных машин (POST).
delete Включает действия удаления (DELETE).

Примеры определений роли

Ниже показано определение роли участника, отображаемое в Azure PowerShell и Azure CLI. Действия подстановочного знака (*) Actions указывают на то, что субъект, назначенный этой роли, может выполнять все действия или, другими словами, управлять всем. Сюда входят и действия, определяемые в будущем (по мере добавления новых типов ресурсов в Azure). Из них вычитаются ActionsдействияNotActions. В случае роли NotActions участника удаляет возможность управления доступом к ресурсам, а также управлять назначениями Azure Blueprints.

Роль участника, отображаемая в Azure PowerShell:

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Grants full access to manage all resources, but does not allow you to assign roles in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete",
    "Microsoft.Compute/galleries/share/action",
    "Microsoft.Purview/consents/write",
    "Microsoft.Purview/consents/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ],
  "Condition": null,
  "ConditionVersion": null
}

Роль участника, отображаемая в Azure CLI:

[
  {
    "assignableScopes": [
      "/"
    ],
    "createdBy": null,
    "createdOn": "2015-02-02T21:55:09.880642+00:00",
    "description": "Grants full access to manage all resources, but does not allow you to assign roles in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
    "name": "b24988ac-6180-42a0-ab88-20f7382dd24c",
    "permissions": [
      {
        "actions": [
          "*"
        ],
        "condition": null,
        "conditionVersion": null,
        "dataActions": [],
        "notActions": [
          "Microsoft.Authorization/*/Delete",
          "Microsoft.Authorization/*/Write",
          "Microsoft.Authorization/elevateAccess/Action",
          "Microsoft.Blueprint/blueprintAssignments/write",
          "Microsoft.Blueprint/blueprintAssignments/delete",
          "Microsoft.Compute/galleries/share/action",
          "Microsoft.Purview/consents/write",
          "Microsoft.Purview/consents/delete"
        ],
        "notDataActions": []
      }
    ],
    "roleName": "Contributor",
    "roleType": "BuiltInRole",
    "type": "Microsoft.Authorization/roleDefinitions",
    "updatedBy": null,
    "updatedOn": "2023-07-10T15:10:53.947865+00:00"
  }
]

Действия управления и данных

Управление доступом на основе ролей для действий уровня управления указывается в Actions определении роли и NotActions свойствах. Ниже приведены некоторые примеры действий уровня управления в Azure:

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

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

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

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

  • Чтение списка BLOB-объектов в контейнере.
  • Запись BLOB-объекта хранилища в контейнер.
  • Удаление сообщения из очереди.

Ниже приведено определение роли чтения данных BLOB-объектов хранилища, которое включает действия как в свойствах Actions , так и DataActions в свойствах. Эта роль позволяет считывать контейнер больших двоичных объектов, а также базовые данные большого двоичного объекта.

Роль "Модуль чтения данных BLOB-объектов хранилища", отображаемая в Azure PowerShell:

{
  "Name": "Storage Blob Data Reader",
  "Id": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "IsCustom": false,
  "Description": "Allows for read access to Azure Storage blob containers and data",
  "Actions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/read",
    "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
  ],
  "NotActions": [],
  "DataActions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ],
  "Condition": null,
  "ConditionVersion": null
}

Роль "Модуль чтения данных BLOB-объектов хранилища", отображаемая в Azure CLI:

[
  {
    "assignableScopes": [
      "/"
    ],
    "createdBy": null,
    "createdOn": "2017-12-21T00:01:24.797231+00:00",
    "description": "Allows for read access to Azure Storage blob containers and data",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "name": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "permissions": [
      {
        "actions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/read",
          "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
        ],
        "condition": null,
        "conditionVersion": null,
        "dataActions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
        ],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Storage Blob Data Reader",
    "roleType": "BuiltInRole",
    "type": "Microsoft.Authorization/roleDefinitions",
    "updatedBy": null,
    "updatedOn": "2021-11-11T20:13:55.297507+00:00"
  }
]

К свойствам NotDataActions можно добавлять DataActions только действия плоскости данных. Поставщики ресурсов определяют, какие действия являются действиями данных, задав isDataAction для свойства значение true. Список действий, в которых isDataAction находится true, см. в разделе "Операции поставщика ресурсов". Роли, у которых нет действий с данными, не требуются DataActions и NotDataActions свойства в определении роли.

Авторизация для всех вызовов API уровня управления обрабатывается Azure Resource Manager. Авторизация вызовов API плоскости данных обрабатывается поставщиком ресурсов или Azure Resource Manager.

Пример действий с данными

Чтобы лучше понять, как работают действия плоскости управления и плоскости данных, рассмотрим конкретный пример. Алисе назначена роль Владелец на уровне подписки. Бобу назначена роль Участник для данных BLOB-объектов хранилища на уровне области учетной записи хранения. Этот пример показан на схеме ниже.

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

Для роли Владелец Алисы и роли Участник для данных больших двоичных объектов хранилища Боба доступны следующие действия:

Ответственный

    Действия
    *

Участник данных хранилища BLOB-объектов

    Действия
    Microsoft.Storage/storageAccounts/blobServices/containers/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/read
    Microsoft.Storage/storageAccounts/blobServices/containers/write
    Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action
    Действия с данными
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action

Так как Алиса имеет подстановочный знак (*) в области подписки, их разрешения наследуются, чтобы разрешить им выполнять все действия уровня управления. Алиса может выполнять чтение, запись и удаление контейнеров. Однако Алиса не может выполнять действия плоскости данных, не выполняя дополнительных действий. Например, по умолчанию Алиса не может считывать большие двоичные объекты в контейнере. Чтобы выполнять чтение больших двоичных объектов, Алиса должна извлечь ключи доступа к хранилищу и использовать их для получения доступа к большим двоичным объектам.

Разрешения Боба ограничены только Actions и DataActions, указанными в роли Участник для данных BLOB-объектов хранилища. На основе роли Боб может выполнять действия уровня управления и плоскости данных. Например, Боб может считывать, записывать и удалять контейнеры в указанной учетной записи хранения, а также выполнять те же операции с большими двоичными объектами.

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

Какие средства поддерживают использование ролей Azure для действий с данными?

Для просмотра и работы с действиями с данными необходимо иметь правильные версии средств или пакетов SDK:

Средство Версия
Azure PowerShell 1.1.0 или более поздней версии
Azure CLI 2.0.30 или более поздней версии
Azure для .NET 2.8.0-preview или более поздней версии
Пакет Azure SDK для Go 15.0.0 или более поздней версии
Azure для Java 1.9.0 или более поздней версии
Azure для Python 0.40.0 или более поздней версии
Пакет Azure SDK для Ruby 0.17.1 или более поздней версии

Чтобы просмотреть и использовать действия данных в REST API, необходимо задать параметр версии API для следующей версии или более поздней:

  • 01.07.2018

Действия

Разрешение Actions указывает действия уровня управления, которые позволяет выполнять роль. Это коллекция строк, которые определяют защищаемые действия поставщиков ресурсов Azure. Ниже приведены некоторые примеры действий плоскости управления, которые можно использовать в Actions.

Строка действия Description
*/read Предоставляет доступ к действиям чтения для всех типов ресурсов всех поставщиков ресурсов Azure.
Microsoft.Compute/* Предоставляет доступ ко всем действиям для всех типов ресурсов в поставщике ресурсов Microsoft.Compute.
Microsoft.Network/*/read Предоставляет доступ к действиям чтения для всех типов ресурсов в поставщике ресурсов Microsoft.Network.
Microsoft.Compute/virtualMachines/* Предоставляет доступ ко всем действиям виртуальных машин и его дочерним типам ресурсов.
microsoft.web/sites/restart/Action Предоставляет доступ к перезапуску веб-приложения.

NotActions

Разрешение NotActions указывает действия уровня управления, вычитаемые или исключенные из разрешенного Actions с подстановочным знаком (*). Используйте разрешение, NotActions если набор действий, которые требуется разрешить, проще определить путем вычитания из Actions него подстановочного знака (*). Доступ, предоставленный ролью (эффективными разрешениями), вычисляется путем вычитания NotActions действий из Actions действий.

Actions - NotActions = Effective control plane permissions

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

Действия NotActions Действующие разрешения плоскости управления
Microsoft.CostManagement/exports/* none Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action
Microsoft.CostManagement/exports/* Microsoft.CostManagement/exports/delete Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/run/action

Примечание.

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

Различия между NotActions и назначениями запрета

NotActions и назначения запрета не одинаковы и служат разным целям. NotActions удобный способ вычитания определенных действий из действия подстановочного знака (*).

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

Действия с данными

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

Строка действия данных Description
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read Возвращает большой двоичный объект или список больших двоичных объектов.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write Возвращает результат записи большого двоичного объекта.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read Возвращает сообщение.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Возвращает сообщение или результат записи или удаления сообщения.

NotDataActions

Разрешение NotDataActions указывает действия плоскости данных, вычитаемые или исключенные из разрешенного DataActions с подстановочным знаком (*). Используйте разрешение, NotDataActions если набор действий, которые требуется разрешить, проще определить путем вычитания из DataActions него подстановочного знака (*). Доступ, предоставленный ролью (эффективными разрешениями), вычисляется путем вычитания NotDataActions действий из DataActions действий. Каждый поставщик ресурсов предоставляет соответствующий набор API для выполнения действий с данными.

DataActions - NotDataActions = Effective data plane permissions

В следующей таблице показаны два примера разрешений уровня даты для действия подстановочного знака Microsoft.Storage :

Действия с данными NotDataActions Действующие разрешения плоскости данных
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* none Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action

Примечание.

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

AssignableScopes

Свойство AssignableScopes задает области (корневую, группу управления, подписки или группы ресурсов), где можно назначить определение роли. Вы можете сделать настраиваемую роль доступной для назначения только в группе управления, подписках или группах ресурсов, которые требуют его. Необходимо использовать по крайней мере одну группу управления, подписку или группу ресурсов.

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

Для встроенных ролей в качестве AssignableScopes задана корневая область ("/"). Корневая область указывает, что роль доступна для назначения во всех областях.

Примеры допустимых назначаемых областей:

Роль доступна для назначения Пример
Одна подписка "/subscriptions/{subscriptionId1}"
Две подписки "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
Группа сетевых ресурсов "/subscriptions/{subscriptionId1}/resourceGroups/Network"
Одна группа управления "/providers/Microsoft.Management/managementGroups/{groupId1}"
Группа управления и подписка "/providers/Microsoft.Management/managementGroups/{groupId1}", "/subscriptions/{subscriptionId1}",
Все области (применимо только ко встроенным ролям) "/"

В AssignableScopes настраиваемой роли можно определить только одну группу управления.

Хотя можно создать пользовательскую роль с экземпляром ресурса с AssignableScopes помощью командной строки, не рекомендуется. Каждый клиент поддерживает не более 5 000 пользовательских ролей. Использование этой стратегии может потенциально исчерпать доступные пользовательские роли. В конечном счете уровень доступа определяется назначением настраиваемой роли (областью и разрешениями ролей и субъектом безопасности), а не AssignableScopes указанным в настраиваемой роли. Таким образом, создайте пользовательские роли с AssignableScopes группой управления, подпиской или группой ресурсов, но назначьте пользовательские роли с узкой областью, например ресурсом или группой ресурсов.

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

Определение роли привилегированного администратора

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

Строка действия Description
* Создание ресурсов всех типов и управление ими.
*/delete Удаление ресурсов всех типов.
*/write Запись ресурсов всех типов.
Microsoft.Authorization/denyAssignments/delete Удаление запрета назначения в указанной области.
Microsoft.Authorization/denyAssignments/write Создание запрета назначения в указанной области.
Microsoft.Authorization/roleAssignments/delete Здесь описывается удаление назначения роли в указанной области.
Microsoft.Authorization/roleAssignments/write Создает назначение роли в указанной области.
Microsoft.Authorization/roleDefinitions/delete Удаляет указанное определение настраиваемой роли.
Microsoft.Authorization/roleDefinitions/write Создает или обновляет определение настраиваемой роли с помощью указанных разрешений и назначаемых областей.

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