Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы составить представление о роли 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
В следующей таблице описано значение свойств роли.
Свойство | Описание |
---|---|
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}
могут содержаться следующие подстроки:
Подстрока действия | Описание |
---|---|
* |
Подстановочный знак предоставляет доступ ко всем действиям, соответствующим строке. |
read |
Включает действия чтения (GET). |
write |
Включает действия записи (PUT или PATCH). |
action |
Включает пользовательские действия, такие как перезапуск виртуальных машин (POST). |
delete |
Включает действия удаления (DELETE). |
Примеры определений роли
Ниже показано определение роли участника, отображаемое в Azure PowerShell и Azure CLI. Действия с использованием подстановочного знака (*
) под Actions
указывают, что главный, назначенный к этой роли, может выполнять все действия или, другими словами, управлять всем. Сюда входят и действия, определяемые в будущем (по мере добавления новых типов ресурсов в Azure). Действия под NotActions
вычитаются из Actions
. В случае роли Участника, 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:
- управление доступом к учетной записи хранения;
- Создание, обновление или удаление контейнера BLOB.
- удаление группы ресурсов со всеми ее ресурсами.
Доступ на уровне управления не наследуется к плоскости данных, если для метода проверки подлинности контейнера задана учетная запись пользователя Microsoft Entra, а не ключ доступа. Такое разделение предотвращает неограниченный доступ ролей с подстановочными знаками (*
) к вашим данным. Например, если у пользователя в подписке есть роль Читатель, он может просматривать учетную запись хранения, но по умолчанию не имеет возможности просматривать базовые данные.
Ранее управление доступом на основе ролей не использовалось для действий с данными. Авторизация для действий с данными варьировалась в зависимости от поставщиков услуг ресурсов. Та же модель управления доступом на основе ролей (RBAC), используемая для действий уровня управления, была расширена до действий уровня данных.
Для поддержки действий уровня данных в определение роли добавлены новые свойства данных. Действия плоскости данных указываются в свойствах 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"
}
]
Только действия плоскости данных могут быть добавлены к свойствам DataActions
и NotDataActions
. Поставщики ресурсов определяют, какие действия являются действиями данных, установив значение свойства isDataAction
на true
. Список действий, в которых isDataAction
находится true
, см. в разделе "Операции поставщика ресурсов". Роли, для которых отсутствуют действия с данными, не обязаны иметь свойства DataActions
и NotDataActions
в определении роли.
Авторизация для всех вызовов API уровня управления обрабатывается Azure Resource Manager. Авторизация вызовов API плоскости данных обрабатывается поставщиком ресурсов или Azure Resource Manager.
Пример действий с данными
Чтобы лучше понять, как работают действия плоскости управления и плоскости данных, рассмотрим конкретный пример. Алисе назначена роль Владелец на уровне подписки. Бобу назначена роль Участник данных BLOB-объектов хранилища на уровне области учетной записи хранилища. Этот пример показан на схеме ниже.
Роли владельца для Алисы и участника 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 Storage.
Какие средства поддерживают использование ролей 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
.
Строка действия | Описание |
---|---|
*/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
указывает действия уровня данных, которые роль позволяет выполнять на ваших данных в этом объекте. Например, если у пользователя есть доступ на чтение объектов BLOB для учетной записи для хранения данных, он может считывать объекты BLOB в этой учетной записи. Ниже приведены некоторые примеры действий с данными, которые можно использовать в DataActions
.
Строка действия данных | Описание |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
Возвращает большой двоичный объект или список больших двоичных объектов. |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
Возвращает результат записи BLOB. |
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 |
Создает или обновляет определение настраиваемой роли с помощью указанных разрешений и назначаемых областей. |