我正在尝试获取具有所有者访问订阅权限的用户列表。
我尝试检查python azure sdk。但是没有获得任何具有此功能的api。
订阅列表api可用,但未提供有权访问特定订阅的用户的详细信息。
我尝试了以下代码
subscriptionClient = SubscriptionClient(credentials)
for subscription in subscriptionClient.subscriptions.list():
print (subscription)
任何帮助将不胜感激
答案 0 :(得分:1)
如果要使用Azure Python SDK,则应使用AuthorizationManagementClient class
您可以尝试在订阅本身的范围内获取订阅的RoleAssignments。
我与C#紧密合作,因此没有方便的Python代码,但是稍后会尝试使用Python代码进行更新。
更新
这是示例代码。我希望这能给您足够的机会。
from azure.mgmt.authorization import AuthorizationManagementClient
authorizationClient = AuthorizationManagementClient(credentials, '<your subscription guid>')
roles = authorizationClient.role_assignments.list()
for role in roles:
print(role)
如果要直接从代码中调用REST API,请使用Microsoft.Authorization / roleAssignments REST API。
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments?api-version=2018-01-01-preview
{scope}将是subscriptions/<your subscriptionId>
,以在订阅级别获取roleAssignments。
这是对此API和响应的示例请求。
查找在订阅级别已明确分配了“所有者”角色的所有用户
请求:
GET https://management.azure.com/subscriptions/{my subscription GUID}/providers/Microsoft.Authorization/roleAssignments?api-version=2018-01-01-preview
响应:
请注意,相应的角色定义ID为“ 8e3af657-a8ff-443c-a75c-2fe8c4bcb635”。这对应于内置的所有者角色。
{"value":[{"properties":{"roleDefinitionId":"/subscriptions/{my Subscription GUID}/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635","principalId":"{some user GUID}","principalType":"User","scope":"/subscriptions/{my Subscription GUID}","createdOn":"2018-10-03T05:12:52.7213301Z","updatedOn":"2018-10-03T05:12:52.7213301Z","createdBy":"GUID","updatedBy":"GUID"},"id":"/subscriptions/{my Subscription GUID}/providers/Microsoft.Authorization/roleAssignments/83eee76b-4a0d-4f61-8c62-409501e95457","type":"Microsoft.Authorization/roleAssignments","name":"83eee76b-4a0d-4f61-8c62-409501e95457"}]}
获得响应后,它将包含角色定义ID,而不是确切的名称。对于所有内置角色,您可以通过访问此Microsoft documentation来知道它是哪个角色。例如。所有者角色的ID为“ 8e3af657-a8ff-443c-a75c-2fe8c4bcb635”
答案 1 :(得分:1)
此PowerShell命令:
(Get-AzureRmRoleAssignment -RoleDefinitionId "8e3af657-a8ff-443c-a75c-2fe8c4bcb635" -Scope "/subscriptions/<your azure sub ID>" | where {($_.ObjectType -EQ "user") -and ($_.Scope -EQ "/subscriptions/<your azure sub ID>") } ) | select DisplayName,SignInName
将返回所有具有订阅所有者角色的Azure AD用户。
我试图捕获有关此ps命令的数据包,并且它调用了多个rest API来完成此过程。 您可以在Azure应用服务Webjobs,Azure函数或Azure自动化上托管此命令,并在需要时浏览Webhook以获得用户列表。 希望对您有所帮助。