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.

  1. 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}
    
  2. 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
  3. 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.

  1. 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.

  2. 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

  3. 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
          }
        }
      }
    }
    
  4. 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
  5. Reemplace {roleEligibilityScheduleRequestName} por el identificador GUID de la asignación de roles.

  6. En el cuerpo de la solicitud, reemplace {subscriptionId} por el identificador de la suscripción.

  7. Reemplace {roleDefinitionId} por el identificador de la definición de roles.

  8. 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.

  1. 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

  2. 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"
        }
    }
    
  3. 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
  4. 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: RoleAssignmentExists
message: 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: RoleAssignmentRequestPolicyValidationFailed
message: 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: RoleAssignmentRequestPolicyValidationFailed
message: 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: RoleAssignmentRequestPolicyValidationFailed
message: 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: RoleAssignmentRequestPolicyValidationFailed
message: 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: RoleAssignmentRequestPolicyValidationFailed
message: 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