Какие разрешения необходимы в Azure, чтобы предоставить доступ к управляемому удостоверению для вызова пользовательского API - PullRequest
0 голосов
/ 05 августа 2020

Я хочу назначить роль Things.Reead.All, созданную при регистрации моего приложения, управляемому удостоверению. Идентификатор объекта SP для регистрации приложения - 8055e1eb-0000-0000-9b77-00000000000 Определение роли выглядит следующим образом:

"appRoles": [
        {
            "allowedMemberTypes": [
                "Application"
            ],
            "description": "Allow the application to read all things as itself.",
            "displayName": "Read all things",
            "id": "86a914fa-a862-4962-9975-000000000000",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "value": "Things.Read.All"
        }

Единственное, что известно о назначенном системе управляемом удостоверении, - это его идентификатор объекта, например

aad300-0872-0000-811d-00000000000

, и я хочу разрешить ему вызывать приложение 8055e1eb-0000-0000-9b77-00000000000, которое ожидает увидеть роль в токене доступа. Я знаю, что для этого мне нужно использовать следующий api.

https://graph.microsoft.com/v1.0/servicePrincipals/8055e1eb-0000-0000-9b77-00000000000/appRoleAssignedTo
{
  "principalId": "aad300-0872-0000-811d-00000000000",
  "resourceId": "8055e1eb-0000-0000-9b77-00000000000",
  "appRoleId": "86a914fa-a862-4962-9975-000000000000"
}

У меня широкий, но контролируемый доступ к моему клиенту. Когда я получаю токен от

az account get-access-token --resource https://graph.microsoft.com

и вызываю указанное выше, я получаю

    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",

Мне нужно выяснить, какие именно привилегии необходимы для выполнения этого вызова.

1 Ответ

1 голос
/ 05 августа 2020

Поскольку вы не ответили на мой комментарий, я могу просто предоставить вам свое собственное решение, которое использовало принципала службы для входа в azure cli, это работает для меня.

Пожалуйста, выполните следующие действия.

1. Создайте новую регистрацию приложения в azure ad , затем получите значения для входа и создайте новый секрет приложения .

2. Перейдите к API permissions приложения, добавьте разрешение приложения (не делегированное разрешение) Directory.ReadWrite.All из Microsoft Graph, не забудьте нажать Grant admin consent for xxx кнопку, наконец.

Примечание: Из do c разрешения AppRoleAssignment.ReadWrite.All достаточно, но, согласно моему тесту, это не сработает, не конечно, если это ошибка, я декодировал токен, токен имеет разрешение AppRoleAssignment.ReadWrite.All.

enter image description here

enter image description here

3.In azure cli, run the commands below to get the token.

az account clear
az login --service-principal --allow-no-subscriptions --username '' --password '' --tenant ''
az account get-access-token --resource https://graph.microsoft.com

4.I test the token to call the api - Grant an appRoleAssignment for a service principal, чтобы предоставить роль приложения для назначенный системой идентификатор моего функционального приложения, он работает нормально.

enter image description here

Check it in the portal:

введите описание изображения здесь

...