Azure 中需要什么权限才能授予对托管标识的访问权限以调用自定义 api

What permissions are needed in Azure to grant access to a managed identity for calling a custom api

我想将在我的应用程序注册中创建的角色 Things.Reead.All 分配给托管身份。 应用注册SP对象id为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"
        }

关于系统分配的托管身份唯一已知的是它的对象 ID,比如说

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.",

我需要弄清楚的是进行此调用所需的确切权限。

因为你没有回答我的评论,我可以给你我自己的解决方案,它使用服务主体登录 azure cli,它对我有用。

请按照以下步骤操作。

1.Create a new App Registration in azure ad, then get values for signing in and create a new application secret.

2.Navigate到App的API permissions,添加应用权限(非Delegated权限)Directory.ReadWrite.All of Microsoft Graph,别忘了最后点击Grant admin consent for xxx按钮。

注意:doc开始,AppRoleAssignment.ReadWrite.All权限就够了,但我测试不行,不知道是不是一个错误,我已经解码了令牌,令牌具有 AppRoleAssignment.ReadWrite.All 权限。

3.In azure cli,运行 下面的命令获取令牌。

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

4.I 测试令牌以调用 api - Grant an appRoleAssignment for a service principal 为我的功能应用程序的 system-assigned 身份授予应用程序角色,它工作正常。

在门户中查看: