Estoy tratando de obtener la lista de usuarios que tienen acceso de propietario para una suscripción.

Intenté buscar python azure sdk. Pero no obtengo ninguna API que haga esta funcionalidad.

La API de la lista de suscripción está disponible, pero no proporciona detalles de los usuarios que tienen acceso a la suscripción en particular.

Probé el siguiente código

subscriptionClient = SubscriptionClient(credentials)
for subscription in subscriptionClient.subscriptions.list():
    print (subscription)

Cualquier ayuda sería apreciada

3
Marshall Kiruba 16 oct. 2018 a las 07:58

2 respuestas

La mejor respuesta

Este comando de 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

Devolverá a todos los usuarios de Azure AD con el rol de propietario de suscripción.

Intenté capturar paquetes de datos sobre este comando ps, y llamó a múltiples API de descanso para finalizar este proceso. Puede alojar este comando en los webjobs del servicio de aplicaciones de Azure, la función de Azure o la automatización de Azure y explorar un webhook para obtener la lista de usuarios cuando lo necesite. Espero eso ayude.

1
Stanley Gong 16 oct. 2018 a las 08:09

SDK de Azure Python

Si desea usar el SDK de Azure Python, debe usar clase AuthorizationManagementClient

Puede intentar obtener RoleAssignments para su suscripción en el ámbito de la suscripción.

Trabajo en estrecha colaboración con C #, por lo que no tengo el código Python a mano, pero intentaré actualizar con el código Python un poco más tarde.

ACTUALIZACIÓN

Aquí tienes un código de muestra. Espero que esto le dé lo suficiente para continuar.

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

Si desea llamar directamente a la API REST desde el código, utilice la API REST de Microsoft.Authorization / roleAssignments.

GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments?api-version=2018-01-01-preview

{scope} será subscriptions/<your subscriptionId> para obtener roleAssignments a nivel de suscripción.

Aquí hay un ejemplo de solicitud a esta API y respuesta.

Para encontrar todos los usuarios a los que se les ha asignado explícitamente el rol de "Propietario" en el nivel de suscripción

Solicitud:

GET https://management.azure.com/subscriptions/{my subscription GUID}/providers/Microsoft.Authorization/roleAssignments?api-version=2018-01-01-preview

Respuesta:

Observe que el ID de definición de función en respuesta es "8e3af657-a8ff-443c-a75c-2fe8c4bcb635". Esto corresponde al rol de propietario incorporado.

{"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"}]}

Una vez que obtenga la respuesta, contendrá ID de definiciones de roles en lugar de nombres exactos. Para todos los roles integrados, puede saber qué rol es de antemano visitando este documentación de Microsoft. P.ej. El ID de la función de propietario es "8e3af657-a8ff-443c-a75c-2fe8c4bcb635"

1
Rohit Saigal 16 oct. 2018 a las 08:40