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


Управление политиками согласия для приложений

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

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

С помощью Microsoft Graph и Microsoft Graph PowerShell можно просматривать политики согласия приложений и управлять ими.

Политика согласия приложения состоит из одного или нескольких наборов условий include и нуля или нескольких наборов условий "исключить". Чтобы событие рассматривалось в политике согласия приложения, оно должно соответствовать по крайней мере одному набору условий include и не должно соответствовать любому набору условий "исключить".

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

Политики согласия для приложений, в которых идентификатор начинается с "microsoft-", являются встроенными политиками. Некоторые из этих встроенных политик используются в существующих встроенных ролях каталогов. Например, политика согласия приложения microsoft-application-admin описывает условия, при которых роли администратора приложений и администратора облачных приложений могут предоставлять согласие администратора на уровне клиента. Встроенные политики можно использовать в пользовательских ролях каталога и настраивать параметры согласия пользователя, но не могут быть изменены или удалены.

Необходимые компоненты

  • Пользователь или служба с одной из следующих ролей:

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

Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant"

Рекомендуется начать с ознакомления с существующими политиками согласия для приложений в вашей организации.

  1. Список всех политик согласия для приложений:

    Get-MgPolicyPermissionGrantPolicy | ft Id, DisplayName, Description
    
  2. Просмотрите наборы условий include политики:

    Get-MgPolicyPermissionGrantPolicyInclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
    
  3. Просмотрите наборы условий "исключить":

    Get-MgPolicyPermissionGrantPolicyExclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
    

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

  1. Создайте пустую политику согласия для приложений.

    New-MgPolicyPermissionGrantPolicy `
        -Id "my-custom-policy" `
        -DisplayName "My first custom consent policy" `
        -Description "This is a sample custom app consent policy."
    
  2. Добавьте наборы условий include.

    # Include delegated permissions classified "low", for apps from verified publishers
    New-MgPolicyPermissionGrantPolicyInclude `
        -PermissionGrantPolicyId "my-custom-policy" `
        -PermissionType "delegated" `
        -PermissionClassification "low" `
        -ClientApplicationsFromVerifiedPublisherOnly
    

    Повторите этот шаг, чтобы добавить дополнительные наборы условий include.

  3. При необходимости добавьте наборы условий "исключить".

    # Retrieve the service principal for the Azure Management API
    $azureApi = Get-MgServicePrincipal -Filter "servicePrincipalNames/any(n:n eq 'https://management.azure.com/')"
    
    # Exclude delegated permissions for the Azure Management API
    New-MgPolicyPermissionGrantPolicyExclude `
        -PermissionGrantPolicyId "my-custom-policy" `
        -PermissionType "delegated" `
        -ResourceApplication $azureApi.AppId
    

    Повторите этот шаг, чтобы добавить дополнительные наборы условий "исключить".

После создания политики согласия приложения необходимо назначить ее пользовательской роли в идентификаторе Microsoft Entra. Затем необходимо назначить пользователей этой пользовательской роли, которая присоединена к созданной политике согласия приложения. Дополнительные сведения о назначении политики согласия приложения пользовательской роли см. в разделе "Разрешения согласия приложения" для пользовательских ролей.

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

   Remove-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId "my-custom-policy"

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

Необходимо предоставить согласие на Policy.ReadWrite.PermissionGrant разрешение.

Рекомендуется начать с ознакомления с существующими политиками согласия для приложений в вашей организации.

  1. Список всех политик согласия для приложений:

    GET /policies/permissionGrantPolicies?$select=id,displayName,description
    
  2. Просмотрите наборы условий include политики:

    GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/includes
    
  3. Просмотрите наборы условий "исключить":

    GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/excludes
    

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

  1. Создайте пустую политику согласия для приложений.

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies
    Content-Type: application/json
    
    {
      "id": "my-custom-policy",
      "displayName": "My first custom consent policy",
      "description": "This is a sample custom app consent policy"
    }
    
  2. Добавьте наборы условий include.

    Включение делегированных разрешений, классифицированных "низким" для приложений от проверенных издателей

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-policy }/includes
    Content-Type: application/json
    
    {
      "permissionType": "delegated",
      "PermissionClassification": "low",
      "clientApplicationsFromVerifiedPublisherOnly": true
    }
    

    Повторите этот шаг, чтобы добавить дополнительные наборы условий include.

  3. При необходимости добавьте наборы условий "исключить". Исключите делегированные разрешения для API управления Azure (appId 00001111-aaaa-2222-bbbb-3333cccc44444)

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/my-custom-policy /excludes
    Content-Type: application/json
    
    {
      "permissionType": "delegated",
      "resourceApplication": "00001111-aaaa-2222-bbbb-3333cccc4444 "
    }
    

    Повторите этот шаг, чтобы добавить дополнительные наборы условий "исключить".

