Share via


Control de usuarios de una aplicación que no admite aprovisionamiento: Microsoft PowerShell

Hay tres escenarios comunes en los que es necesario rellenar Microsoft Entra ID con los usuarios existentes de una aplicación antes de usar la aplicación con una característica de gobernanza de Microsoft Entra ID, como las revisiones de acceso.

  • Aplicación migrada a Microsoft Entra ID después de usar su propio proveedor de identidades
  • Aplicación que no usa Microsoft Entra ID como su único proveedor de identidades
  • La aplicación no usa Microsoft Entra ID como proveedor de identidades ni admite aprovisionamiento

Para obtener más información sobre los dos primeros escenarios, donde la aplicación admite el aprovisionamiento o utiliza un directorio LDAP, una base de datos SQL, tiene un SOAP o una API de REST, o se basa en Microsoft Entra ID como proveedor de identidades, consulte el artículo Control de los usuarios existentes de una aplicación. En ese artículo se explica cómo usar las características de gobernanza de identidades para los usuarios actuales de esas categorías de aplicaciones.

En este artículo se trata el tercer escenario. Para algunas aplicaciones heredadas, puede que no sea factible quitar otros proveedores de identidades o la autenticación de credenciales local de la aplicación, o habilitar la compatibilidad con protocolos de aprovisionamiento para esas aplicaciones. Para esas aplicaciones, si desea usar Microsoft Entra ID para revisar quién tiene acceso a la aplicación o quitarle a alguien el acceso a esa aplicación, deberá crear asignaciones en Microsoft Entra ID que representen a los usuarios de la aplicación. En este artículo se trata el escenario de una aplicación que no usa Microsoft Entra ID como proveedor de identidades y no admite el aprovisionamiento.

Requisitos de licencia

El uso de esta característica requiere licencias de Microsoft Entra ID Governance. Para encontrar la licencia adecuada para sus requisitos, consulte Aspectos básicos de las licencias gubernamentales de id. de Microsoft Entra.

Terminología

En este artículo, se muestra el proceso de administración de las asignaciones de roles de aplicación mediante cmdlets de PowerShell de Microsoft Graph. Se usa la siguiente terminología de Microsoft Graph.

Diagrama que muestra la terminología de Microsoft Graph.

En Microsoft Entra ID, una entidad de servicio (ServicePrincipal) representa una aplicación del directorio de una organización determinada. El elemento ServicePrincipal tiene una propiedad llamada AppRoles, que enumera los roles que admite una aplicación, como Marketing specialist. Un elemento AppRoleAssignment vincula un usuario a una entidad de servicio y especifica qué rol tiene el usuario en esa aplicación.

También puede usar los paquetes de acceso de la administración de derechos de Microsoft Entra para conceder a los usuarios acceso limitado en el tiempo a la aplicación. En la administración de derechos, un elemento AccessPackage contiene uno o varios roles de recursos, potencialmente de varias entidades de servicio. El elemento AccessPackage también tiene asignaciones (Assignment) para los usuarios al paquete de acceso.

Al crear una asignación para un usuario a un paquete de acceso, la administración de derechos de Microsoft Entra crea automáticamente las instancias de AppRoleAssignment necesarias para el usuario para cada aplicación. Para obtener más información, vea el tutorial Administrar el acceso a recursos en la administración de derechos de Microsoft Entra sobre cómo crear paquetes de acceso a través de PowerShell.

Antes de empezar

  • Debe tener una de las siguientes licencias en el inquilino:

    • Microsoft Entra ID P2 o Microsoft Entra ID Governance
    • Licencia de Enterprise Mobility + Security E5
  • Debe tener un rol administrativo adecuado. Si es la primera vez que realiza estos pasos, necesitará el rol Administrador global para autorizar el uso de PowerShell de Microsoft Graph en el inquilino.

  • La aplicación necesita una entidad de servicio en el inquilino. Si aún no existe una entidad de servicio, puede registrar una aplicación para representarla en Microsoft Entra ID.

Recopilación de los usuarios existentes de una aplicación

El primer paso para garantizar que todos los usuarios se hayan registrado en Microsoft Entra ID es recopilar la lista de usuarios existentes que tienen acceso a la aplicación.

Algunas aplicaciones pueden tener un comando integrado para exportar una lista de los usuarios actuales del almacén de datos. En otros casos, la aplicación puede depender de un directorio o base de datos externos.

En algunos entornos, es posible que la aplicación se encuentre en un segmento de red o un sistema que no sea adecuado para administrar el acceso a Microsoft Entra ID. Por tanto, es posible que tenga que extraer la lista de usuarios de esa aplicación, directorio o base de datos y, después, transferirla como un archivo a otro sistema que se pueda usar para las interacciones de Microsoft Entra ID.

