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


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

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

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

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

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

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

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

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

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

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

  1. Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений.
  2. Перейдите к Entra ID>Приложениям для предприятий>Все приложения.
  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.AllDelegatedPermissionGrant.ReadWrite.AllAppRoleAssignment.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 и azure Teams.