我正在尝试使用 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(“对象 ID 为‘XXXX-XXXX-xxxxxx’的客户端‘XXXX-XXXX-xxxxxx’无权在范围‘/subscriptions/XXXX’上执行操作‘Microsoft.Authorization/roleAssignments/read’ -XXXX-xxxxxx'.",)
但是,尽管我是该服务主体的管理员,但我在运行 python 代码片段时遇到身份验证异常。
任何人都可以帮忙找到这个吗?
最佳答案
服务主体的管理员并不意味着您的服务主体是管理员:)。该消息清楚表明您的服务主体没有执行此操作的权限。
查看 Azure 中的内置角色: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles
为了对“Microsoft.Authorization/roleAssignments/read”执行操作,SP(不是您)需要是“所有者”或“读取者”或“API 管理服务贡献者” '等(查看列表中的模式以了解哪些角色授权此操作)。
然后,您可以使用门户向 SP 添加角色: https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal#assign-application-to-role
或 CLI
关于python - 在Azure中使用python获取角色分配列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50703772/