«список разрешений для приложений ad az» не соответствует списку приложений на портале Azure - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь выяснить, почему некоторые задачи автоматизации не работают с созданным мною компонентом службы, особенно с любыми задачами, связанными с Azure Active Directory.Похоже, что портал Azure ясно показывает, что компоненту службы было предоставлено разрешение API Microsoft.Graph Directory.Read.All.Портал также показывает, что у этого участника службы также есть разрешение User.Read.

Однако, когда я запускаю az ad app permission list-grants для субъекта службы, он отображает только User.Read.Это заставляет меня задуматься, действительно ли разрешение Directory.Read.All присутствует.И да, портал ясно показывает, что разрешение Directory.Read.All предоставлено.

Как я могу подтвердить, что у моего Сервисного принципала действительно есть разрешение Directory.Read.All API?

 az ad app permission list-grants --id db7a66b4-06ad-4412-9bbc-73cb34f96ce2 --show-resource-name
[
  {
    "clientId": "01b359a2-f452-43c6-b290-e5ea1b359f38",
    "consentType": "AllPrincipals",
    "expiryTime": "2019-12-08T17:07:04.550141",
    "objectId": "olmzAVL0xkOykOXqGzWfOAvNygY8CKVIummKcmVpwq8",
    "odatatype": null,
    "principalId": null,
    "resourceDisplayName": "Microsoft Graph",
    "resourceId": "06cacd0b-083c-48a5-ba69-8a726569c2af",
    "scope": "User.Read",
    "startTime": "0001-01-01T00:00:00"
  }
]

Игрубое воссоздание того, что я вижу на портале для этого участника службы в Azure Active Directory> Регистрация приложений> (имя участника службы)> Разрешения API:

API/Permissions name   Type         Admin Consent Required
--------------------   -----------  ----------------------------------- 
Microsoft Graph (2)
   Directory.Read.All  Application  Yes <green check> Granted for MyOrg
   User.Read           Delegated        <green check> Granted for MyOrg

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Как вы обнаружили, причина в том, что команда Azure CLI az ad app permissions list-grants просто перечисляет делегированные разрешения.

Если вы также хотите получить разрешения приложения, предоставленные субъекту службы, в настоящее время он не поддерживается модулем powershell Azure CLI и Az, необходимо использовать модуль powershell AzureAD.

Попробуйте скрипт, как показано ниже, он выводит имя API и соответствующее разрешение.

Примечание ObjectId в первой строке - это ObjectId субъекта вашей службы, а не приложение AD (регистрация приложения), его можно найти в Enterprise applications на портале (фильтр с All applications).

$apppermissions = Get-AzureADServiceAppRoleAssignedTo -ObjectId <ObjectId of your service principal>
foreach($item in $apppermissions){
    $item.ResourceDisplayName
    (Get-AzureADServicePrincipal -ObjectId $item.ResourceId).AppRoles | Where-Object {$_.Id -eq $item.Id}    
}

enter image description here

Разрешения при регистрации приложения на портале:

enter image description here

Вот аналогичная проблема , вы также можете посмотреть.

0 голосов
/ 05 июля 2019

Я наконец-то понял это, и это было менее чем очевидно.

az ad app permissions list-grants перечисляет разрешения oauth2. Другими словами, делегированные разрешения.

Разрешение Directory.Read.All моего Принципала обслуживания является приложением . Это означает, что это разрешение, которое мой Сервисный директор имеет самостоятельно, без использования токена аутентификации другого пользователя.

Я все еще пытаюсь выяснить, как составить список разрешений Приложения, используя новые команды az и / или новые модули Get-Az PowerShell. Если я узнаю, как я обновлю этот ответ.

...