Вывод списка определений ролей Azure

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

Список ролей администратора Azure Active Directory см. в статье Разрешения роли администратора в Azure Active Directory.

Портал Azure

Вывод списка всех ролей

Выполните следующие действия, чтобы вывести список всех ролей на портале Azure.

  1. На портале Azure щелкните Все службы, а затем выберите любую подписку. Например, можно выбрать Группы управления, Подписки, Группы ресурсов или конкретный ресурс.

  2. Щелкните конкретный ресурс.

  3. Щелкните Управление доступом (IAM) .

  4. Чтобы просмотреть список всех встроенных и пользовательских ролей, щелкните вкладку Роли.

    Снимок экрана: список "Роли" с новым интерфейсом.

  5. Чтобы просмотреть разрешения для конкретной роли, в столбце Сведения щелкните ссылку Просмотр.

    Отобразится панель разрешений.

  6. Откройте вкладку Разрешения, чтобы просмотреть и найти разрешения для выбранной роли.

    Снимок экрана: разрешения ролей с новым интерфейсом.

Azure PowerShell

Вывод списка всех ролей

Чтобы вывести список всех ролей в Azure PowerShell, используется команда Get-AzRoleDefinition.

Get-AzRoleDefinition | FT Name, Description
AcrImageSigner                                    acr image signer
AcrQuarantineReader                               acr quarantine data reader
AcrQuarantineWriter                               acr quarantine data writer
API Management Service Contributor                Can manage service and the APIs
API Management Service Operator Role              Can manage service but not the APIs
API Management Service Reader Role                Read-only access to service and APIs
Application Insights Component Contributor        Can manage Application Insights components
Application Insights Snapshot Debugger            Gives user permission to use Application Insights Snapshot Debugge...
Automation Job Operator                           Create and Manage Jobs using Automation Runbooks.
Automation Operator                               Automation Operators are able to start, stop, suspend, and resume ...
...

Вывод списка определений ролей

Чтобы получить список сведений для определенной роли, используется команда Get-AzRoleDefinition.

Get-AzRoleDefinition <role_name>
PS C:\> Get-AzRoleDefinition "Contributor"

Name             : Contributor
Id               : b24988ac-6180-42a0-ab88-20f7382dd24c
IsCustom         : False
Description      : Lets you manage everything except access to resources.
Actions          : {*}
NotActions       : {Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write,
                   Microsoft.Authorization/elevateAccess/Action}
DataActions      : {}
NotDataActions   : {}
AssignableScopes : {/}

Вывод списка определений ролей в формате JSON

Чтобы указать роль в формате JSON, используется команда Get-AzRoleDefinition.

Get-AzRoleDefinition <role_name> | ConvertTo-Json
PS C:\> Get-AzRoleDefinition "Contributor" | ConvertTo-Json

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Вывод списка разрешений, относящихся к определению роли

Чтобы вывести список разрешений для определенной роли, используется команда Get-AzRoleDefinition.

Get-AzRoleDefinition <role_name> | FL Actions, NotActions
PS C:\> Get-AzRoleDefinition "Contributor" | FL Actions, NotActions

Actions    : {*}
NotActions : {Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write,
             Microsoft.Authorization/elevateAccess/Action,
             Microsoft.Blueprint/blueprintAssignments/write...}
(Get-AzRoleDefinition <role_name>).Actions
PS C:\> (Get-AzRoleDefinition "Virtual Machine Contributor").Actions

