Búsqueda de sitios web

Cómo eliminar permisos de aplicaciones en Microsoft Entra


Entonces tiene todas estas aplicaciones (aplicaciones empresariales y registros de aplicaciones) en Microsoft Entra. Pero deseas revocar los permisos de una aplicación. Es posible eliminar los permisos de consentimiento del administrador de las aplicaciones en el centro de administración de Microsoft Entra, pero no los permisos de consentimiento del usuario. En este artículo, aprenderá cómo eliminar los permisos de consentimiento de usuario y administrador de la aplicación Microsoft Entra.

Encuentre permisos de aplicaciones en Microsoft Entra

Veamos los permisos de consentimiento de administrador y consentimiento de usuario para una aplicación en Microsoft Entra:

  1. Inicie sesión en el centro de administración de Microsoft Entra

  2. Expandir Identidad > Aplicaciones

  3. Seleccione Aplicaciones empresariales (o registros de aplicaciones)

  4. Haga clic en Todas las aplicaciones

  5. Seleccione la aplicación

  1. Haga clic en Permisos

  2. Seleccione Consentimiento del administrador

  3. Seleccione Revocar permiso

  1. Haga clic en la pestaña Consentimiento del usuario

  2. No hay ninguna opción para Revocar el permiso

Por lo tanto, podemos revocar permisos de las aplicaciones cuando se otorgan mediante el consentimiento del administrador. Desafortunadamente, es imposible revocar permisos cuando se otorgan mediante el consentimiento del usuario en el centro de administración de Microsoft Entra.

En el siguiente paso, repasaremos los pasos y mostraremos cómo eliminar los permisos de consentimiento de administrador y usuario de una aplicación con PowerShell.

Instalar el módulo Microsoft Graph PowerShell

Inicie Windows PowerShell como administrador e instale Microsoft Graph PowerShell.

Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Force

Importante: Instale siempre los módulos Microsoft Graph PowerShell y Microsoft Graph Beta PowerShell. Esto se debe a que algunos cmdlets aún no están disponibles en la versión final y no funcionarán. Actualice ambos módulos a la última versión antes de ejecutar un cmdlet o script para evitar errores y resultados incorrectos.

Eliminar los permisos de consentimiento de usuario y administrador de la aplicación

Puede utilizar el siguiente script para eliminar los permisos de consentimiento de usuario y administrador de la aplicación.

Busque la aplicación ID de objeto en la pestaña Descripción general. A continuación, pégalo en la línea 4.

Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"

# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalId 453d37f9-20e5-4325-bc00-67d1581a0232

# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $sp.Id -All

# Remove all delegated permissions
$spOAuth2PermissionsGrants | ForEach-Object {
    Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}

Eliminar los permisos de consentimiento del administrador de la aplicación

Elimine únicamente los permisos de consentimiento del administrador de la aplicación.

Busque la aplicación ID de objeto en la pestaña Descripción general. A continuación, pégalo en la línea 4.

Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"

# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalId 453d37f9-20e5-4325-bc00-67d1581a0232

# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $sp.Id -All

# Remove only delegated permissions granted with admin consent
$spOAuth2PermissionsGrants | Where-Object { $_.ConsentType -eq "AllPrincipals" } | ForEach-Object {
    Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}

Eliminar los permisos de consentimiento del usuario de la aplicación

Elimine únicamente los permisos de consentimiento del usuario de la aplicación.

Busque la aplicación ID de objeto en la pestaña Descripción general. A continuación, pégalo en la línea 4.

Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"

# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalId 453d37f9-20e5-4325-bc00-67d1581a0232

# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $sp.Id -All

# Remove only delegated permissions granted with user consent
$spOAuth2PermissionsGrants | Where-Object { $_.ConsentType -ne "AllPrincipals" } | ForEach-Object {
    Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}

Veamos una mejor manera de eliminar los permisos de las aplicaciones Microsoft Entra con un script de PowerShell.

Elimine los permisos de la aplicación Entra ID con el script Powershell

Una excelente manera de eliminar los permisos de consentimiento de usuario y administrador es con el script de PowerShell.

Prepare el script de PowerShell Remove-AppPermissions

Descargue y coloque el script de PowerShell Remove-AppPermissions.ps1 en la carpeta C:\scripts.

Asegúrese de que el archivo esté desbloqueado para evitar errores al ejecutar el script. Lea más en el artículo Error sin firma digital al ejecutar el script de PowerShell.

Otra opción es copiar y pegar el siguiente código en el Bloc de notas. Asígnale el nombre Remove-AppPermissions.ps1 y colócalo en la carpeta C:\scripts.

# Variables
$systemMessageColor = "cyan"
$processMessageColor = "green"
$errorMessageColor = "red"
$warningMessageColor = "yellow"

