如何确定 运行 特定 Azure PowerShell 命令需要哪些 API 权限?

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

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

它不能运行 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。我也无法让此命令与 az cli 一起使用。我对使用 az 的方法持开放态度,这会让我得到这个答案。

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

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

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

Does anyone know how I can discover exactly what API permissions would be required to run a particular Azure PowerShell command that involves accessing Azure Active Directory?

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