Microsoft.Authorization/*/read
Microsoft.Compute/availabilitySets/*
Microsoft.Compute/locations/*
Microsoft.Compute/virtualMachines/*
Microsoft.Compute/virtualMachineScaleSets/*
Microsoft.DevTestLab/schedules/*
Microsoft.Insights/alertRules/*
Microsoft.Network/applicationGateways/backendAddressPools/join/action
Microsoft.Network/loadBalancers/backendAddressPools/join/action
...

Azure CLI

Вывод списка всех ролей

Чтобы вывести список всех ролей в Azure CLI, используется команда az role definition list.

az role definition list

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

az role definition list --output json --query '[].{roleName:roleName, description:description}'
[
  {
    "description": "Can manage service and the APIs",
    "roleName": "API Management Service Contributor"
  },
  {
    "description": "Can manage service but not the APIs",
    "roleName": "API Management Service Operator Role"
  },
  {
    "description": "Read-only access to service and APIs",
    "roleName": "API Management Service Reader Role"
  },

  ...

]

В следующем примере перечислены все встроенные роли.

az role definition list --custom-role-only false --output json --query '[].{roleName:roleName, description:description, roleType:roleType}'
[
  {
    "description": "Can manage service and the APIs",
    "roleName": "API Management Service Contributor",
    "roleType": "BuiltInRole"
  },
  {
    "description": "Can manage service but not the APIs",
    "roleName": "API Management Service Operator Role",
    "roleType": "BuiltInRole"
  },
  {
    "description": "Read-only access to service and APIs",
    "roleName": "API Management Service Reader Role",
    "roleType": "BuiltInRole"
  },
  
  ...

]

Вывод списка определений ролей

Чтобы вывести список сведений о роли, используется команда az role definition list.

az role definition list --name {roleName}

В следующем примере показано определение роли Участник.

az role definition list --name "Contributor"
[
  {
    "assignableScopes": [
      "/"
    ],
    "description": "Lets you manage everything except access to resources.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
    "name": "b24988ac-6180-42a0-ab88-20f7382dd24c",
    "permissions": [
      {
        "actions": [
          "*"
        ],
        "dataActions": [],
        "notActions": [
          "Microsoft.Authorization/*/Delete",
          "Microsoft.Authorization/*/Write",
          "Microsoft.Authorization/elevateAccess/Action",
          "Microsoft.Blueprint/blueprintAssignments/write",
          "Microsoft.Blueprint/blueprintAssignments/delete"
        ],
        "notDataActions": []
      }
    ],
    "roleName": "Contributor",
    "roleType": "BuiltInRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

Вывод списка разрешений, относящихся к определению роли

В следующем примере показаны только разрешенные и не разрешенные действия (свойства notActions) роли Участник.

az role definition list --name "Contributor" --output json --query '[].{actions:permissions[0].actions, notActions:permissions[0].notActions}'
[
  {
    "actions": [
      "*"
    ],
    "notActions": [
      "Microsoft.Authorization/*/Delete",
      "Microsoft.Authorization/*/Write",
      "Microsoft.Authorization/elevateAccess/Action",
      "Microsoft.Blueprint/blueprintAssignments/write",
      "Microsoft.Blueprint/blueprintAssignments/delete"
    ]
  }
]

В следующем примере показаны только разрешенные действия роли Участник виртуальных машин.

az role definition list --name "Virtual Machine Contributor" --output json --query '[].permissions[0].actions'
[
  [
    "Microsoft.Authorization/*/read",
    "Microsoft.Compute/availabilitySets/*",
    "Microsoft.Compute/locations/*",
    "Microsoft.Compute/virtualMachines/*",
    "Microsoft.Compute/virtualMachineScaleSets/*",
    "Microsoft.Compute/disks/write",
    "Microsoft.Compute/disks/read",
    "Microsoft.Compute/disks/delete",
    "Microsoft.DevTestLab/schedules/*",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Network/applicationGateways/backendAddressPools/join/action",
    "Microsoft.Network/loadBalancers/backendAddressPools/join/action",

    ...

    "Microsoft.Storage/storageAccounts/listKeys/action",
    "Microsoft.Storage/storageAccounts/read",
    "Microsoft.Support/*"
  ]
]

REST API

Вывод списка определений роли

