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

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

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

Замечание

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

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

Существует три основных компонента политик согласия приложения:

  • Метаданные: Свойства политики согласия приложения содержат такие сведения, как идентификатор, описание и отображаемое имя политики согласия.
  • Включенные наборы условий: Коллекция наборов условий, из которых хотя бы одному должен соответствовать заданный запрос на согласие приложения, чтобы политика была выполнена. Эта коллекция должна иметь по крайней мере один набор условий. Каждый набор условий содержит правила, описывающие характеристики запроса на согласие приложения, такие как проверенное состояние издателя, запрошенные разрешения и многое другое.
  • Исключенные наборы условий: Коллекция наборов условий, которые не должны совпадать ни с одним из заданных запросов на согласие приложения. Эта коллекция может быть пустой (она может содержать нулевые исключенные наборы условий). Каждый набор условий содержит правила, описывающие характеристики запроса на согласие приложения, такие как проверенное состояние издателя, запрошенные разрешения и многое другое.

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

Каждый набор условий состоит из нескольких условий. Чтобы событие соответствовало набору условий, должны быть выполнены все условия в наборе условий. например, набор условий может указать, что "клиентские приложения, проверенные издателем, созданные в этом клиенте и запрашивающие Microsoft Graph с делегированными правами Mail.Read", не соответствуют запросу на согласие клиентского приложения, которое проверено издателем, создано в клиенте и запрашивает области openid и профиля.

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

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

  • Microsoft-user-default-low: Все разрешения с низким уровнем риска, доступные пользователям типа участника по умолчанию.
  • microsoft-user-default-recommended: Разрешения, на которые можно дать согласие согласно текущим рекомендациям Майкрософт.
  • microsoft-user-default-allow-consent-apps: Популярные почтовые клиенты, на которые пользователи могут дать согласие
  • microsoft-all-application-permissions: Включает все разрешения приложения (роли приложения) для всех API для любого клиентского приложения.
  • Microsoft-динамически управляемые разрешения для чата: Включает динамически управляемые разрешения, позволяющие согласие для конкретного ресурса чата.
  • Microsoft-all-application-permissions-for-chat: Включает все разрешения приложения для конкретного ресурса чата для всех API для любого клиентского приложения.
  • Microsoft-динамически-управляемые-разрешения-для-команды: Включает динамически управляемые разрешения, применяемые для согласия на доступ к специфическим ресурсам группы.
  • Microsoft-pre-approval-apps-for-chat: Включает приложения, которые предварительно одобрены политикой разрешения предварительного утверждения для согласия, касающегося конкретных ресурсов чата.
  • Microsoft-pre-approval-apps-for-team: Включает приложения, которые предварительно одобрены политикой предварительного одобрения предоставления разрешений для согласия, специфичного для ресурсов команды.
  • Microsoft-all-application-permissions-verified: Включает все разрешения приложения (роли приложения) для всех API для клиентских приложений от проверенных издателей или зарегистрированных в этой организации.
  • Microsoft-application-admin: Разрешения, доступные администраторам приложений.
  • Microsoft-company-admin: Разрешения, доступные администраторам компании.

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

Майкрософт-user-default-recommended и microsoft-user-default-allow-consent-apps — это управляемые Майкрософт политики. Условия, включенные в политики, автоматически обновляются на основе последних рекомендаций по безопасности Майкрософт для согласия конечных пользователей.

Параметр с меткой "Разрешить Майкрософт управлять параметрами согласия", управляемой политикой Майкрософт, будет обновляться с помощью последних рекомендуемых параметров согласия Майкрософт по умолчанию. Это также используется по умолчанию для нового клиента. В настоящее время правила параметра: конечные пользователи могут предоставить согласие на любые делегированные разрешения, предоставляемые пользователем, КРОМЕ:

  • Для Microsoft Graph: Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All, Mail.Read, Mail.ReadWrite, Mail.ReadBasic, Mail.Read.Shared, Mail.ReadBasic.Shared, Mail.ReadWrite.Shared, MailboxItem.Read, Calendars.Read, Calendars.ReadBasic, Calendars.ReadWrite, Calendars.Read.Shared, Calendars.ReadWrite.Shared, Chat.Read, Chat.ReadWrite, OnlineMeetings.Read, OnlineMeetings.ReadWrite, MailBoxFolder.Read, MailBoxFolder.ReadWrite, MailBoxSettings.Read, MailBoxSettings.ReadWrite, EAS.AccessAsUser.All, EWS.AccessAsUser.All, IMAP.AccessAsUser.All, POP.AccessAsUser.All.
  • Для Office 365 Exchange Online: EAS.AccessAsUser.All, EWS.AccessAsUser.All, IMAP.AccessAsUser.All, POP.AccessAsUser.All.

