Uso de Azure PIM para administrar el acceso apto con la API REST
Azure Privileged Identity Management (PIM) le permite limitar el acceso de administrador permanente a roles con privilegios, detectar quién tiene acceso y revisar el acceso con privilegios. En este artículo se describen las formas comunes de administrar el acceso mediante la API REST.
Enumeración de asignaciones aptas
Para enumerar las asignaciones de roles aptas (acceso de lista), puede usar una de las instancias de programación de idoneidad de roles: lista para las programaciones de ámbito o elegibilidad de roles: lista para las API REST de ámbito. Para mejorar los resultados, especifique un ámbito y un filtro opcional. Para llamar a la API, debe tener acceso a la operación Microsoft.Authorization/roleAssignments/read
en el ámbito especificado. A todos los roles integrados se les concede acceso a esta operación.
Importante
La diferencia entre las programaciones y las instancias de programación es que, aunque las instancias de programación solo incluyen asignaciones que están activas en el momento actual, las programaciones también incluyen asignaciones que se activarán en el futuro.
Empiece con la solicitud siguiente:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleInstances?api-version=2020-10-01&$filter={filter}
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilitySchedules?api-version=2020-10-01&$filter={filter}
En el identificador URI, reemplace {scope} por el ámbito cuya lista de asignaciones de roles quiere obtener.
Ámbito Tipo providers/Microsoft.Management/managementGroups/{mg-name}
Grupo de administración subscriptions/{subscriptionId}
Subscription subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
Resource Reemplace {filter} por la condición que quiere aplicar para filtrar la lista de asignación de roles.
Filter Descripción $filter=atScope()
Lista de las asignaciones de roles únicamente para el ámbito especificado, sin incluir las asignaciones de roles en ámbitos secundarios. $filter=principalId%20eq%20'{objectId}'
Lista de las asignaciones de roles para un usuario, un grupo o una entidad de servicio determinados. $filter=roleDefinitionId%20eq%20'{roleDefinitionId}'
Enumera las asignaciones de roles para una definición de rol especificada. $filter=assignedTo('{objectId}')
Lista de las asignaciones de roles para un usuario determinado, incluidas las que se heredaron de otros grupos. $filter=asTarget()
Enumere las asignaciones de roles para el usuario o la entidad de servicio actual, incluidas las heredadas de los grupos. $filter=assignedTo('{objectId}')+and+atScope()
Enumere las asignaciones de roles para un usuario especificado, incluidas las heredadas de grupos solo para el ámbito especificado, no incluidas las asignaciones de roles en subámbitas.
Concesión de una asignación apta
Para crear una asignación de roles apta (conceder acceso), use la API de programación de idoneidad de roles : cree la API REST y especifique la entidad de seguridad, la definición de roles, la programación, requestType = AdminAssign
y el ámbito. Para llamar a esta API, debe tener acceso a la Microsoft.Authorization/roleAssignments/write
operación. Entre los roles integrados, solo se concede acceso a esta operación a Propietario y Administrador de acceso de usuario.
Use la API de REST Definiciones de roles - Lista o consulte Roles integrados para obtener el identificador de la definición de roles que quiere asignar.
Use una herramienta de GUID para generar un identificador único que se use para el identificador de asignación de roles. El identificador tiene el formato:
00000000-0000-0000-0000-000000000000
Empiece con la solicitud y el cuerpo siguientes:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminAssign", "ScheduleInfo": { "StartDateTime": "2020-09-09T21:31:27.91Z", "Expiration": { "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration "EndDateTime": null, "Duration": "P365D" // Use ISO 8601 format } } } }
En el identificador URI, reemplace {scope} por el ámbito de la asignación de roles.
Ámbito Tipo providers/Microsoft.Management/managementGroups/{mg-name}
Grupo de administración subscriptions/{subscriptionId}
Subscription subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
Resource Reemplace {roleEligibilityScheduleRequestName} por el identificador GUID de la asignación de roles.
En el cuerpo de la solicitud, reemplace {subscriptionId} por el identificador de la suscripción.
Reemplace {roleDefinitionId} por el identificador de la definición de roles.
Reemplace {principalId} por el identificador de objeto del usuario, grupo o entidad de servicio al que se asignará el rol.
Eliminación de la asignación apta
Para quitar una asignación de roles apta (quitar el acceso), use la API de programación de idoneidad de roles: crear una API REST para crear una nueva solicitud para revocar la asignación y especificar la entidad de seguridad, la definición de roles, requestType = AdminRemove
y el ámbito. Para llamar a esta API, debe tener acceso a la operación Microsoft.Authorization/roleAssignments/write
. Entre los roles integrados, solo se concede acceso a esta operación a Propietario y Administrador de acceso de usuario.
Use una herramienta de GUID para generar un identificador único que se use para el identificador de asignación de roles. El identificador tiene el formato:
00000000-0000-0000-0000-000000000000
Empiece con la solicitud siguiente:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminRemove" } }
En el identificador URI, reemplace {scope} por el ámbito para eliminar la asignación de roles.
Ámbito Tipo providers/Microsoft.Management/managementGroups/{mg-name}
Grupo de administración subscriptions/{subscriptionId}
Subscription subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
Resource Reemplace {roleEligibilityScheduleRequestName} por el identificador GUID de la asignación de roles.
Errores comunes devueltos para una nueva solicitud
A continuación se muestra una lista de errores comunes que puede encontrar al crear una nueva solicitud y cómo mitigarlos.
Mensaje de error | Explanación | Mitigación |
---|---|---|
code : RoleAssignmentExistsmessage : la asignación de roles ya existe. |
Ya existe una asignación de roles similar | Puede GET esta asignación de roles y comprobar su programación. |
code : RoleAssignmentRequestPolicyValidationFailedmessage : no se pudieron realizar las siguientes reglas de directiva: ["ExpirationRule"] |
El ScheduleInfo especificado en la solicitud supera la duración máxima permitida. |
Puede GET usar RoleManagementPolicy para esto RoleDefinitionId y comprobar el RoleManagementPolicyExpirationRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : no se pudieron realizar las siguientes reglas de directiva: ["JustificationRule"] |
Debe especificar un Justification en el cuerpo de la solicitud. |
Puede GET usar RoleManagementPolicy para esto RoleDefinitionId y comprobar el RoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : no se pudieron realizar las siguientes reglas de directiva: ["ElegibilidadRule"] |
No existe un válido RoleEligibilityScheduleInstance para activar este rol. |
Un administrador de recursos debe crear un RoleEligibilityScheduleRequest para esta entidad de seguridad. |
code : RoleAssignmentRequestPolicyValidationFailedmessage : se han producido errores en las siguientes reglas de directiva: ["TicketingRule"] |
Debe especificar un TicketInfo en el cuerpo de la solicitud. |
Puede GET usar RoleManagementPolicy para esto RoleDefinitionId y comprobar el RoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : no se pudieron realizar las siguientes reglas de directiva: ["MfaRule"] |
Debe completar Azure Multi-Factor Authentication para enviar esta solicitud. | Puede GET usar RoleManagementPolicy para esto RoleDefinitionId y comprobar el RoleManagementPolicyEnablementRule |