Получение списка назначений ролей Azure с помощью Azure CLI

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

Примечание.

Если ваша организация передала функции управления поставщику услуг, который использует службу Azure Lighthouse, то назначения ролей, предоставленные этим поставщиком услуг, здесь отображаться не будут. Аналогичным образом пользователи в клиенте поставщика услуг не будут видеть назначения ролей для пользователей в клиенте клиента независимо от назначенной им роли.

Необходимые компоненты

Список назначений ролей для пользователя

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

az role assignment list --assignee {assignee}

По умолчанию будут отображаться только назначения ролей для текущей подписки. Чтобы просмотреть назначения ролей для текущей подписки и ниже, добавьте параметр --all. Чтобы включить назначения ролей в родительские область, добавьте --include-inherited этот параметр. Чтобы включить назначения ролей для групп, из которых пользователь является участником транзитивно, добавьте --include-groups этот параметр.

В следующем примере показаны назначения ролей, напрямую присвоенные пользователю patlong@contoso.com.

az role assignment list --all --assignee patlong@contoso.com --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Backup Operator",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  },
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Virtual Machine Contributor",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  }
]

Вывод списка назначений ролей для группы ресурсов

Чтобы получить список назначений ролей, имеющихся в области действия группы ресурсов, используйте команду az role assignment list.

az role assignment list --resource-group {resourceGroup}

В следующем примере перечисляются назначения ролей для группы ресурсов pharma-sales-projectforecast.

az role assignment list --resource-group pharma-sales --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Backup Operator",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  },
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Virtual Machine Contributor",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  },
  
  ...

]

Получение списка назначений ролей для подписки

Чтобы получить список всех назначений ролей в области действия подписки, используйте команду az role assignment list. Идентификатор подписки можно найти в колонке Подписки на портале Azure. Также его можно получить с помощью команды az account list.

az role assignment list --scope "/subscriptions/{subscriptionId}"

Пример:

az role assignment list --scope "/subscriptions/00000000-0000-0000-0000-000000000000" --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "admin@contoso.com",
    "roleDefinitionName": "Owner",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000"
  },
  {
    "principalName": "Subscription Admins",
    "roleDefinitionName": "Owner",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000"
  },
  {
    "principalName": "alain@contoso.com",
    "roleDefinitionName": "Reader",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000"
  },

  ...

]

Список назначений ролей для группы управления

Чтобы получить список всех назначений ролей в области действия группы управления, используйте команду az role assignment list. Идентификатор группы управления можно найти в колонке Группы управления на портале Azure. Также его можно получить с помощью команды az account management-group list.

az role assignment list --scope /providers/Microsoft.Management/managementGroups/{groupId}

Пример:

az role assignment list --scope /providers/Microsoft.Management/managementGroups/sales-group --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "admin@contoso.com",
    "roleDefinitionName": "Owner",
    "scope": "/providers/Microsoft.Management/managementGroups/sales-group"
  },
  {
    "principalName": "alain@contoso.com",
    "roleDefinitionName": "Reader",
    "scope": "/providers/Microsoft.Management/managementGroups/sales-group"
  }
]

Формирование списка назначений ролей для управляемого удостоверения

  1. Получите идентификатор субъекта для управляемого удостоверения, назначаемого системой или пользователем.

    Чтобы получить идентификатор субъекта для управляемого удостоверения, назначаемого пользователем, можно использовать команду az ad sp list или az identity list.

    az ad sp list --display-name "{name}" --query [].id --output tsv
    

    Чтобы получить идентификатор субъекта для управляемого удостоверения, назначаемого системой, можно использовать команду az ad sp list.

    az ad sp list --display-name "{vmname}" --query [].id --output tsv
    
  2. Чтобы вывести список назначений ролей, используйте команду az role assignment list.

    По умолчанию будут отображаться только назначения ролей для текущей подписки. Чтобы просмотреть назначения ролей для текущей подписки и ниже, добавьте параметр --all. Чтобы просмотреть наследуемые назначения ролей, добавьте параметр --include-inherited.

    az role assignment list --assignee {objectId}
    

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