Takže všechny tyto aplikace (Enterprise aplikace a registrace aplikací) máte v Microsoft Entra. Ale chcete zrušit oprávnění z aplikace. Je možné odebrat oprávnění k souhlasu správce z aplikací v centru pro správu Microsoft Entra, ale ne oprávnění k souhlasu uživatele. V tomto článku se dozvíte, jak odebrat oprávnění správce a souhlas uživatele z aplikace Microsoft Entra.
Najděte oprávnění aplikace v Microsoft Entra
Podívejme se na souhlas správce a souhlas uživatele pro aplikaci v Microsoft Entra:
- Přihlaste se doCentrum pro správu Microsoft Entra
- RozšířitIdentita > Aplikace
- VybratPodnikové aplikace (nebo registrace aplikací)
- Klikněte naVšechny aplikace
- Vyberteaplikace

- Klikněte naOprávnění
- VybratSouhlas administrátora
- VybratOdebrat oprávnění

- Klikněte naSouhlas uživateletab
- Neexistuje žádná možnostOdebrat oprávnění

Takže můžeme zrušit oprávnění z aplikací, když je uděleno prostřednictvím souhlasu správce. Bohužel je nemožné zrušit oprávnění, když jsou udělena prostřednictvím souhlasu uživatele v centru pro správu Microsoft Entra.
V dalším kroku projdeme kroky a ukážeme, jak odebrat oprávnění správce a souhlas uživatele z aplikace s PowerShell.
Nainstalujte modul Microsoft Graph PowerShell
Spusťte Windows PowerShell jako správce a nainstalujte Microsoft Graph PowerShell.
Install-Module Microsoft.Graph -ForceDůležité:Před spuštěním rutiny nebo skriptu vždy aktualizujte na nejnovější verzi modulu Microsoft Graph PowerShell, abyste předešli chybám a nesprávným výsledkům.
Odeberte z aplikace oprávnění k souhlasu uživatele i správce
K odstranění obojího můžete použít níže uvedený skriptsouhlas uživatele a administrátoraz aplikace.
Najděte aplikaciID objektuna kartě Přehled. Dále to přilepteřádek 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
}Odeberte z aplikace oprávnění k souhlasu správce
Odstraňte pouzesouhlas administrátoraz aplikace.
Najděte aplikaciID objektuna kartě Přehled. Dále to přilepteřádek 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
}Odeberte z aplikace oprávnění k souhlasu uživatele
Odstraňte pouzeoprávnění k souhlasu uživatelez aplikace.
Najděte aplikaciID objektuna kartě Přehled. Dále to přilepteřádek 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
}Podívejme se na lepší způsob, jak odebrat oprávnění aplikací Microsoft Entra pomocí skriptu PowerShell.
Odeberte oprávnění aplikace Entra ID pomocí skriptu Powershell
Skvělý způsob, jak odebrat oprávnění k souhlasu uživatele a správce, je pomocí skriptu PowerShell.
Připravte skript PowerShell Remove-AppPermissions
Stáhněte a umístěte Remove-AppPermissions.ps1 skript PowerShellC: skriptysložku.
Ujistěte se, že je soubor odblokován, abyste předešli chybám při spouštění skriptu. Přečtěte si více v článku Chyba není digitálně podepsána při spouštění skriptu PowerShell.
Další možností je zkopírovat a vložit níže uvedený kód do poznámkového bloku. Dejte tomu jménoRemove-AppPermissions.ps1a umístěte jej doC: skriptysložku.
<#
.SYNOPSIS
Remove-AppPermissions.ps1
.DESCRIPTION
Remove app permissions from a Microsoft Entra ID application in a tenant.
.LINK
www.alitajran.com/remove-permissions-applications/
.NOTES
Written by: ALI TAJRAN
Website: alitajran.com
X: x.com/alitajran
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 11/08/2023 - Initial version
V1.10, 10/07/2024 - Cleaned up the code
#>
# Variables
$systemMessageColor = "cyan"
$processMessageColor = "green"
$errorMessageColor = "red"
$warningMessageColor = "yellow"
Write-Host "Script started" -ForegroundColor $systemMessageColor
Write-Host "Script to delete app permissions from an Entra ID application in a tenant" -ForegroundColor $systemMessageColor
Write-Host "Checking for Microsoft Graph PowerShell module" -ForegroundColor $processMessageColor
if (Get-Module -ListAvailable -Name Microsoft.Graph.Authentication) {
Write-Host -ForegroundColor $processMessageColor "Microsoft Graph PowerShell module found"
}
else {
Write-Host "Microsoft Graph PowerShell Module not installed. Please install and re-run the script" -ForegroundColor $warningMessageColor -BackgroundColor $errorMessageColor
Write-Host "You can install the Microsoft Graph PowerShell module by:"
Write-Host "1. Launching an elevated PowerShell console then,"
Write-Host "2. Running the command, 'Install-Module -Name Microsoft.Graph'."
Pause ## Pause to view error on screen
exit 0 ## Terminate script
}
Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All" -NoWelcome
$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 "Commencing" $result.DisplayName -ForegroundColor $processMessageColor
# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -All | Where-Object { $_.Id -eq $result.Id }
# Menu selection for User or Admin consent types
$consentType = [System.Collections.Generic.List[Object]]::new()
$consentType.Add([PSCustomObject]@{ Name = "Admin consent"; Type = "allprincipals" })
$consentType.Add([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 "Commencing for" $consentSelect.Name -ForegroundColor $processMessageColor
# 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 = [System.Collections.Generic.List[Object]]::new()
foreach ($item in $info) {
$usernames.Add((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 $consentSelect.Name "permissions for user" $selectUser.Displayname -ForegroundColor $processMessageColor
foreach ($infoScope in $infoScopes) {
Write-Host "Resource ID =", $infoScope.ResourceId
$assignments = $infoScope.Scope -split " "
foreach ($assignment in $assignments) {
# Skip empty strings
if ($assignment -ne "") {
Write-Host "-", $assignment
}
}
}
Write-Host "Select items to remove" -ForegroundColor $processMessageColor
$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 "Removed consent for $($remove.Scope)" -ForegroundColor $warningMessageColor
}
}
}
elseif ($consentSelect.Type -eq "allprincipals") {
# Admin consent
$infoScopes = $info | Where-Object { $_.principalId -eq $null }
Write-Host $consentSelect.Name "permissions" -ForegroundColor $processMessageColor
foreach ($infoScope in $infoScopes) {
Write-Host "Resource ID =", $infoScope.ResourceId
$assignments = $infoScope.Scope -split " "
foreach ($assignment in $assignments) {
# Skip empty strings
if ($assignment -ne "") {
Write-Host "-", $assignment
}
}
}
Write-Host "Select items to remove" -ForegroundColor $processMessageColor
$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 "Removed consent for $($remove.Scope)" -ForegroundColor $warningMessageColor
}
}
}
else {
Write-Host "No" $consentSelect.Name "permissions found for" $results.DisplayName -ForegroundColor $warningMessageColor
}
}
}
Write-Host "Script Finished" -ForegroundColor $systemMessageColorSpusťte skript Remove-AppPermissions PowerShell
Spusťte PowerShell jako správce a spusťte níže uvedený příkaz pro spuštění skriptu Remove-AppPermissions.ps1 PS.
C:Scripts.Remove-AppPermissions.ps1Okno zobrazení mřížky zobrazí výstup v interaktivní tabulce. Toto jsou všechny aplikace ve vašem tenantovi Microsoft Entra.

