Обновление запрошенных разрешений приложения в идентификаторе Microsoft Entra
При настройке приложения с идентификатором Microsoft Entra разработчики могут запрашивать доступ к данным из других приложений и служб с помощью разрешений. Они могут запрашивать разрешения, добавляя статические разрешения в манифест приложения или динамически запрашивая разрешения во время выполнения. Затем пользователи или администраторы могут предоставить разрешения во время согласия, позволяя приложению получать доступ к данным, которым он нужен.
По мере развития функциональных возможностей приложения ресурсы, необходимые для доступа к изменениям. Эти изменения могут включать новые функции, устранять ненужный доступ или заменять разрешения с высоким уровнем привилегий менее привилегированными. В этой статье объясняется, как обновить разрешения для запросов приложения с помощью Центра администрирования Microsoft Entra и вызовов API Microsoft Graph.
Обновление разрешений для вашего приложения — это не только рекомендация по обеспечению безопасности, но и способ улучшить взаимодействие с пользователем и внедрением приложения. В следующем разделе описаны некоторые преимущества обновления разрешений для приложения:
- Если у вашего приложения есть новая функциональность, вы можете запросить дополнительные разрешения, позволяющие приложению получить доступ к дополнительным ресурсам, которые он нуждается.
- Клиенты, скорее всего, будут применять приложение, если он запрашивает только наименее привилегированные разрешения, необходимые для работы. В нем показано, что ваше приложение уважает конфиденциальность и защиту данных клиента и не обращается к большим ресурсам, чем требуется.
- Кроме того, если приложение скомпрометировано, есть меньший радиус взрыва, если он имеет меньше или менее привилегированных разрешений. Это означает, что злоумышленник имеет меньший доступ к данным и ресурсам клиента, и, таким образом, потенциальный ущерб снижается.
- Обновив разрешения для приложения, вы можете улучшить безопасность приложения, удобство использования и соответствие требованиям, а также обеспечить доверие к клиентам.
Необходимые компоненты
Чтобы обновить запрошенные разрешения приложения, вам потребуется:
- Учетная запись пользователя Microsoft Entra. Если у вас еще нет учетной записи, создайте бесплатную учетную запись.
- Одна из следующих ролей: администратор приложений, администратор облачных приложений. Владелец приложения, который не является администратором, может обновить запрошенные разрешения приложения.
Сценарии обновления разрешений
В следующем разделе перечислены три основных сценария, в которых необходимо обновить разрешения для запросов приложения:
- Добавление разрешений в приложение
- Удаление неиспользуемых разрешений из приложения
- Замена разрешения
Примечание.
Обновление запрошенных разрешений для приложения не предоставляет или не отменяет доступ приложения к защищенным ресурсам. Ваши клиенты или администраторы в организации должны предоставить согласие на новые разрешения, добавленные или вручную отозвать разрешения.
Добавление разрешений в приложение
Вы можете добавить разрешение, если у вашего приложения есть новая функциональность, требующая разрешения, которое ранее не требуется.
Рекомендуется запрашивать доступ только к минимальным разрешениям, необходимым приложению. Если необходимо добавить новое разрешение для поддержки новых функций в приложении, запросите только минимально привилегированное разрешение для этой функции.
Например, чтобы добавить функцию уведомления по электронной почте в приложение, она должна получить доступ к сообщениям электронной почты пользователя. Для этого потребуется запросить доступ к разрешению Mail.ReadWrite
.
Добавление разрешений в статическое согласие
Статическое согласие — это способ запроса разрешений от пользователей или администраторов во время регистрации приложения, а не во время выполнения. Для статического согласия приложение должно объявить все необходимые разрешения в области Регистрация приложений в Центре администрирования Microsoft Entra. С помощью Центра администрирования Microsoft Entra можно обновить разрешения только для статического согласия. Дополнительные сведения о различных типах согласия см. в разделе "Типы согласия". Чтобы узнать, как обновить разрешения для динамического согласия, перейдите на вкладку Microsoft Graph этой статьи.
В этом разделе описано, как добавить разрешения в статическое согласие.
Вы можете добавить разрешения на статическое согласие двумя разными способами в Центре администрирования Microsoft Entra:
Вариант 1. Добавление разрешений в область разрешений API
- Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений или владелец приложения.
- Перейдите к приложениям >identity>Регистрация приложений> All.
- Найдите регистрацию приложения, к которой нужно добавить разрешения, и выберите его. Разрешения можно добавлять двумя способами:
- Добавьте разрешения в область разрешений API.
Вариант 2. Добавление разрешений в манифест приложения
- В области навигации слева в группе меню "Управление " выберите "Манифест". Выбор открывает редактор, позволяющий напрямую изменять атрибуты объекта регистрации приложения.
- Тщательно редактируйте
requiredResourceAccess
свойство в файле манифеста приложения. resourceAppId
Добавьте свойство иresourceAccess
свойство и назначьте необходимые разрешения.- Сохранение изменений.
Чтобы выполнить следующие действия по добавлению разрешений, вам потребуются следующие ресурсы и привилегии:
- Запустите HTTP-запросы в выбранном инструменте, например в приложении или в обозревателе Graph.
- Запустите API как пользователя с по крайней мере администратором облачных приложений или владельцем регистрации целевого приложения.
- Приложение, используемое для внесения этих изменений, должно быть предоставлено
Application.ReadWrite.All
разрешение.
Определите необходимые разрешения, идентификаторы разрешений и роли приложения (разрешения приложения) или делегированные разрешения. Например, если вы хотите запросить разрешения Microsoft Graph, ознакомьтесь с разрешениями Microsoft Graph для списка разрешений и их идентификаторов.
Добавьте необходимые разрешения Microsoft Graph в приложение. В следующем примере вызывается API приложения Update, чтобы добавить необходимые разрешения Microsoft Graph в регистрацию приложения, определяемую идентификатором
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
объекта. В этом примере используютсяAnalytics.Read
иApplication.Read.All
делегированные разрешения и разрешения приложения. Microsoft Graph определяется как объект ServicePrincipal с00000003-0000-0000-c000-000000000000
его глобально уникальнымAppId
.PATCH https://graph.microsoft.com/v1.0/applications/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb Content-Type: application/json { "requiredResourceAccess": [ { "resourceAppId": "00000003-0000-0000-c000-000000000000", "resourceAccess": [ { "id": "e03cf23f-8056-446a-8994-7d93dfc8b50e", "type": "Scope" }, { "id": "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30", "type": "Role" } ] } ] }
Добавление разрешений в динамическое согласие
Динамическое согласие — это способ запроса разрешений от пользователей или администраторов во время выполнения, а не статически объявлять их в области Регистрация приложений. Динамическое согласие позволяет приложению запрашивать только разрешения, необходимые для определенной функциональности, и при необходимости получать согласие от пользователя или администратора. Динамическое согласие можно использовать с делегированными разрешениями и объединяться с /.default
областью запроса согласия администратора для всех разрешений.
Чтобы добавить разрешения в динамическое согласие, выполните следующие действия.
Используйте Microsoft Graph: добавьте необходимые разрешения Microsoft Graph в регистрацию приложения. В этом примере используются
Analytics.Read
иApplication.Read.All
делегированные разрешения и разрешения приложения. Замените значения в "области" значениями всех делегированных разрешений Microsoft Graph, которые необходимо настроить для приложения.Запрос должен быть похож на следующий пример:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=Analytics.Read+Application.Read
Используйте MSAL.js. Замените значения в "области" значениями всех делегированных разрешений Microsoft Graph, которые необходимо настроить для приложения.
const Request = { scopes: ["openid", "profile"], loginHint: "example@domain.net" }; myMSALObj.ssoSilent(Request) .then((response) => { // your logic }).catch(error => { console.error("Silent Error: " + error); if (error instanceof msal.InteractionRequiredAuthError) { myMSALObj.loginRedirect(loginRequest); } });
Предоставление согласия на добавление разрешений для корпоративного приложения
После добавления разрешений в приложение пользователи или администраторы должны предоставить согласие новым разрешениям. Пользователи, не являющиеся администраторами, видят запрос на согласие при входе в приложение. С другой стороны, пользователи администратора могут предоставить согласие на новые разрешения от имени всех пользователей в своей организации при первом входе в приложение или в Центре администрирования Microsoft Entra.
Если добавленные разрешения требуют согласия администратора, необходимые действия зависят от типа приложения:
- Однотенантное приложение и мультитенантное приложение в домашнем клиенте: пользователь должен войти как минимум роль администратора привилегированных ролей и предоставить согласие на уровне клиента.
- Мультитенантные приложения в клиентах клиента: пользователь видит новые запросы на согласие при следующей попытке входа. Если разрешения требуют только согласия пользователя, пользователь может предоставить согласие. Если разрешения требуют согласия администратора, пользователь должен обратиться к администратору, чтобы предоставить согласие.
Остановка запроса неиспользуемых разрешений
Удаление разрешений может снизить риск предоставления конфиденциальных данных или компрометации безопасности и упростить процесс согласия для пользователей или администраторов. Если вашему приложению больше не требуется разрешение, следует запретить приложению запрашивать его, удалив разрешение на доступ к необходимым ресурсам и коду регистрации приложения. Например, приложение, которое больше не отправляет Уведомления по электронной почте может удалить Mail.ReadWrite
разрешение.
Внимание
Удаление разрешения из регистрации приложения не автоматически отменяет разрешения, которые уже предоставлены приложению. Вам нужно вручную отозвать разрешения. Дополнительные сведения см. в разделе "Отзыв согласия" для удаленных разрешений для корпоративного приложения этой статьи.
Прекращение запроса разрешений для статического согласия
Чтобы остановить запрос разрешений, требующих статического согласия, необходимо удалить разрешение из области Регистрация приложений. Администратор клиента также должен отозвать разрешение на панель корпоративных приложений . Дополнительные сведения о том, как отозвать разрешения, предоставленные корпоративному приложению, см. в разделе "Отмена разрешений" для корпоративного приложения.
В этом разделе описано, как прекратить запрашивать разрешения для статического согласия.
Разрешения можно удалить из статического согласия двумя разными способами в Центре администрирования Microsoft Entra:
Вариант 1. В области разрешений API
- Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений или владелец приложения.
- Перейдите к приложениям >identity>Регистрация приложений> All.
- Найдите регистрацию приложения, из которой нужно удалить разрешения, и выберите его.
- Удалите разрешения из области разрешений API:
Вариант 2. Из манифеста приложения
- В области навигации слева в группе меню "Управление " выберите "Манифест". Откроется редактор, позволяющий напрямую редактировать атрибуты объекта регистрации приложения.
- Тщательно редактируйте
requiredResourceAccess
свойство в файле манифеста приложения. - Удалите ненужные разрешения из
resourceAppId
свойства иresourceAccess
свойства. - Сохранение изменений.
Чтобы выполнить следующие действия по удалению разрешений, вам потребуются следующие ресурсы и привилегии:
- Запустите HTTP-запросы в выбранном инструменте, например в приложении или в обозревателе Graph.
- Вызовите API по крайней мере администратором облачных приложений или владельцем регистрации целевого приложения.
- Приложение, используемое для внесения этих изменений, должно быть предоставлено
Application.ReadWrite.All
разрешение.
Определите разрешения для приложения.
Например, чтобы запретить приложению запрашивать разрешения Microsoft Graph, определять разрешения Microsoft Graph для приложения, их идентификаторы разрешений и роли приложения (разрешения приложения) или делегированные разрешения.
Удалите нежелательные разрешения Microsoft Graph из приложения. В следующем примере вызывается API приложения обновления, чтобы удалить нежелательные разрешения Microsoft Graph из регистрации приложения, определяемого примером идентификатора
00001111-aaaa-2222-bbbb-3333cccc4444
клиента. В этом примере приложение имеетAnalytics.Read
иUser.Read
Application.Read.All
. Нам нужно удалитьAnalytics.Read
и делегировать разрешения иApplication.Read.All
разрешения приложения. Microsoft Graph определяется как объект ServicePrincipal с00000003-0000-0000-c000-000000000000
его глобально уникальнымAppId
и Microsoft Graph как егоDisplayName
иAppDisplayName
.PATCH https://graph.microsoft.com/v1.0/applications/00001111-aaaa-2222-bbbb-3333cccc4444 Content-Type: application/json { "requiredResourceAccess": [ { "resourceAppId": "00000003-0000-0000-c000-000000000000", "resourceAccess": [ { "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6 ", "type": "Scope" } ] } ] }
Остановка запроса разрешений с динамическим согласием
Если необходимо удалить делегированные разрешения из динамического запроса согласия, укажите параметр области, оставив разрешения, которые требуется удалить. Удаление разрешений гарантирует, что приложение не вызывает соответствующий API.
Чтобы остановить запрос разрешений с динамическим согласием, выполните следующие действия.
- Использование Microsoft Graph: удалите нежелательные делегированные разрешения Microsoft Graph из параметра "области". В этом примере приложение запрашивает три разрешения —
Analytics.Read
User.Read
иApplication.Read.All
. Делегированное разрешение и разрешениеAnalytics.Read
Application.Read.All
приложения больше не требуются для этого приложения. Для этого требуетсяUser.Read
только .
Запрос должен быть похож на следующий пример:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=User.Read
с помощью MSAL.js. Удалите нежелательные делегированные разрешения Microsoft Graph в области.
const Request = { scopes: ["openid", "profile"], loginHint: "example@domain.net" }; myMSALObj.ssoSilent(Request) .then((response) => { // your logic }).catch(error => { console.error("Silent Error: " + error); if (error instanceof msal.InteractionRequiredAuthError) { myMSALObj.loginRedirect(loginRequest); } });
Отзыв согласия на удаленные разрешения для корпоративного приложения
После удаления разрешений из регистрации приложения администратор в клиенте также должен отозвать согласие на защиту данных вашей организации. Если разрешение на удаление требует согласия администратора, необходимые действия зависят от типа приложения:
- Однотенантное приложение и мультитенантное приложение в домашнем клиенте. Для одного приложения клиента обратитесь к администратору клиента, чтобы отозвать разрешения, уже предоставленные приложению. Для мультитенантного приложения обратитесь к администраторам всех клиентов, где находятся экземпляры приложения, чтобы отозвать разрешения, предоставленные корпоративному приложению. Отмена согласия на удаленные разрешения гарантирует, что приложение не поддерживает доступ через удаленное разрешение.
- Мультитенантные приложения в клиентах клиентов: убедитесь, что вы взаимодействуете с клиентами, чтобы отозвать разрешения через объявления, блоги и любые другие каналы коммуникации.
Для отдельных клиентов и мультитенантных приложений пользователи, не являющиеся администраторами в клиентах, где разрешено согласие пользователя, могут использовать портал MyApps для отзыва согласия на разрешения, которые они ранее предоставили. Дополнительные сведения о том, как конечные пользователи могут отозвать разрешения на портале MyApps, см. в разделе "Отзыв согласия пользователя".
Замена разрешения
Необходимо заменить разрешение с высоким уровнем привилегий, если достаточно менее привилегированного разрешения.
Замена разрешений также может снизить риск предоставления конфиденциальных данных или компрометации безопасности и, таким образом, улучшить взаимодействие с пользователем и доверие. Если ваше приложение использует разрешение с высоким уровнем привилегий, например Directory.ReadWrite.All
, следует рассмотреть, достаточно ли менее привилегированное разрешение, например User.ReadWrite.All
, достаточно для функциональности приложения.
Примечание.
При изменении запрошенных разрешений приложения для статического согласия клиенту потребуется выполнить повторное согласование. Акт повторного уведомления отменяет все ранее предоставленные разрешения и предоставляет согласие на новые. При изменении запрошенных разрешений приложения для динамического согласия ранее предоставленные разрешения не отзываются. Клиент должен отозвать разрешения вручную.
Чтобы заменить разрешение, необходимо удалить ненужные разрешения и добавить альтернативный. Действия похожи на те, которые описаны в разделе "Остановка запроса неиспользуемых разрешений " и добавление разделов разрешений этой статьи.