我试图通过使用python在订阅中获得azure角色分配。通过以下代码
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.authorization import AuthorizationManagementClient
tenant_id = 'tenant_guid'
application_id = 'application_guid'
application_secret = 'application_secret'
cred = ServicePrincipalCredentials(client_id=application_id, secret=application_secret, tenant=tenant_id)
client = AuthorizationManagementClient(cred, 'subscription_guid')
roles = client.role_assignments.list()
for role in roles:
print(role)
例外:CloudError("客户' XXXX-XXXX-xxxxxx'对象ID' XXXX-XXXX-xxxxxx'无权执行操作' ; Microsoft.Authorization / roleAssignments / read' over scope' / subscriptions / XXXX-XXXX-xxxxxx'。",)
但是,我在运行python代码片段时遇到身份验证异常,尽管我是该服务主体的管理员。
任何人都可以帮忙找到这个。
答案 0 :(得分:1)
服务主管的管理员并不意味着您的服务主管是管理员:)。消息很清楚,您的服务主体没有执行此操作的权限。
查看Azure中的内置角色: https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles
为了对Microsoft.Authorization / roleAssignments / read'进行操作,SP(不是您)需要是'所有者'或者'读者'或者&#API; API管理服务贡献者 '等(查看列表中的模式以了解授权此操作的角色)。
然后,您可以使用门户网站向SP添加角色: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal#assign-application-to-role
或CLI