首页 > 解决方案 > 如何确定运行特定 Azure PowerShell 命令所需的 API 权限?

问题描述

我有一个用于自动化的服务主体。它Directory.Read.All在 Microsoft Graph 中对我们的 Azure Active Directory 具有权限。

它无法运行该Set-AzSqlServerActiveDirectoryAdministrator命令。我得到的错误是:

Cannot find the Azure Active Directory object 'My-AD-Group'.
Please make sure that the user or group you are authorizing is
registered in the current subscription's Azure Active directory.

如果我运行与自己相同的命令,它运行得很好。

显然,我的服务负责人需要的不仅仅是Directory.Read.All权限。然而,我找不到任何文档准确列出我的服务主体成功运行此命令所需的 API 权限。

有谁知道我如何确切地发现运行涉及访问 Azure Active Directory 的特定 Azure PowerShell 命令需要哪些 API 权限?

顺便说一句,我不依赖于 PowerShell。我也无法让这个命令与azcli 一起使用。我对使用az可以得到这个答案的方法持开放态度。

标签: azureazure-active-directoryazure-powershellaz

解决方案


您需要授予Azure AD Graph API而不是Microsoft Graph APIDirectory.Read.All的(应用程序权限)。还要确保服务主体具有 sql server 的权限(例如,服务主体是订阅或 sql server 的),然后它就可以正常工作。Owner

如果要将服务主体添加为订阅或 sql server 的角色,请导航到门户中的订阅或 sql server -> Access control (IAM)-> Add-> Add role assignment-> 使用名称搜索您的服务主体并将其添加为角色(例如Owner)-> Save,更多细节在这里

在此处输入图像描述

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -DisplayName "group1" -ObjectId "64d1b8xxxxx4ffbd"

在此处输入图像描述

有谁知道我如何确切地发现运行涉及访问 Azure Active Directory 的特定 Azure PowerShell 命令需要哪些 API 权限?

Azure PowerShell 本质上调用不同的 API,要获取 API 的权限,您可以通过Fiddler捕获请求,然后查看官方 API 文档以获取权限。


推荐阅读