После создания политики согласия приложения необходимо назначить ее пользовательской роли в идентификаторе Microsoft Entra. Затем необходимо назначить пользователей этой пользовательской роли, которая присоединена к созданной политике согласия приложения. Дополнительные сведения о назначении политики согласия приложения пользовательской роли см. в разделе "Разрешения согласия приложения" для пользовательских ролей.

  1. Ниже показано, как можно удалить настраиваемую политику согласия для приложений.

    DELETE https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/ my-custom-policy
    

Предупреждение

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

Поддерживаемые условия

В следующей таблице приведен список поддерживаемых условий для политик согласия приложений.

Условие Description
PermissionClassification Классификация разрешений для предоставления разрешения или "все" для сопоставления с любой классификацией разрешений (включая разрешения, которые не классифицируются). Значение по умолчанию — "все".
PermissionType Тип предоставляемого разрешения. Используйте "application" для разрешений приложения (например, ролей приложений) или "делегированных" для делегированных разрешений.

Примечание. Значение "delegatedUserConsentable" указывает делегированные разрешения, которые не настроены издателем API для требования согласия администратора. Это значение можно использовать в встроенных политиках предоставления разрешений, но не может использоваться в пользовательских политиках предоставления разрешений. Обязательный.
ResourceApplication AppId приложения ресурсов (например, API), для которого предоставляется разрешение, или "любой" для сопоставления с любым приложением ресурсов или API. Значение по умолчанию — "любой".
Разрешения Список идентификаторов разрешений для конкретных разрешений для сопоставления или список с единственным значением "все" для сопоставления с любым разрешением. По умолчанию используется одно значение all.
— Идентификаторы делегированных разрешений можно найти в свойстве OAuth2Permissions объекта ServicePrincipal API.
— Идентификаторы разрешений приложения можно найти в свойстве AppRoles объекта ServicePrincipal API.
ClientApplicationIds Список значений идентификатора приложения для клиентских приложений, которые необходимо сопоставить или список с единственным значением "все" для сопоставления с любым клиентским приложением. По умолчанию используется одно значение all.
ClientApplicationTenantIds Список идентификаторов клиента Microsoft Entra, в которых зарегистрировано клиентское приложение, или список с одним значением "все" для сопоставления с клиентскими приложениями, зарегистрированными в любом клиенте. По умолчанию используется одно значение all.
ClientApplicationPublisherIds Список идентификаторов Microsoft Partner Network (MPN) для проверенных издателей клиентского приложения или список с единственным значением "все" для сопоставления с клиентскими приложениями от любого издателя. По умолчанию используется одно значение all.
ClientApplicationsFromVerifiedPublisherOnly Установите этот параметр только для клиентских приложений с проверенными издателями. Отключите этот параметр (-ClientApplicationsFromVerifiedPublisherOnly:$false) для сопоставления в любом клиентском приложении, даже если у него нет проверенного издателя. По умолчанию — $false.
scopeType Тип области ресурса, к к который применяется предварительная подготовка. Возможные значения: group для групп и команд, chat для чатов или tenant для доступа на уровне клиента. Обязательный.
конфиденциальностьlabels Метки конфиденциальности, применимые к типу области, и не будут предварительно утверждены. Он позволяет защитить конфиденциальные данные организации. Узнайте о метках конфиденциальности. Примечание. Ресурс чата пока не поддерживает конфиденциальностьLabels.

Следующие шаги

Получение справки или ответов на вопросы: