Общие сведения об определениях ролей 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 |
Создает или обновляет определение настраиваемой роли с помощью указанных разрешений и назначаемых областей. |