如何使用 python 获取拥有 Azure 订阅所有者访问权限的用户列表
How to get list of users who are having owner access for a azure subscription using python
我正在尝试获取拥有订阅所有者访问权限的用户列表。
我尝试检查 python azure sdk。但是我没有得到任何执行此功能的 api。
订阅列表 api 可用,但未提供有权访问特定订阅的用户的详细信息。
我尝试了下面的代码
subscriptionClient = SubscriptionClient(credentials)
for subscription in subscriptionClient.subscriptions.list():
print (subscription)
如有任何帮助,我们将不胜感激
Azure Python SDK
如果您希望使用 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)
休息 API
如果您想从代码中直接调用 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>
在订阅级别获取角色分配。
这是对此 API 和响应的示例请求。
查找已在订阅级别
明确分配"Owner"角色的所有用户
要求:
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”
此 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
将 return 所有具有订阅所有者角色的 Azure AD 用户。
我已经尝试捕获关于这个ps命令的数据包,它调用了多个rest API来完成这个过程。
您可以在 Azure App 服务 webjobs、Azure 函数或 Azure 自动化上托管此命令,并在需要时探索 webhook 以获取用户列表。
希望对你有帮助ps.
我正在尝试获取拥有订阅所有者访问权限的用户列表。
我尝试检查 python azure sdk。但是我没有得到任何执行此功能的 api。
订阅列表 api 可用,但未提供有权访问特定订阅的用户的详细信息。
我尝试了下面的代码
subscriptionClient = SubscriptionClient(credentials)
for subscription in subscriptionClient.subscriptions.list():
print (subscription)
如有任何帮助,我们将不胜感激
Azure Python SDK
如果您希望使用 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)
休息 API
如果您想从代码中直接调用 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>
在订阅级别获取角色分配。
这是对此 API 和响应的示例请求。
查找已在订阅级别
明确分配"Owner"角色的所有用户要求:
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”
此 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
将 return 所有具有订阅所有者角色的 Azure AD 用户。
我已经尝试捕获关于这个ps命令的数据包,它调用了多个rest API来完成这个过程。 您可以在 Azure App 服务 webjobs、Azure 函数或 Azure 自动化上托管此命令,并在需要时探索 webhook 以获取用户列表。 希望对你有帮助ps.