Si la aplicación tiene un directorio LDAP o una base de datos SQL, consulte Recopilación de los usuarios existentes de una aplicación para obtener recomendaciones sobre cómo extraer la recopilación de usuarios.

En cambio, si la aplicación no tiene un directorio ni una base de datos, deberá ponerse en contacto con el propietario de la aplicación para que proporcione una lista de usuarios. Esta lista puede tener un formato como un archivo CSV, con una línea por usuario. Asegúrese de que un campo de cada usuario del archivo contiene un identificador único, como una dirección de correo electrónico, que también esté en los usuarios de Microsoft Entra ID.

Si este sistema no tiene instalados los cmdlets de PowerShell de Microsoft Graph o no tiene conectividad con Microsoft Entra ID, transfiera el archivo .csv que contiene la lista de usuarios a un sistema que tenga instalados los cmdlets de PowerShell de Microsoft Graph.

Confirmar que Microsoft Entra ID tiene usuarios que coinciden con los usuarios de la aplicación

Ahora que ha obtenido de la aplicación una lista de todos los usuarios, hará coincidir los usuarios del almacén de datos de la aplicación con los usuarios en Microsoft Entra ID.

Recuperar los identificadores de los usuarios en Microsoft Entra ID

En esta sección, se muestra cómo interactuar con Microsoft Entra ID mediante cmdlets de PowerShell de Microsoft Graph.

