Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python获取拥有azure订阅所有者访问权限的用户列表_Python_Azure_Azure Active Directory_Azure Automation_Azure Sdk Python - Fatal编程技术网

如何使用python获取拥有azure订阅所有者访问权限的用户列表

如何使用python获取拥有azure订阅所有者访问权限的用户列表,python,azure,azure-active-directory,azure-automation,azure-sdk-python,Python,Azure,Azure Active Directory,Azure Automation,Azure Sdk Python,我正在尝试获取拥有订阅所有者访问权限的用户列表 我尝试检查python azure sdk。但是我没有得到任何api来实现这个功能 订阅列表api可用,但不提供有权访问特定订阅的用户的详细信息 我尝试了下面的代码 subscriptionClient = SubscriptionClient(credentials) for subscription in subscriptionClient.subscriptions.list(): print (subscription) 任何帮

我正在尝试获取拥有订阅所有者访问权限的用户列表

我尝试检查python azure sdk。但是我没有得到任何api来实现这个功能

订阅列表api可用,但不提供有权访问特定订阅的用户的详细信息

我尝试了下面的代码

subscriptionClient = SubscriptionClient(credentials)
for subscription in subscriptionClient.subscriptions.list():
    print (subscription)
任何帮助都将不胜感激

Azure Python SDK 如果您希望使用Azure Python SDK,那么您应该使用

您可以尝试在订阅本身的范围内获取订阅的角色分配

我与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)
{scope}将是
订阅/
以获取订阅级别的角色分配

下面是对该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,而不是确切的名称。对于所有内置角色,您可以通过访问此链接来了解其当前的角色。例如,所有者角色的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
(获取AzureRmRoleAssignment-RoleDefinitionId“8e3af657-a8ff-443c-a75c-2fe8c4bcb635”-范围“/订阅/”,其中{($.ObjectType-EQ“用户”)-和($.Scope-EQ”/subscriptions/);选择显示名称,表示名称
将返回具有订阅所有者角色的所有Azure AD用户

我试图捕获关于这个ps命令的数据包,它调用了多个restapi来完成这个过程。 您可以在Azure应用程序服务webjobs、Azure function或Azure automation上承载此命令,并在需要时浏览webhook以获取用户列表。
希望能有所帮助。

试试这个rest api:谢谢,这很有效。但当我试图在webapps中运行此命令时,它会抛出类似“command not found”的错误。我尝试通过扩展添加,在webapps中安装azure powershell。但是azure powershell在扩展中不可用。如何在webapps中使用该命令。Azure webapps有一个名为Azure webjobs的内部服务,您可以使用它按计划或通过触发器运行powershell scrips。有关详细信息,请参阅:谢谢您的回复。但问题是我无法在webapps中运行azure powershell命令。这是我获取[10/19/2018 03:08:04>5198ab:ERR]Connect-AzurerAccount时出现的错误:术语“Connect-AzurerAccount”未被识别我检查了webapp扩展,但未获取任何。再次感谢您的帮助。欢迎!!我也犯了同样的错误。使用Add AzurerAccount将解决此问题:)如果您是Microsoft合作伙伴,我会找到一个免费渠道来解决azure查询:。他们支持在线聊天和电子邮件。
(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