Microsoft Entra'daki uygulamalardan izinler nasıl kaldırılır


Yani tüm bu uygulamalara (Kurumsal uygulamalar ve Uygulama kayıtları) Microsoft Entra'da sahipsiniz. Ancak bir uygulamanın izinlerini iptal etmek istiyorsunuz. Microsoft Entra yönetim merkezindeki uygulamalardan yönetici izni izinlerini kaldırmak mümkündür ancak kullanıcı izni izinlerini kaldıramazsınız. Bu yazımızda Microsoft Entra uygulamasından yönetici ve kullanıcı izin izinlerinin nasıl kaldırılacağını öğreneceksiniz.

Microsoft Entra'da uygulama izinlerini bulun

Microsoft Entra'daki bir uygulama için yönetici izni ve kullanıcı izni izinlerine bakalım:

  1. Microsoft Entra yönetim merkezinde oturum açın

  2. Kimlik > Uygulamalar'ı genişletin

  3. Kurumsal uygulamaları (veya Uygulama kayıtlarını) seçin

  4. Tüm uygulamalar'ı tıklayın

  5. Uygulamayı seçin

  1. İzinler'i tıklayın

  2. Yönetici izni'ni seçin

  3. İzni İptal Et'i seçin

  1. Kullanıcı izni sekmesini tıklayın

  2. İzni İptal Et seçeneği yoktur

Böylece, yönetici izniyle verildiğinde uygulamalardaki izinleri iptal edebiliriz. Ne yazık ki, Microsoft Entra yönetim merkezinde kullanıcı onayı aracılığıyla verilen izinleri iptal etmek mümkün değildir.

Bir sonraki adımda adımları inceleyip PowerShell ile bir uygulamadan yönetici ve kullanıcı izin izinlerinin nasıl kaldırılacağını göstereceğiz.

Microsoft Graph PowerShell modülünü yükleyin

Windows PowerShell'i yönetici olarak başlatın ve Microsoft Graph PowerShell'i yükleyin.

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

Önemli: Her zaman Microsoft Graph PowerShell ve Microsoft Graph Beta PowerShell modüllerini yükleyin. Bunun nedeni, bazı cmdlet'lerin henüz son sürümde mevcut olmaması ve çalışmayacak olmasıdır. Hataları ve yanlış sonuçları önlemek için bir cmdlet'i veya betiği çalıştırmadan önce her iki modülü de en son sürüme güncelleyin.

Uygulamadan hem kullanıcı hem de yönetici izin izinlerini kaldırın

Uygulamadan hem kullanıcı hem de yönetici izin izinlerini kaldırmak için aşağıdaki komut dosyasını kullanabilirsiniz.

Genel Bakış sekmesinde uygulama Nesne Kimliği'ni bulun. Daha sonra 4. satıra yapıştırın.

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
}

Uygulamadan yönetici izni izinlerini kaldırın

Uygulamadan yalnızca yönetici izin izinlerini kaldırın.

Genel Bakış sekmesinde uygulama Nesne Kimliği'ni bulun. Daha sonra 4. satıra yapıştırın.

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
}

Uygulamadan kullanıcı izni izinlerini kaldırın

Uygulamadan yalnızca kullanıcı izni izinlerini kaldırın.

Genel Bakış sekmesinde uygulamanın Nesne Kimliği'ni bulun. Daha sonra bunu 4. satıra yapıştırın.

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
}

PowerShell betiğiyle Microsoft Entra uygulamalarının izinlerini kaldırmanın daha iyi bir yoluna bakalım.

Powershell betiğiyle Entra ID uygulama izinlerini kaldırın

Kullanıcı ve yönetici izin izinlerini kaldırmanın mükemmel bir yolu PowerShell betiğidir.

Remove-AppPermissions PowerShell betiğini hazırlayın

Remove-AppPermissions.ps1 PowerShell betiğini indirin ve C:\scripts klasörüne yerleştirin.

Komut dosyasını çalıştırırken hataları önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.

Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona Remove-AppPermissions.ps1 adını verin ve C:\scripts klasörüne yerleştirin.

# 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"

Remove-AppPermissions PowerShell betiğini çalıştırın

PowerShell'i yönetici olarak çalıştırın ve Remove-AppPermissions.ps1 PS betiğini başlatmak için aşağıdaki komutu çalıştırın.

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

Izgara görünümü penceresi, çıktıyı etkileşimli bir tabloda görüntüleyecektir. Bunların tümü Microsoft Entra kiracınızdaki uygulamalardır.

Uygulamayı seçin ve Tamam'ı tıklayın.

Örneğimizde Microsoft Graph Komut Satırı Araçları uygulamasını seçeceğiz.

İzin türünü seçin. Çoklu seçime izin verilir.

Örneğimizde hem Yönetici izni hem de Kullanıcı izni türünü seçeceğiz.

Uygulamadan iznini kaldırmak istediğiniz kullanıcıları seçin ve Tamam'a tıklayın.

Örneğimizde her iki kullanıcıyı da seçeceğiz.

Not: Bir kullanıcının yönetici onayı ve kullanıcı izni izinleri varsa, bir sonraki adımda sizden iki kez bilgi ister. Böylece, kullanıcının yalnızca kullanıcı iznini mi, yönetici iznini mi yoksa her iki iznini mi kaldırmak istediğinize karar verebilirsiniz.

Seçtiğiniz yöneticinin izin verdiği kullanıcılar üzerinden geçecektir. Silinecek izinleri seçin. Tamam'ı tıklayın.

Seçtiğiniz kullanıcının izin verdiği kullanıcılar üzerinden geçecektir. Silinecek izinleri seçin. Tamam'ı tıklayın.

Örneğimizde sadece 1 kullanıcımız var ve onu seçiyoruz.

PowerShell betiği tamamlanır ve çıktıda sonuçları göreceksiniz.

Görünen bu.

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

Entra uygulamasındaki izinleri doğrulayın

Uygulama izinlerine gidin ve yönetici izni izinlerinin ve kullanıcının izin verdiği izinlerin iptal edildiğini doğrulayın.

Yöneticinin izin verdiği izinler şu şekilde görünür:

Kullanıcının izin verdiği izinler şu şekilde görünür:

Bu kadar!

Devamını oku: PowerShell ile CSV'den Microsoft Entra ID Kullanıcıları Oluşturun »

Çözüm

Microsoft Entra'daki uygulamalardan izinlerin nasıl kaldırılacağını öğrendiniz. Yönetici izni izinlerini yalnızca Microsoft Entra yönetim merkezinden kaldırabilirsiniz. Hem yönetici hem de kullanıcı izin izinlerini iptal etmek için Remove-AppPermissions PowerShell betiğini kullanmak en iyisidir.

Bu makaleyi beğendiniz mi? Ayrıca Microsoft 365'teki kullanıcıları kalıcı olarak silmek de hoşunuza gidebilir. Bizi takip etmeyi ve bu makaleyi paylaşmayı unutmayın.

İlgili makaleler