Asignación de roles de administrador personalizados mediante Microsoft Graph API en Microsoft Entra ID
Puede automatizar la asignación de roles a las cuentas de usuario con Microsoft Graph API. En este artículo se tratan las operaciones POST, GET y DELETE en roleAssignments.
Requisitos previos
- Una licencia de Microsoft Entra ID P1 o P2
- Administrador de roles con privilegios
- Consentimiento del administrador al usar el Probador de Graph de Microsoft Graph API
Para obtener más información, consulte Requisitos previos para usar PowerShell o Probador de Graph.
Operaciones POST en RoleAssignment
Use Create unifiedRoleAssignment API para asignar roles.
Ejemplo 1: Creación de una asignación de roles entre un usuario y una definición de roles
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Content-type: application/json
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "194ae4cb-b126-40b2-bd5b-6091b380977d",
"directoryScopeId": "/" // Don't use "resourceScope" attribute in Azure AD role assignments. It will be deprecated soon.
}
Response
HTTP/1.1 201 Created
Ejemplo 2: Creación de una asignación de roles donde la entidad de seguridad o la definición de roles no existe.
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-2222222222229",
"roleDefinitionId": "194ae4cb-b126-40b2-bd5b-6091b380977d",
"directoryScopeId": "/" //Don't use "resourceScope" attribute in Azure AD role assignments. It will be deprecated soon.
}
Response
HTTP/1.1 404 Not Found
Ejemplo 3: Creación de una asignación de roles en un ámbito de recurso único.
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-2222222222229",
"roleDefinitionId": "00000000-0000-0000-0000-000000000000", //role template ID of a custom role
"directoryScopeId": "/13ff0c50-18e7-4071-8b52-a6f08e17c8cc" //object ID of an application
}
Response
HTTP/1.1 201 Created
Ejemplo 4: Creación de una asignación de roles con ámbito de unidad administrativa en una definición de roles integrada que no se admite.
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "29232cdf-9323-42fd-ade2-1d097af3e4de", //role template ID of Exchange Administrator
"directoryScopeId": "/administrativeUnits/13ff0c50-18e7-4071-8b52-a6f08e17c8cc" //object ID of an administrative unit
}
Response
HTTP/1.1 400 Bad Request
{
"odata.error":
{
"code":"Request_BadRequest",
"message":
{
"message":"The given built-in role is not supported to be assigned to a single resource scope."
}
}
}
Solo se permite un subconjunto de roles integrados para el ámbito de la unidad administrativa. Consulte esta documentación para ver la lista de roles integrados que se admiten en una unidad administrativa.
Operaciones GET en RoleAssignment
Utilice la List unifiedRoleAssignments API para obtener la asignación de roles.
Ejemplo 5: Obtención de asignaciones de roles para una entidad de seguridad determinada.
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=principalId+eq+'<object-id-of-principal>'
Respuesta
HTTP/1.1 200 OK
{
"value":[
{
"id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
"directoryScopeId": "/"
} ,
{
"id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
"directoryScopeId": "/"
}
]
}
Ejemplo 6: Obtención de asignaciones de roles para una definición de rol determinada
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=roleDefinitionId+eq+'<object-id-or-template-id-of-role-definition>'
Respuesta
HTTP/1.1 200 OK
{
"value":[
{
"id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
"directoryScopeId": "/"
}
]
}
Ejemplo 7: Obtención de una asignación de roles por identificador
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Respuesta
HTTP/1.1 200 OK
{
"id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
"directoryScopeId": "/"
}
Ejemplo 8: Obtención de asignaciones de roles para un ámbito determinado.
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=directoryScopeId+eq+'/d23998b1-8853-4c87-b95f-be97d6c6b610'
Response
HTTP/1.1 200 OK
{
"value":[
{
"id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
"directoryScopeId": "/d23998b1-8853-4c87-b95f-be97d6c6b610"
} ,
{
"id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "00000000-0000-0000-0000-000000000000",
"directoryScopeId": "/d23998b1-8853-4c87-b95f-be97d6c6b610"
}
]
}
Operaciones DELETE en RoleAssignment
Use Delete unifiedRoleAssignment API para eliminar la asignación de roles.
Ejemplo 9: Eliminación de una asignación de roles entre un usuario y una definición de roles.
DELETE https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Response
HTTP/1.1 204 No Content
Ejemplo 10: Eliminación de una asignación de roles que ya no existe.
DELETE https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Response
HTTP/1.1 404 Not Found
Ejemplo 11: Eliminación de una asignación de roles entre la definición de roles propia y del administrador global.
DELETE https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Response
HTTP/1.1 400 Bad Request
{
"odata.error":
{
"code":"Request_BadRequest",
"message":
{
"lang":"en",
"value":"Removing self from Global Administrator built-in role is not allowed"},
"values":null
}
}
}
Impedimos que los usuarios eliminen su propio rol de administrador global para evitar una situación donde un inquilino no tenga ningún administrador global. Se permite quitar otros roles asignados al propio.
Pasos siguientes
- No dude en hacernos llegar sus comentarios en el foro de roles administrativos de Microsoft Entra.
- Para más información sobre los permisos de rol, consulte Roles integrados de Microsoft Entra.
- Para conocer los permisos predeterminados de usuario, consulte Comparación de los permisos predeterminados de usuario miembro e invitado.