gpt4 book ai didi

azure - Get-AzureRmRoleAssignment - 拒绝访问指定的 API 版本

转载 作者:行者123 更新时间:2023-12-03 00:13:41 25 4
gpt4 key购买 nike

更新:我发现该问题与 IncludeClassicAdministrators 参数无关 - 如果没有该参数,问题仍然会发生。我已相应更新了问题。

背景
我正在编写一个 Azure 自动化脚本来监视谁有权访问我的订阅。我正在调用 Get-AzureRmRoleAssignment 来获取管理员列表。当我在本地运行脚本并以我自己的身份进行身份验证时,它工作正常。当我在自动化中运行它时,我使用服务主体进行身份验证,但由于拒绝访问指定的 API 版本而失败。

详情
我启用了调试输出,可以看到 Get-AzureRmRoleAssignment 进行了 3 个 API 调用:

GET https://management.azure.com/subscriptions/xxx/providers/Microsoft.Authorization
/roleAssignments?api-version=2015-07-01

GET https://management.azure.com//subscriptions/xxx/providers/Microsoft.Authorization
/roleDefinitions?$filter=atScopeAndBelow()&api-version=2015-07-01

POST https://graph.windows.net/xxx/getObjectsByObjectIds?api-version=1.42-previewInternal
{
"objectIds": [
"282e2807-cbd9-43bb-89c2-edc3122fcc04",
"b3a38989-fcf1-4569-b1a6-444e1cd583b6",
"6b0b69bb-49d8-48a6-a740-8c354eb575ea",
"6b0b69bb-49d8-48a6-a740-8c354eb575ea",
"90c78c97-1b3b-444f-a3bb-9fb9dfdb3455",
"7db061f0-361d-4148-a5ef-0a37b138f37c",
"844d81c7-7027-44c3-899d-21e90a7e599d",
"6b0b69bb-49d8-48a6-a740-8c354eb575ea"
],
"includeDirectoryObjectReferences": true
}

在 Azure 自动化中,最后一次调用(获取第一次调用返回的用户对象 ID 的用户详细信息)失败了:

Status Code:
Forbidden

Headers:
ocp-aad-diagnostics-server-name: CL43Rj9/Eg1H2aYXpRQBM3J4ssdQAWJx32NV+f61Yn4=
request-id : 0a184c82-1dd0-4f29-9192-aa746dff470a
client-request-id : e94a29bf-9846-427e-b958-8a2f9d3a32e3
x-ms-dirapi-data-contract-version: 1.42-previewInternal
ocp-aad-session-key : inmY52ItGZojOuCWsXYSgmNBsJZIQXlg8-l0FLzrvOnftsGwyOfzjmNtXMfLiXQqOp32Pk1n1GjvnvbJdT0Pak6d
7NwIFNIy0tUBep-rTRH__HFt_Kb_2ffSgOPlJSe-.ms4g4jKJV0H4VNYwMDPJljQFyNDjrw42XxrOKmkPXHU
Strict-Transport-Security : max-age=31536000; includeSubDomains
Access-Control-Allow-Origin : *
Duration : 1323869
Cache-Control : private
Server : Microsoft-IIS/8.5
X-AspNet-Version : 4.0.30319
X-Powered-By : ASP.NET,ASP.NET
Date : Wed, 24 Feb 2016 02:45:55 GMT

Body:
{
"odata.error": {
"code": "Authentication_Unauthorized",
"message": {
"lang": "en",
"value": "Access denied to the specified API version."
}
}
}

我在本地运行时看到完全相同的调用,所以我不认为这是版本问题。 (我正在使用库中的 MSOnline 模块。)

我认为我需要向我的服务主体授予一些额外的权限,但不确定是哪些权限。我已添加以下所有权限,但仍然收到相同的错误:

Windows Azure Active Directory
应用程序权限

  • 读/写目录数据
  • 读取目录数据

委托(delegate)权限

  • 读取目录数据
  • 阅读所有用户的完整个人资料
  • 阅读所有用户的基本资料

Windows Azure 服务管理 API
委派权限

  • 以组织用户身份访问 Azure 服务管理

Microsoft Graph
应用程序权限

  • 读取目录数据

最佳答案

这是使用 cmdlet 在通过服务主体进行身份验证时调用 Graph API 时的一个已知问题。

https://github.com/Azure/azure-powershell/issues/1896

关于azure - Get-AzureRmRoleAssignment - 拒绝访问指定的 API 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35592847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com