Поделиться через


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

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

Примечание.

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

Примечание.

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

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

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

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

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

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

Чтобы составить список прав доступа при использовании 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}"
        }
    ]
}

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