Vyberteaplikacea klikněteOK.
V našem příkladu vyberemeAplikace Nástroje příkazového řádku Microsoft Graph.

Vyberte typ souhlasu. Vícenásobný výběr je povolen.
V našem příkladu vybereme jak souhlas správce, tak typ souhlasu uživatele.

Vyberte uživatele, kterým chcete odebrat oprávnění z aplikace, a klikněte na OK.
V našem příkladu vybereme oba uživatele.
Poznámka:Pokud má uživatel souhlas správce a oprávnění uživatele, zobrazí se v dalším kroku výzva dvakrát. Můžete se tedy rozhodnout, zda chcete uživateli odebrat pouze souhlas uživatele, souhlas správce nebo obě oprávnění.

Projde vámi vybranými uživateli se souhlasem správce. Vyberte oprávnění, která chcete odstranit. Klepněte na tlačítko OK.

Bude procházet uživateli se souhlasem uživatele, které jste vybrali. Vyberte oprávnění, která chcete odstranit. Klepněte na tlačítko OK.
V našem příkladu máme pouze 1 uživatele a toho vybereme.

Skript PowerShellu se dokončí a ve výstupu PowerShellu uvidíte výsledky.
Ověřte oprávnění v aplikaci Entra
Přejděte na oprávnění aplikace a potvrďte, že oprávnění souhlasu správce a oprávnění udělená uživatelem jsou odvolána.
Takto vypadá oprávnění se souhlasem správce:

Takto vypadá oprávnění odsouhlasená uživatelem:

To je vše!
Naučili jste se, jak odebrat oprávnění z aplikací v Microsoft Entra. Oprávnění souhlasu správce můžete odebrat pouze z centra pro správu Microsoft Entra. Chcete-li zrušit oprávnění správce i souhlas uživatele, je nejlepší použít skript Remove-AppPermissions PowerShell.
Doporučené čtení:Jak najít složku aplikací na Macu: 6 rychlých způsobů
Líbil se vám tento článek? Také by se vám mohlo líbit Trvale odstranit uživatele z Microsoft 365. Nezapomeňte nás sledovat a sdílet tento článek.














