以编程方式从Azure订阅中检索所有所有者

时间:2018-09-28 21:51:53

标签: c# azure azure-management-api

我想以编程方式检索azure订阅的所有所有者。 我不想使用Powershell。

我知道我们可以使用Azure Management REST API来实现此目的,但是找不到确切的API参考来从azure订阅中检索所有者列表。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

REST API

您应该能够使用Microsoft.Authorization / roleAssignments REST API来获取该信息。

GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments?api-version=2015-07-01&$filter={filter}

在您的情况下,由于您正在寻找“订阅”级别的所有者,因此范围为{scope}将是subscriptions / {subscriptionId}

也是

  • 获得响应后,它将包含角色定义ID,而不是确切的名称。对于所有内置角色,您可以通过访问此Microsoft documentation来知道它是哪个角色。例如。 Owner role的ID为“ 8e3af657-a8ff-443c-a75c-2fe8c4bcb635”

  • 要找到所有可能的角色定义的ID作为响应的一部分,可以使用Role Definitions - List REST API

有用的文档

通读此Microsoft文档,其中提供了有关如何使用RBAC和REST API列出,授予访问权限或删除访问权限的详细信息:Manage Access Using RBAC and REST API

更新(示例和API也可用于经典管理员)

我使用试用订阅运行了一些示例。这是请求和响应。

  1. 查找在订阅级别已明确分配了“所有者”角色的所有用户

    请求:

    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"}]}
  1. 查找成为经典管理员的所有所有者(这与注册订阅但未使用Azure门户RBAC明确分配所有者角色的帐户有关) >

    请求:注意URL末尾的classicAdministrators,并且API版本是旧版本的2015-06-01

    获取https://management.azure.com/subscriptions/6f070baf-bbba-47a5-bbe4-a0450017cdf5/providers/Microsoft.Authorization/classicAdministrators?api-version=2015-06-01

    响应:通知角色是ServiceAdministrator; AccountAdministrator

    {"value":[{"properties":{"emailAddress":"xxxx@xxxx.com","role":"ServiceAdministrator;AccountAdministrator"},"id":"/subscriptions/{mysubscriptionguid}/providers/Microsoft.Authorization/classicAdministrators/00030000B1F89CF0","type":"Microsoft.Authorization/classicAdministrators","name":"00030000B1F89CF0"}]}