Чтобы вывести список определений роли, используйте REST API Определения ролей — список. Чтобы уточнить результаты, укажите область и дополнительный фильтр.

  1. Можете начать со следующего запроса:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={$filter}&api-version=2015-07-01
    
  2. Внутри URI замените {scope} областью, для которой требуется вывести список определений роли.

    Область Тип
    providers/Microsoft.Management/managementGroups/{groupId1} группа управления;
    subscriptions/{subscriptionId1} Подписка
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Группа ресурсов
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Ресурс

    В предыдущем примере microsoft.web — это поставщик ресурсов, который ссылается на экземпляр Службы приложений. Аналогичным образом можно использовать любые другие поставщики ресурсов и указать область. Дополнительные сведения см. в статье Поставщики и типы ресурсов Azure и Операции поставщиков ресурсов Azure.

  3. Замените {filter} на условие, по которому требуется отфильтровать список определений ролей.

    Filter Описание
    $filter=atScopeAndBelow() Выводит список определений ролей для указанной области и всех подобластей.
    $filter=type+eq+'{type}' Выводит список определений ролей указанного типа. Тип роли может быть CustomRole или BuiltInRole.

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

GET https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions?api-version=2015-07-01&$filter=type+eq+'CustomRole'

Ниже приведен пример выходных данных:

{
    "value": [
        {
            "properties": {
                "roleName": "Billing Reader Plus",
                "type": "CustomRole",
                "description": "Read billing data and download invoices",
                "assignableScopes": [
                    "/subscriptions/{subscriptionId1}"
                ],
                "permissions": [
                    {
                        "actions": [
                            "Microsoft.Authorization/*/read",
                            "Microsoft.Billing/*/read",
                            "Microsoft.Commerce/*/read",
                            "Microsoft.Consumption/*/read",
                            "Microsoft.Management/managementGroups/read",
                            "Microsoft.CostManagement/*/read",
                            "Microsoft.Billing/invoices/download/action",
                            "Microsoft.CostManagement/exports/*"
                        ],
                        "notActions": [
                            "Microsoft.CostManagement/exports/delete"
                        ]
                    }
                ],
                "createdOn": "2020-02-21T04:49:13.7679452Z",
                "updatedOn": "2020-02-21T04:49:13.7679452Z",
                "createdBy": "{createdByObjectId1}",
                "updatedBy": "{updatedByObjectId1}"
            },
            "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId1}",
            "type": "Microsoft.Authorization/roleDefinitions",
            "name": "{roleDefinitionId1}"
        }
    ]
}

Вывод списка определений ролей

Чтобы вывести список сведений о конкретной роли, используйте REST API Определения ролей — получение или Определения ролей — получение по идентификатору.

  1. Можете начать со следующего запроса:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2015-07-01
    

    Для определения роли на уровне каталога можно использовать следующий запрос:

    GET https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2015-07-01
    
  2. Внутри URI замените {scope} областью, для которой требуется вывести список определений роли.

    Область Тип
    providers/Microsoft.Management/managementGroups/{groupId1} группа управления;
    subscriptions/{subscriptionId1} Подписка
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Группа ресурсов
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Ресурс
  3. Замените {roleDefinitionId} идентификатором определения роли.

Следующий запрос выводит список определений роли Читатель:

GET https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7?api-version=2015-07-01

Ниже приведен пример выходных данных:

{
    "properties": {
        "roleName": "Reader",
        "type": "BuiltInRole",
        "description": "Lets you view everything, but not make any changes.",
        "assignableScopes": [
            "/"
        ],
        "permissions": [
            {
                "actions": [
                    "*/read"
                ],
                "notActions": []
            }
        ],
        "createdOn": "2015-02-02T21:55:09.8806423Z",
        "updatedOn": "2019-02-05T21:24:35.7424745Z",
        "createdBy": null,
        "updatedBy": null
    },
    "id": "/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
    "type": "Microsoft.Authorization/roleDefinitions",
    "name": "acdd72a7-3385-48ef-bd42-f606fba81ae7"
}

Дальнейшие действия