如何确定运行特定 Azure PowerShell 命令所需的 API 权限?

How to determine which API Permissions are necessary to run a particular Azure PowerShell command?

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

它不能运行 Set-AzSqlServerActiveDirectoryAdministrator 命令。我得到的错误是:

1
2
3
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。我也无法让此命令与 az cli 一起使用。我对使用 az 的方法持开放态度,可以得到这个答案。


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

如果要将服务主体添加为订阅或 sql server 的角色,请导航到门户中的订阅或 sql server -> Access control (IAM) -> Add -> Add role assignment -> 搜索您的服务主体的名称并将其添加为角色(例如 Owner)-> Save,此处有更多详细信息。

enter

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

enter