La primera vez que la organización use estos cmdlets para este escenario, deberá tener un rol de administrador global para permitir el uso de PowerShell de Microsoft Graph en el inquilino. Las interacciones posteriores pueden usar un rol con privilegios inferiores, como:

  • Administrador de usuarios, si prevé crear nuevos usuarios.
  • Administrador de aplicaciones o Administrador de Identity Governance, si solo va a administrar asignaciones de roles de aplicación.
  1. Abra PowerShell.

  2. Si aún no tiene instalados los módulos de PowerShell de Microsoft Graph, instale el módulo Microsoft.Graph.Users y otros mediante este comando:

    Install-Module Microsoft.Graph
    

    Si ya tiene instalados los módulos, asegúrese de que usa una versión reciente:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Conéctese a Microsoft Entra ID:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Si es la primera vez que ha usado este comando, es posible que tenga que dar su consentimiento para permitir que las herramientas de la línea de comandos de Microsoft Graph tengan estos permisos.

  5. Lea la lista de usuarios obtenida del almacén de datos de la aplicación en la sesión de PowerShell. Si la lista de usuarios estaba en un archivo .csv, puede usar el cmdlet Import-Csv de PowerShell y proporcionar el nombre del archivo de la sección anterior como argumento.

    Por ejemplo, si el archivo obtenido de SAP Cloud Identity Services se denomina Users-exported-from-sap.csv y se encuentra en el directorio actual, escriba este comando.

    $filename = ".\Users-exported-from-sap.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    

    Por otro ejemplo, si usa una base de datos o un directorio, si el archivo se denomina users.csv y se encuentra en el directorio actual, escriba este comando:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Elija la columna del archivo users.csv que va a coincidir con un atributo de un usuario en Microsoft Entra ID.

    Si usa SAP Cloud Identity Services, la asignación predeterminada es el atributo userName SCIM de SAPuserName con el atributo Microsoft Entra IDuserPrincipalName:

    $db_match_column_name = "userName"
    $azuread_match_attr_name = "userPrincipalName"
    

    Por otro ejemplo, si usa una base de datos o un directorio, es posible que tenga usuarios en una base de datos donde el valor de la columna denominada EMail sea el mismo valor que en el atributo Microsoft Entra userPrincipalName:

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Recupere los identificadores de esos usuarios en Microsoft Entra ID.

    El siguiente script de PowerShell usa los valores $dbusers, $db_match_column_name y $azuread_match_attr_name especificados anteriormente. El script consultará a Microsoft Entra ID para encontrar un usuario que tenga un atributo con un valor coincidente para cada registro del archivo de origen. Si hay muchos usuarios en el archivo obtenidos del origen de SAP Cloud Identity Services, la base de datos o el directorio, este script puede tardar varios minutos en finalizar. Si no tiene un atributo en Microsoft Entra ID que tenga el valor y necesita usar una expresión contains u otra expresión de filtro, deberá personalizar este script en el paso 11 a continuación para usar otra expresión de filtro.

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    
  8. Observe los resultados de las consultas anteriores. Vea si alguno de los usuarios de SAP Cloud Identity Services, la base de datos o el directorio no se pudieron encontrar en Microsoft Entra ID, debido a errores o coincidencias que faltan.

    El siguiente script de PowerShell mostrará los recuentos de los registros que no se encontraron:

    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Error "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    
  9. Cuando finalice el script, se indicará un error si no se encontraron en Microsoft Entra ID algunos registros del origen de datos. Si no se han podido encontrar como usuarios de Microsoft Entra ID todos los registros de los usuarios del almacén de datos de la aplicación, deberá investigar qué registros no coincidieron y por qué.

    Por ejemplo, es posible que la dirección de correo electrónico de algún usuario y el valor de userPrincipalName hayan cambiado en Microsoft Entra ID sin que se haya actualizado su propiedad mail correspondiente en el origen de datos de la aplicación. O bien, es posible que el usuario ya haya dejado la organización, pero siga estando en el origen de datos de la aplicación. O bien, puede haber una cuenta de proveedor o superadministrador en el origen de datos de la aplicación que no corresponda a ninguna persona específica de Microsoft Entra ID.

  10. Si había usuarios que no podían estar ubicados en Microsoft Entra ID, o no estaban activos y podían iniciar sesión, pero quiere tener su acceso revisado o sus atributos actualizados en SAP Cloud Identity Services, la base de datos o el directorio, deberá actualizar la aplicación, la regla de coincidencia o actualizar o crear usuarios de Microsoft Entra para ellos. Para obtener más información sobre qué cambio realizar, vea administrar asignaciones y cuentas de usuario en aplicaciones que no coincidieron con los usuarios de Microsoft Entra ID.

    Si elige la opción de crear usuarios en Microsoft Entra ID, puede crear usuarios de forma masiva mediante:

    Asegúrese de que estos nuevos usuarios se rellenan con los atributos necesarios de Azure AD de forma que coincidan posteriormente con los usuarios existentes en la aplicación, y los atributos requeridos por Microsoft Entra ID, como userPrincipalName, mailNickname y displayName. El valor de userPrincipalName debe ser único entre todos los usuarios del directorio.

    Por ejemplo, es posible que tengas usuarios una la base de datos donde el valor de la columna denominada EMail sea el valor que quieres usar como nombre principal de usuario de Microsoft Entra ID, el valor de la columna Alias contenga el alias de correo de Microsoft Entra ID y el valor de la columna Full name contenga el nombre para mostrar del usuario:

    $db_display_name_column_name = "Full name"
    $db_user_principal_name_column_name = "Email"
    $db_mail_nickname_column_name = "Alias"
    

    Después, puede usar este script para crear usuarios de Microsoft Entra para aquellos de SAP Cloud Identity Services, la base de datos o el directorio que no coincidan con los usuarios en el Microsoft Entra ID. Tenga en cuenta que es posible que deba modificar este script para agregar atributos adicionales de Microsoft Entra necesarios en su organización, o si el valor de $azuread_match_attr_name no es mailNickname ni userPrincipalName, para proporcionar ese atributo de Microsoft Entra.

    $dbu_missing_columns_list = @()
    $dbu_creation_failed_list = @()
    foreach ($dbu in $dbu_not_matched_list) {
       if (($null -ne $dbu.$db_display_name_column_name -and $dbu.$db_display_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_user_principal_name_column_name -and $dbu.$db_user_principal_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_mail_nickname_column_name -and $dbu.$db_mail_nickname_column_name.Length -gt 0)) {
          $params = @{
             accountEnabled = $false
             displayName = $dbu.$db_display_name_column_name
             mailNickname = $dbu.$db_mail_nickname_column_name
             userPrincipalName = $dbu.$db_user_principal_name_column_name
             passwordProfile = @{
               Password = -join (((48..90) + (96..122)) * 16 | Get-Random -Count 16 | % {[char]$_})
             }
          }
          try {
            New-MgUser -BodyParameter $params
          } catch { $dbu_creation_failed_list += $dbu; throw }
       } else {
          $dbu_missing_columns_list += $dbu
       }
    }
    
  11. Después de agregar los usuarios que faltan a Microsoft Entra ID, vuelva a ejecutar el script del paso 7. A continuación, ejecute el script del paso 8. Compruebe que no se notifique ningún error.

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Warning "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count -ne 0) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    

Registro de la aplicación

Si la aplicación ya está registrada en Microsoft Entra ID, continúe con el paso siguiente.

