Azure Active Directory - graphrba c .GroupsClient # Список: Ошибка ответа на запрос: StatusCode = 403 - PullRequest
0 голосов
/ 09 февраля 2020

Мой сервисный субъект пытается прочитать определенную группу AD, используя следующий код terraform:

data "azuread_group" "hosting_ad_group" {
  name = local.hosting_ad_group_name
}

Согласно документации на https://www.terraform.io/docs/providers/azuread/d/group.html:

ПРИМЕЧАНИЕ. Если вы проходите проверку подлинности с использованием субъекта-службы, у него должны быть разрешения на чтение данных каталога в API-интерфейсе Windows Azure.

И действительно, у моего SP есть это разрешение. : enter image description here

Тем не менее, когда я использую terraform, примените в качестве этого SP, я получаю следующее:

Error: Error finding Azure AD Group with display name "AdminRole-Product-DFDevelopmentOps": Error listing Azure AD Groups for filter "displayName eq 'AdminRole-Product-DFDevelopmentOps'": graphrbac.GroupsClient#List: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="Unknown" Message="Unknown service error" Details=[{"odata.error":{"code":"Authorization_RequestDenied","date":"2020-02-09T13:59:32","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"b4f52aca-7306-4d12-95c9-cf922ae59483"}}]

Чего мне не хватает?

РЕДАКТИРОВАТЬ 1

Вот как я устанавливаю разрешения API для terraform:

resource "azuread_application" "app" {
  name = local.ctx.HostingAppName

  # AAD Graph API   
  required_resource_access {
    resource_app_id = "00000002-0000-0000-c000-000000000000"

    # Sign in and read user profile
    resource_access {
      id   = "311a71cc-e848-46a1-bdf8-97ff7156d8e6"
      type = "Scope"
    }

    # Manage apps that this app creates or owns
    resource_access {
      id   = "824c81eb-e3f8-4ee6-8f6d-de7f50d565b7"
      type = "Role"
    }

    # Read directory data
    resource_access {
      id   = "5778995a-e1bf-45b8-affa-663a9f3f4d04"
      type = "Scope"
    }
  }
}

1 Ответ

1 голос
/ 10 февраля 2020

Обратите внимание, что Разрешения приложений отличаются от Делегированные разрешения . Если вы используете сервисный принципал для вызова API, вы должны предоставить разрешение для приложения.

enter image description here

Ссылка:

Виды разрешений

...