Поделиться через


Просмотр разрешений, предоставленных корпоративным приложениям

Из этой статьи вы узнаете, как просмотреть разрешения, предоставленные приложениям в клиенте Microsoft Entra. Возможно, вам потребуется просмотреть разрешения при обнаружении вредоносного приложения или одного из них с большими разрешениями, чем это необходимо. Вы узнаете, как отозвать разрешения, предоставленные приложению с помощью API Microsoft Graph и существующих версий PowerShell.

Действия, описанные в этой статье, применяются ко всем приложениям, добавленным в клиент Microsoft Entra с помощью согласия пользователя или администратора. Дополнительные сведения о согласии приложений см. в разделе "Согласие пользователей и администраторов".

Предварительные условия

Чтобы проверить разрешения, предоставленные приложениям, требуется следующее:

  • Учетная запись Microsoft Entra с активной подпиской. Создайте учетную запись бесплатно .
  • Одна из следующих ролей:
    • Администратор облачных приложений
    • Администратор приложения.
    • Владелец учетной записи службы, который не является администратором, может аннулировать токены обновления.

Просмотр и отзыв разрешений в Центре администрирования Microsoft Entra

Вы можете получить доступ к Центру администрирования Microsoft Entra, чтобы просмотреть разрешения, предоставленные приложению. Вы можете отозвать разрешения, предоставленные администраторами для всей организации, и вы можете получить контекстные скрипты PowerShell для выполнения других действий.

Сведения о том, как восстановить отозванные или удаленные разрешения, см. в статье "Восстановление разрешений, предоставленных приложениям".

Чтобы просмотреть разрешения приложения, предоставленные всей организации или определенному пользователю или группе, выполните указанные ниже действия.

  1. Войдите в центр администрирования Microsoft Entra как минимум в роли Администратора облачных приложений.
  2. Перейдите в Раздел идентификации>, затем в Приложения>, далее в Корпоративные приложения>, и наконец в Все приложения.
  3. Выберите приложение, доступ к которому необходимо ограничить.
  4. Нажмите кнопку Разрешения.
  5. Чтобы просмотреть разрешения, применимые ко всей организации, перейдите на вкладку согласия администратора. Чтобы просмотреть разрешения, предоставленные конкретному пользователю или группе, перейдите на вкладку согласия пользователя.
  6. Чтобы просмотреть сведения о заданном разрешении, выберите разрешение из списка. Откроется область сведений о разрешениях . После просмотра разрешений, предоставленных приложению, вы можете отозвать разрешения, предоставленные администраторами для всей организации.

    Примечание.

    Вы не можете отозвать разрешения на вкладке согласия пользователя с помощью портала. Эти разрешения можно отменить с помощью вызовов API Microsoft Graph или командлетов PowerShell. Дополнительные сведения см. на вкладках PowerShell и Microsoft Graph этой статьи.

Чтобы отозвать разрешения на вкладке согласия администратора, выполните следующие действия.

  1. Просмотрите список разрешений на вкладке согласия администратора.
  2. Выберите разрешение, которое вы хотите отменить, а затем выберите элемент управления ... для этого разрешения. Снимок экрана: отмена согласия администратора.
  3. Выберите " Отозвать разрешение".

Просмотр и отзыв разрешений с помощью Microsoft Entra PowerShell

Используйте следующий скрипт Microsoft Entra PowerShell, чтобы отозвать все разрешения, предоставленные приложению. Вам нужно войти как минимум в качестве администратора облачных приложений.

Connect-Entra -scopes "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" 

# Get Service Principal using objectId
$app_name = "<app-displayName>"
$sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"

# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-EntraOAuth2PermissionGrant -All | Where-Object { $_.clientId -eq $sp.ObjectId }

# Remove all delegated permissions granted to the service principal
$spOAuth2PermissionsGrants | ForEach-Object {
    Remove-EntraOAuth2PermissionGrant -ObjectId $_.ObjectId
}

# Get all application permissions for the service principal
$spApplicationPermissions = Get-EntraServicePrincipalAppRoleAssignment -ObjectId $sp.ObjectId -All | Where-Object { $_.PrincipalType -eq "ServicePrincipal" }

# Remove all application permissions
$spApplicationPermissions | ForEach-Object {
    Remove-EntraServicePrincipalAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.objectId
}

Удаление всех назначений пользователей и групп с помощью Microsoft Entra PowerShell

Удалите appRoleAssignments для пользователей или групп из приложения с помощью следующих скриптов.

connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
#Retrieve the service principal object ID.
$app_name = "<Your App's display name>"
$sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"
$sp.ObjectId