Write-Host -ForegroundColor $systemMessageColor "Script started`n"
Write-Host "--- Script to delete app permissions from an Entra ID application in a tenant ---"

Write-Host -ForegroundColor $processMessageColor "`nChecking for Microsoft Graph PowerShell module"
if (Get-Module -ListAvailable -Name Microsoft.Graph.Authentication) {
    Write-Host -ForegroundColor $processMessageColor "Microsoft Graph PowerShell module found"
}
else {
    Write-Host -ForegroundColor $warningMessageColor -BackgroundColor $errorMessageColor "Microsoft Graph PowerShell Module not installed. Please install and re-run the script`n"
    Write-Host "You can install the Microsoft Graph PowerShell module by:`n"
    Write-Host "    1. Launching an elevated PowerShell console then,"
    Write-Host "    2. Running the command, 'Install-Module -Name Microsoft.Graph'.`n"
    Pause ## Pause to view error on screen
    exit 0 ## Terminate script
}

Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"

$results = Get-MgServicePrincipal -All | Select-Object Id, AppId, DisplayName | Sort-Object DisplayName | Out-GridView -PassThru -Title "Select Application (Multiple selections permitted)"
foreach ($result in $results) {
    # Loop through all selected options
    Write-Host -ForegroundColor $processMessageColor "Commencing", $result.DisplayName
    # Get Service Principal using objectId
    $sp = Get-MgServicePrincipal -All | Where-Object { $_.Id -eq $result.Id }
    # Menu selection for User or Admin consent types
    $consentType = @()
    $consentType += [PSCustomObject]@{ Name = "Admin consent"; Type = "allprincipals" }
    $consentType += [PSCustomObject]@{ Name = "User consent"; Type = "principal" }
    $consentSelects = $consentType | Out-GridView -PassThru -Title "Select Consent type (Multiple selections permitted)"

    foreach ($consentSelect in $consentSelects) {
        # Loop through all selected options
        Write-Host -ForegroundColor $processMessageColor "Commencing for", $consentSelect.Name
        # Get all delegated permissions for the service principal
        $spOAuth2PermissionsGrants = Get-MgOauth2PermissionGrant -All | Where-Object { $_.clientId -eq $sp.Id }
        $info = $spOAuth2PermissionsGrants | Where-Object { $_.consentType -eq $consentSelect.Type }
        
        if ($info) {
            # If there are permissions set
            if ($consentSelect.Type -eq "principal") {
                # User consent
                $usernames = @()
                foreach ($item in $info) {
                    $usernames += Get-MgUser -UserId $item.PrincipalId
                }
                $selectUsers = $usernames | Select-Object Displayname, UserPrincipalName, Id | Sort-Object Displayname | Out-GridView -PassThru -Title "Select Consent type (Multiple selections permitted)"
                foreach ($selectUser in $selectUsers) {
                    # Loop through all selected options
                    $infoScopes = $info | Where-Object { $_.principalId -eq $selectUser.Id }
                    Write-Host -ForegroundColor $processMessageColor "`n"$consentSelect.Name, "permissions for user", $selectUser.Displayname
                    foreach ($infoScope in $infoScopes) {
                        Write-Host "`nResource ID =", $infoScope.ResourceId
                        $assignments = $infoScope.Scope -split " "
                        foreach ($assignment in $assignments) {
                            Write-Host "-", $assignment
                        }
                    }
                    Write-Host -ForegroundColor $processMessageColor "`nSelect items to remove`n"
                    $removes = $infoScopes | Select-Object Scope, ResourceId, Id | Out-GridView -PassThru -Title "Select permissions to delete (Multiple selections permitted)"
                    foreach ($remove in $removes) {
                        Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $remove.Id
                        Write-Host -ForegroundColor $warningMessageColor "Removed consent for", $remove.Scope
                    }
                }
            } 
            elseif ($consentSelect.Type -eq "allprincipals") {
                # Admin consent
                $infoScopes = $info | Where-Object { $_.principalId -eq $null }
                Write-Host -ForegroundColor $processMessageColor $consentSelect.Name, "permissions"
                foreach ($infoScope in $infoScopes) {
                    Write-Host "`nResource ID =", $infoScope.ResourceId
                    $assignments = $infoScope.Scope -split " "
                    foreach ($assignment in $assignments) {
                        Write-Host "-", $assignment
                    }
                }
                Write-Host -ForegroundColor $processMessageColor "`nSelect items to remove`n"
                $removes = $infoScopes | Select-Object Scope, ResourceId, Id | Out-GridView -PassThru -Title "Select permissions to delete (Multiple selections permitted)"
                foreach ($remove in $removes) {
                    Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $remove.Id
                    Write-Host -ForegroundColor $warningMessageColor "Removed consent for", $remove.Scope
                }
            }
        }
        else {
            Write-Host -ForegroundColor $warningMessageColor "`nNo", $consentSelect.Name, "permissions found for" , $results.DisplayName, "`n"
        }
    }
}

Write-Host -ForegroundColor $systemMessageColor "`nScript Finished"

Ejecute el script de PowerShell Remove-AppPermissions

Ejecute PowerShell como administrador y ejecute el siguiente comando para iniciar el script PS Remove-AppPermissions.ps1.

C:\Scripts\.\Remove-AppPermissions.ps1

Una ventana de vista de cuadrícula mostrará el resultado en una tabla interactiva. Estas son todas las aplicaciones de su inquilino de Microsoft Entra.

Seleccione la aplicación y haga clic en Aceptar.

En nuestro ejemplo, seleccionaremos la aplicación Herramientas de línea de comandos de Microsoft Graph.

Seleccione el tipo de consentimiento. Se permiten selecciones múltiples.

En nuestro ejemplo, seleccionaremos el tipo Consentimiento del administrador y Consentimiento del usuario.

Seleccione los usuarios a los que desea quitarles el permiso de la aplicación y haga clic en Aceptar.

En nuestro ejemplo, seleccionaremos ambos usuarios.

Nota: Si un usuario tiene consentimiento de administrador y permisos de consentimiento de usuario, se le solicitará dos veces en el siguiente paso. Por lo tanto, puede decidir si solo desea eliminar el consentimiento del usuario, el consentimiento del administrador o ambos permisos para el usuario.

Pasará por los usuarios autorizados por el administrador que usted seleccionó. Seleccione los permisos para eliminar. Haga clic en Aceptar.

Pasará por los usuarios autorizados por el usuario que usted seleccionó. Seleccione los permisos para eliminar. Haga clic en Aceptar.

En nuestro ejemplo, solo tenemos 1 usuario y lo seleccionamos.

El script de PowerShell finaliza y, en el resultado, verá los resultados.

Esto es lo que parece.

Script started

--- Script to delete app permissions from an Entra ID application in a tenant ---

Checking for Microsoft Graph PowerShell module
Microsoft Graph PowerShell module found
Welcome to Microsoft Graph!

Connected via delegated access using 12d82ffa-202b-4c2f-a7e8-296a70dab67e
Readme: https://aka.ms/graph/sdk/powershell
SDK Docs: https://aka.ms/graph/sdk/powershell/docs
API Docs: https://aka.ms/graph/docs

NOTE: You can use the -NoWelcome parameter to suppress this message.

Commencing Microsoft Graph Command Line Tools
Commencing for User consent

 User consent permissions for user Admin 2

Resource ID = 73d0154b-e490-44fe-9447-fa47ec7fdd7f
-
- User.Read.All
- Group.ReadWrite.All
- Application.ReadWrite.All
- DelegatedPermissionGrant.ReadWrite.All
- openid
- profile
- offline_access

Select items to remove

Removed consent for  User.Read.All Group.ReadWrite.All Application.ReadWrite.All DelegatedPermissionGrant.ReadWrite.All openid profile offline_access

 User consent permissions for user Admin Tajran

Resource ID = 73d0154b-e490-44fe-9447-fa47ec7fdd7f
-
- User.Read.All
- Group.ReadWrite.All
- Application.ReadWrite.All
- DelegatedPermissionGrant.ReadWrite.All
- openid
- profile
- offline_access

Select items to remove

Removed consent for  User.Read.All Group.ReadWrite.All Application.ReadWrite.All DelegatedPermissionGrant.ReadWrite.All openid profile offline_access
Commencing for Admin consent
Admin consent permissions

Resource ID = 73d0154b-e490-44fe-9447-fa47ec7fdd7f
- User.Read

Select items to remove

Removed consent for User.Read

Script Finished

Verificar permisos en la aplicación Entra

Vaya a los permisos de la aplicación y confirme que los permisos de consentimiento del administrador y los permisos de consentimiento del usuario estén revocados.

Así es como busca los permisos consentidos por el administrador:

Así es como busca los permisos consentidos por el Usuario:

¡Eso es todo!

Leer más: Cree usuarios de Microsoft Entra ID desde CSV con PowerShell »

Conclusión

Aprendiste cómo eliminar permisos de aplicaciones en Microsoft Entra. Solo puede eliminar los permisos de consentimiento del administrador desde el centro de administración de Microsoft Entra. Para revocar los permisos de consentimiento del administrador y del usuario, es mejor utilizar el script de PowerShell Remove-AppPermissions.

Disfrutaste este artículo? También te puede gustar Eliminar usuarios permanentemente de Microsoft 365. No olvides seguirnos y compartir este artículo.

Artículos relacionados