首页 > 解决方案 > 提供 Azure 托管标识 Directory.Read.All

问题描述

我想通过 Directory.Read.All 授予对图形的 Azure 托管标识访问权限。我可以通过以下博客使其工作:https ://blog.bredvid.no/accessing-apis-using-azure-managed-service-identity-ff7802b887d?gi=f2307752395a但是:

我试过...

graphId=$(az ad sp list --filter "appId eq '00000003-0000-0000-c000-000000000000'" --query "[0].objectId")
roleId=$(az ad sp list --filter "appId eq '00000003-0000-0000-c000-000000000000'" --query "[0].appRoles[?value=='Directory.Read.All' && contains(allowedMemberTypes, 'Application')] | [0].id")
az role assignment create --role $roleId --assignee-object-id fa22d971-c442-41f2-add1-77e636f80d31 --scope $graphId --assignee-principal-type MSI

但这会导致......“该请求没有订阅或有效的租户级资源提供者。”

我在想这意味着我没有正确的范围。是否可以在 az-cli 下执行此任务?

标签: azureazure-active-directory

解决方案


当前无法将服务主体 (MSI) 分配给应用程序角色,此处的所有命令。

是将az role assignment create用户/服务主体/组作为 RBAC 角色添加到 azure 资源,而不是您想要的,它等于此链接中的步骤。


此外,如果您因为跨平台问题而想使用 azure CLI 而不是 powershell。你可以试试powershell core,它是跨平台的,参考这个链接在里面安装AzureAD.Standard.Preview模块,然后你就可以使用AzureAD命令了。


推荐阅读