Какие Точные разрешения необходимы для использования Get-AzureRmRoleAssignment в качестве приложения через ServicePrincipal

Я видел такие посты, где есть путаница в том, какое именно разрешение требуется для того, чтобы ServicePrincipal вызывал Get-AzureRmRoleAssignment при входе в систему с помощью Login-AzureRmAccount.

В моем случае, если я вызываю Get-AzureRmRoleAssignment с флагом -debug, я могу зафиксировать следующую ошибку в теле HTTP-ответа:

Body:
{
  "odata.error": {
    "code": "Authorization_RequestDenied",
    "message": {
      "lang": "en",
      "value": "Insufficient privileges to complete the operation."
    }
  }
}

Я установил права доступа для приложения следующим образом... сначала доступ Azure AD:

Azure AD perms

А затем доступ к Microsoft Graph:

MS Graph химическая завивка

Это все еще дает ошибку сбоя authZ. Я даже пытался провести эксперимент, в котором я давал приложению ВСЕ разрешения на каждый API, но это все равно не сработало.

Чего не хватает? Какие привилегии ИМЕННО необходимы, чтобы разрешить программный доступ только для чтения, чтобы получить список назначений ролей с помощью этого вызова?

1 ответ

Решение

Во-первых, как я ответил в этом случае, Get-AzureRmRoleAssignment не только нуждается read access for role assignment с разрешением API REST Azure, но также необходимо Read directory data разрешение с помощью API Azure AD Graph. После добавления разрешений

Добавить AAD Graph API Permission:

Вам также нужно нажать Grant permissions Кнопка, чтобы сделать согласие администратора.

Добавьте представления Azure REST API:

Кроме того, перед добавлением разрешений API-интерфейса AAD для вашего sp убедитесь, что у sp есть разрешения с API-интерфейсом REST Azure, назначив ему роль (например, роль участника) из подписки RBAC(IAM).

Я проверил это и добился успеха.

Другие вопросы по тегам