【问题标题】:How to determine which API Permissions are necessary to run a particular Azure PowerShell command?如何确定运行特定 Azure PowerShell 命令所需的 API 权限?
【发布时间】:2019-11-18 06:28:55
【问题描述】:

我有一个用于自动化的服务主体。它在我们的 Azure Active Directory 的 Microsoft Graph 中具有 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 azure-active-directory azure-powershell az


【解决方案1】:

您需要提供 Azure AD Graph APIDirectory.Read.All(应用程序权限)而不是 Microsoft Graph API。还要确保service principal有sql server的权限(比如service principal是订阅的Owner或者sql server),这样就可以正常工作了。

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

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

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

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

【讨论】:

  • 谢谢,乔伊。这实际上是我的问题。当我注意到有 API 调用转到 graph.windows.net 而不是 graph.windows.com 并且必须查找差异时,我自己发现了这一点。一旦我授予了正确的权限,一切就开始工作了。
  • 很好的答案,但您在哪里可以找到适用于不同操作的权限?
猜你喜欢
  • 1970-01-01
  • 2022-11-25
  • 2020-11-27
  • 2022-01-19
  • 2018-06-01
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多