我在尝试执行以下操作时遇到授权错误:
[错误]
'error':'AuthorizationFailed','message':“对象ID为”“的客户端”"无权在作用域“/subscriptions/{subscriptionID}”上执行操作“Microsoft.Advisor/recommendations/action”,或者作用域无效。如果最近授予了访问权限,请刷新您的凭据。"}}
[代码]
Get_Token_Url = "https://login.microsoftonline.com/%7BtenantID%7D/oauth2/token"
payload = {
"client_id": "**",
"client_secret":"**",
"grant_type": "client_credentials",
"resource": "https://management.azure.com/"
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.post(Get_Token_Url, headers=headers, data=payload)
df = json.loads(response.content)
Token = df\['access_token'\]
url = "https://management.azure.com/subscriptions/%7BsubscriptionID%7D/providers/Microsoft.Advisor/recommendations?api-version=2023-01-01"
headers = {
'Authorization': 'bearer ' + Token,
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=payload)
df1 = json.loads(response.content)
df1
请告诉我如何通过API获取Azure顾问建议,这些建议最终将用于Power BI报告。
1条答案
按热度按时间iyzzxitl1#
如果服务主体没有执行操作所需的权限或角色,则通常会发生此错误。
我注册了一个名为
SriOctSP
的Azure AD应用程序,并在下面添加了API权限:当我在我的环境中运行你的代码时,我也得到了相同的错误,因为服务主体在订阅下没有任何角色:
回复:
为了解决错误,我给订阅下的服务主体分配了**
Reader
**角色,如下所示:当我将角色分配给服务主体后,用
get
请求运行下面修改后的代码时,成功得到响应,如下所示:回复:
参考:Permissions in Azure Advisor | Microsoft