Формирование списка назначений ролей Azure с помощью REST API

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

Примечание.

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

Примечание.

См. сведения о просмотре и удалении персональных данных в руководстве по созданию запросов субъектов данных Azure в соответствии с GDPR. Дополнительные сведения о GDPR см. в разделе, посвященном GDPR, в Центре управления безопасностью Майкрософт и на портале Service Trust Portal.

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

Необходимо использовать следующую версию:

  • 2015-07-01 или более поздней версии.
  • 2022-04-01 или более поздней версии для включения условий

Дополнительные сведения см. в версиях API REST API Azure RBAC.

Список назначений ролей

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

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

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter={filter}
    
  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} условием, по которому требуется отфильтровать список назначений ролей.

    Фильтр Description
    $filter=atScope() Вывод списка назначений ролей только для определенной области без учета внутренних областей.
    $filter=assignedTo('{objectId}') Вывод списка назначений ролей для определенного пользователя или субъекта-службы.
    Если пользователь является членом группы, которая имеет назначение роли, такое назначение роли также появится в списке. Этот фильтр является транзитивным для групп, т. е. если пользователь является членом группы, а эта группа является членом другой группы с назначением роли, это назначение роли будет также включено в список.
    Этот фильтр принимает только идентификатор объекта для пользователя или субъекта-службы. Невозможно передать идентификатор объекта для группы.
    $filter=atScope()+and+assignedTo('{objectId}') Список назначений ролей для указанного пользователя или субъект-службы в указанной области.
    $filter=principalId+eq+'{objectId}' Вывод списка назначений ролей для определенного пользователя, группы или субъекта-службы.

Следующий запрос позволяет сформировать список, включающий все назначения ролей для указанного пользователя в области подписки:

GET https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=atScope()+and+assignedTo('{objectId1}')

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

{
    "value": [
        {
            "properties": {
                "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
                "principalId": "{objectId1}",
                "principalType": "User",
                "scope": "/subscriptions/{subscriptionId1}",
                "condition": null,
                "conditionVersion": null,
                "createdOn": "2022-01-15T21:08:45.4904312Z",
                "updatedOn": "2022-01-15T21:08:45.4904312Z",
                "createdBy": "{createdByObjectId1}",
                "updatedBy": "{updatedByObjectId1}",
                "delegatedManagedIdentityResourceId": null,
                "description": null
            },
            "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
            "type": "Microsoft.Authorization/roleAssignments",
            "name": "{roleAssignmentId1}"
        }
    ]
}

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