Политика клиента почты

Дополнительная политика, которая включена по умолчанию, — это политика microsoft-user-allow-default-consent-apps. Эта политика позволяет конечным пользователям организации предоставлять согласие на использование популярных почтовых приложений для разрешений почты. Если эта политика включена, конечные пользователи смогут предоставить согласие для определенных делегированных разрешений почты (разрешений Microsoft Graph и Office 365 Exchange Online: EAS.AccessAsUser.All, EWS.AccessAsUser.All, IMAP.AccessAsUser.All, POP.AccessAsUser.All) для следующих приложений:

  • Apple Mail (идентификатор приложения: f8d98a96-0999-43f5-8af3-69971c7bb423)
  • Почта Spark (идентификатор приложения:b50c1dbd-1855-4e54-b07c-d3c3029e93d3)
  • Клиент eM (идентификатор приложения:e9a7fea1-1cc0-4cd9-a31b-9137ca5deedd)
  • Android-Samsung (идентификатор приложения:8acd3ea-7197-4a96-bc33-d7cc7101262f)
  • Android-Mail (идентификатор приложения:2cee05de-2b8f-45a2-8289-2a06ca32c4c8)
  • Thunderbird (идентификатор приложения:9e5f94bc-e8a4-4e73-b8be-63364c29d753)

Пользователь может иметь несколько политик, которые позволяют им давать согласие. Каждая политика оценивается отдельно (как и исключение из одной политики не влияет на включение другой политики), и пользователю требуется только одна политика, чтобы утвердить разрешение на определенное событие. Например, администратор приложения может предоставить согласие на все, что может обычный пользователь (благодаря политике по умолчанию, применяемой ко всем пользователям), и у них также есть более широкие разрешения через политику администратора microsoft-application-admin, которая позволяет утверждать запросы на любое разрешение API, кроме ролей приложений Microsoft Graph.

Аналогичным образом пользователь или субъект-служба могут предоставлять согласие через средства, отличные от политики согласия приложения. Например, пользователь, назначенный владельцем объекту-службы, может предоставить согласие для ролей приложения, предоставляемых объектом-службы, даже если этому пользователю не были назначены какие-либо роли с присоединенными политиками согласия; приложение, которому назначено разрешение приложения Application.ReadWrite.All, может предоставить согласие для любой роли приложения (за исключением тех, которые предоставлены Microsoft Graph). Пользователю или субъекту-службе требуется только один механизм авторизации для утверждения разрешения на предоставление согласия для определенного события.

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

  • Пользователь или служба с одной из следующих ролей:
  • Ознакомьтесь с (набором условий предоставления разрешений)[/graph/api/resources/permissiongrantconditionset?view=graph-rest-1.0]

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

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

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

  1. Список всех политик согласия приложения. Показаны все встроенные политики и любые пользовательские политики, созданные вашей организацией:

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

    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
    

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

  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 ID. Затем необходимо назначить пользователей на эту пользовательскую роль, связанную с созданной вами политикой согласия приложения. Дополнительные сведения о назначении политики согласия приложения пользовательской роли см. в разделе "Разрешения согласия приложения" для пользовательских ролей.

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

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

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

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

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

  1. Список всех политик согласия приложения. Показаны все встроенные политики и любые пользовательские политики, созданные вашей организацией:

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

    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
    }
    

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

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

    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 ID. Затем необходимо назначить пользователей этой пользовательской роли, связанной с созданной вами политикой согласия приложения. Дополнительные сведения о назначении политики согласия приложения пользовательской роли см. в разделе "Разрешения согласия приложения" для пользовательских ролей.

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

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

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

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

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

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

  • Microsoft Entra ID в Microsoft Q& A