# Get Microsoft Entra App role assignments using objectId of the Service Principal
$assignments = Get-EntraServicePrincipalAppRoleAssignedTo -ObjectId $sp.ObjectId -All $true

# Remove all users and groups assigned to the application
$assignments | ForEach-Object {
    if ($_.PrincipalType -eq "User") {
        Remove-EntraUserAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    } elseif ($_.PrincipalType -eq "Group") {
        Remove-EntraGroupAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    }
}

Просмотр и отзыв разрешений с помощью Microsoft Graph PowerShell

Используйте следующий скрипт Microsoft Graph PowerShell, чтобы отозвать все разрешения, предоставленные приложению. Вам нужно войти как минимум в качестве администратора облачных приложений.

Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"

# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalID "<ServicePrincipal objectID>"

Example: Get-MgServicePrincipal -ServicePrincipalId 'aaaaaaaa-bbbb-cccc-1111-222222222222'

# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants= Get-MgOauth2PermissionGrant -All| Where-Object { $_.clientId -eq $sp.Id }

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

# Get all application permissions for the service principal
$spApplicationPermissions = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $Sp.Id -All | Where-Object { $_.PrincipalType -eq "ServicePrincipal" }

# Remove all application permissions
$spApplicationPermissions | ForEach-Object {
Remove-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $Sp.Id  -AppRoleAssignmentId $_.Id
}

Удаление всех назначений пользователей и групп с помощью Microsoft Graph PowerShell

Удалите appRoleAssignments для пользователей или групп из приложения с помощью следующих скриптов.

Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"

# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalID "<ServicePrincipal objectID>"

Example: Get-MgServicePrincipal -ServicePrincipalId 'aaaaaaaa-bbbb-cccc-1111-222222222222'

# Get Microsoft Entra App role assignments using objectID of the Service Principal
$spApplicationPermissions = Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalID $sp.Id -All | Where-Object { $_.PrincipalType -eq "ServicePrincipal" }

# Revoke refresh token for all users assigned to the application
  $spApplicationPermissions | ForEach-Object {
  Remove-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $_.PrincipalId -AppRoleAssignmentId $_.Id
}

Просмотр и отзыв разрешений с помощью Microsoft Graph

Чтобы просмотреть разрешения, войдите в Graph Explorer как минимум администратор облачных приложений.

Необходимо предоставить согласие на следующие разрешения:

Application.ReadWrite.All, Directory.ReadWrite.All, DelegatedPermissionGrant.ReadWrite.All, AppRoleAssignment.ReadWrite.All.

Делегированные разрешения

Выполните следующие запросы, чтобы просмотреть делегированные разрешения, предоставленные приложению.

  1. Получить служебный принцип с помощью идентификатора объекта.

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}
    

    Пример:

    GET https://graph.microsoft.com/v1.0/servicePrincipals/00001111-aaaa-2222-bbbb-3333cccc4444
    
  2. Получить все делегированные разрешения для сервисного принциала

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}/oauth2PermissionGrants
    
  3. Удалите делегированные разрешения с помощью идентификатора oAuth2PermissionGrants.

    DELETE https://graph.microsoft.com/v1.0/oAuth2PermissionGrants/{id}
    

Разрешения приложения

Выполните следующие запросы, чтобы просмотреть разрешения приложения, предоставленные приложению.

  1. Получение всех разрешений приложения для субъекта-службы

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignments
    
  2. Удалить разрешения приложения с использованием идентификатора appRoleAssignment

    DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
    

Удаление всех назначений пользователей и групп с помощью Microsoft Graph

Выполните следующие запросы, чтобы удалить appRoleAssignments пользователей или групп в приложение.

  1. Получение учетной записи службы с использованием objectID.

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}
    

    Пример:

    GET https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    
  2. Получение назначений ролей приложения Microsoft Entra с помощью идентификатора объекта служебной учетной записи.

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignedTo
    
  3. Аннулирование токена обновления для пользователей и групп, назначенных для приложения с использованием идентификатора appRoleAssignment.

    DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
    

Примечание.

Отмена текущего предоставленного разрешения не останавливает повторное согласие пользователей на запрошенные разрешения приложения. Необходимо остановить приложение от запроса разрешений с помощью динамического согласия. Если вы хотите заблокировать согласие пользователей в целом, ознакомьтесь с инструкцией по настройке согласия пользователей на приложения.

Другая авторизация для рассмотрения

Делегированные и разрешения приложений не являются единственными способами предоставления приложений и пользователям доступа к защищенным ресурсам. Администраторы должны знать о других системах авторизации, которые могут предоставлять доступ к конфиденциальной информации. Примеры различных систем авторизации в корпорации Майкрософт включают встроенные роли Microsoft Entra, Exchange RBAC и разрешение на ресурсы в Teams.