La cuenta que esté utilizando debe tener permiso para administrar aplicaciones en Microsoft Entra ID. Cualquiera de los siguientes roles de Microsoft Entra incluye los permisos necesarios:

  1. Cree la aplicación y la entidad de servicio.

    Por ejemplo, si la aplicación empresarial se llama CORPDB1, escriba los siguientes comandos:

    $azuread_app_name = "CORPDB1"
    $azuread_app = New-MgApplication -DisplayName $azuread_app_name
    $azuread_sp = New-MgServicePrincipal -DisplayName $azuread_app_name -AppId $azuread_app.AppId
    
  2. Agregue un rol a la aplicación y etiquétela como integrada con Microsoft Entra ID para que se puedan revisar sus asignaciones. Por ejemplo, si el nombre del rol es General, proporcione ese valor en los siguientes comandos de PowerShell:

    $ar0 = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole
    $ar0.AllowedMemberTypes += "User"
    $ar0.Description = "General role"
    $ar0.DisplayName = "General"
    $ar0.id = New-Guid
    $ar0.IsEnabled = $true
    $ar0.Value = "General"
    $ara = @()
    $ara += $ar0
    
    $azuread_app_tags = @()
    $azuread_app_tags += "WindowsAzureActiveDirectoryIntegratedApp"
    
    $azuread_app_update = Update-MgApplication -ApplicationId $azuread_app.Id -AppRoles $ara -Tags $azuread_app_tags
    

Comprobar los usuarios que aún no están asignados a la aplicación

Los pasos anteriores han confirmado que todos los usuarios del almacén de datos de la aplicación existen como usuarios en Microsoft Entra ID. Sin embargo, es posible que actualmente no se hayan asignado todos a los roles de la aplicación en Microsoft Entra ID. Por lo tanto, los pasos siguientes consisten en ver qué usuarios no tienen asignaciones a roles de aplicación.

  1. Busque el identificador de la entidad de servicio de la aplicación.

    Por ejemplo, si la aplicación empresarial se llama CORPDB1, escriba los siguientes comandos:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Recupere los usuarios que tienen actualmente asignaciones a la aplicación en Microsoft Entra ID.

    Esto se basa en la variable $azuread_sp establecida en el comando anterior.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Compare la lista de identificadores de usuario de la sección anterior con los usuarios asignados actualmente a la aplicación:

    $azuread_not_in_role_list = @()
    foreach ($id in $azuread_match_id_list) {
       $found = $false
       foreach ($existing in $azuread_existing_assignments) {
          if ($existing.principalId -eq $id) {
             $found = $true; break;
          }
       }
       if ($found -eq $false) { $azuread_not_in_role_list += $id }
    }
    $azuread_not_in_role_count = $azuread_not_in_role_list.Count
    Write-Output "$azuread_not_in_role_count users in the application's data store are not assigned to the application roles."
    

    Si 0 usuarios no están asignados a roles de aplicación, lo que indica que todos los usuarios están asignados a roles de aplicación, no tiene que hacer más cambios antes de realizar una revisión de acceso.

    Sin embargo, si uno o varios usuarios no están asignados actualmente a los roles de la aplicación, deberá seguir el procedimiento y agregarlos a uno de los roles de la aplicación.

  4. Seleccione el rol de la aplicación al que va a asignar los usuarios restantes.

    Una aplicación puede tener más de un rol. Use este comando para enumerar los roles disponibles:

    $azuread_sp.AppRoles | where-object {$_.AllowedMemberTypes -contains "User"} | ft DisplayName,Id
    

    Seleccione el rol adecuado en la lista y obtenga su identificador de rol. Por ejemplo, si el nombre del rol es General, proporcione ese valor en los siguientes comandos de PowerShell:

    $azuread_app_role_name = "General"
    $azuread_app_role_id = ($azuread_sp.AppRoles | where-object {$_.AllowedMemberTypes -contains "User" -and $_.DisplayName -eq $azuread_app_role_name}).Id
    if ($null -eq $azuread_app_role_id) { write-error "role $azuread_app_role_name not located in application manifest"}
    

Creación de asignaciones de roles de aplicación en Microsoft Entra ID

Para que Microsoft Entra ID haga coincidir a los usuarios de la aplicación con los usuarios de Microsoft Entra ID, debe crear asignaciones de roles de aplicación en Microsoft Entra ID.

Cuando se crea una asignación de rol de aplicación en Microsoft Entra ID para un usuario de una aplicación, y la aplicación no admite el aprovisionamiento, ocurre lo siguiente

  • El usuario permanecerá en la aplicación indefinidamente, a menos que se actualice fuera de Microsoft Entra ID o hasta que se quite la asignación en Microsoft Entra ID.
  • En la siguiente revisión de las asignaciones de roles de esa aplicación, se incluirá al usuario en la revisión.
  • Si se deniega al usuario en una revisión de acceso, se quitará su asignación de roles de aplicación.
  1. Cree asignaciones de roles de aplicación para los usuarios que no tienen actualmente asignaciones de roles:

    foreach ($u in $azuread_not_in_role_list) {
       $res = New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -AppRoleId $azuread_app_role_id -PrincipalId $u -ResourceId $azuread_sp.Id 
    }
    
  2. Espere un minuto para que los cambios se propaguen en Microsoft Entra ID.

  3. Consulte en Microsoft Entra ID para obtener la lista actualizada de asignaciones de roles:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Compare la lista de identificadores de usuario de la sección anterior con los usuarios asignados actualmente a la aplicación:

    $azuread_still_not_in_role_list = @()
    foreach ($id in $azuread_match_id_list) {
       $found = $false
       foreach ($existing in $azuread_existing_assignments) {
          if ($existing.principalId -eq $id) {
             $found = $true; break;
          }
       }
       if ($found -eq $false) { $azuread_still_not_in_role_list += $id }
    }
    $azuread_still_not_in_role_count = $azuread_still_not_in_role_list.Count
    if ($azuread_still_not_in_role_count -gt 0) {
       Write-Output "$azuread_still_not_in_role_count users in the application's data store are not assigned to the application roles."
    }
    

    Si algún usuario no se ha asignado a roles de aplicación, compruebe el registro de auditoría de Microsoft Entra para ver si hay algún error en un paso anterior.

Selección de revisores adecuados

Al crear las revisiones de acceso, los administradores pueden elegir uno o más revisores. Todos los revisores pueden llevar a cabo una revisión; y elegir los usuarios que seguirán teniendo acceso a un recurso, o bien eliminarlos.

Normalmente, un propietario de recursos es responsable de realizar una revisión. Si va a crear una revisión de un grupo, como parte de la revisión del acceso de una aplicación integrada en el patrón B, puede seleccionar los propietarios del grupo como revisores. Como las aplicaciones de Microsoft Entra ID no tienen necesariamente un propietario, la opción para seleccionar el propietario de la aplicación como revisor no es posible. En su lugar, al crear la revisión, puede proporcionar los nombres de los propietarios de la aplicación para que sean los revisores.

También puede elegir, al crear una revisión de un grupo o una aplicación, realizar una revisión en varias fases. Por ejemplo, puede seleccionar que el administrador de cada usuario asignado realice la primera fase de la revisión y el propietario del recurso la segunda. De este modo, el propietario del recurso puede centrarse en los usuarios que su administrador ya ha aprobado.

Antes de crear las revisiones, compruebe que tenga suficientes puestos de SKU de Gobierno de id. de Microsoft Entra o Microsoft Entra ID P2 en el inquilino. Además, compruebe que todos los revisores son usuarios activos con direcciones de correo electrónico. Cuando se inician las revisiones de acceso, cada una revisa un correo electrónico desde Microsoft Entra ID. Si el revisor no tiene un buzón, no recibirá el correo electrónico cuando se inicie la revisión ni un recordatorio por correo electrónico. Y, si están bloqueados para poder iniciar sesión en Microsoft Entra ID, no podrán realizar la revisión.

Creación de la revisión de las asignaciones de rol de la aplicación

Una vez que los usuarios tengan asignados los roles de aplicación y usted tenga identificados a los revisores, puede configurar Microsoft Entra ID para iniciar una revisión.

Siga las instrucciones de la guía para crear una revisión de acceso de grupos o aplicaciones para crear la revisión de las asignaciones de rol de la aplicación. Configure la revisión para que se apliquen los resultados cuando termine.

Recuperación de las asignaciones que se actualizan cuando se completan las revisiones

  1. Una vez completada la revisión, puede recuperar la lista actualizada de usuarios con asignaciones de rol de aplicación.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. Las columnas PrincipalDisplayName y PrincipalId contienen los nombres para mostrar y los id. de usuario de Microsoft Entra de cada usuario que conserva una asignación de rol de aplicación.

Configuración de la integración de administración de derechos con ServiceNow para la creación de vales (opcional)

Si tiene ServiceNow, como alternativa, puede configurar la creación automatizada de vales de ServiceNow mediante la integración de administración de derechos a través de Logic Apps. En ese escenario, la administración de derechos puede crear automáticamente vales de ServiceNow para el aprovisionamiento manual de usuarios que han recibido asignaciones de paquetes de acceso.

Pasos siguientes