Области разрешений | Основные понятия API Graph
Область применения: API Graph | Azure Active Directory
API Graph предоставляет области разрешений доступа OAuth 2.0, которые используются для управления доступом приложения к данным каталога клиентов. Как разработчик вы настраиваете приложение с необходимыми областями разрешений. Обычно это делается на портале Azure. При входе в систему пользователи или администраторы могут разрешить или не разрешить вашему приложению доступ к данным их каталогов с настроенными вами областями разрешений. В связи с этим выбирайте области разрешений, предоставляющие минимальный уровень прав, необходимых вашему приложению. Дополнительные сведения о настройке разрешений для приложения и процессе получения согласия см. в статье Интеграция приложений с Azure Active Directory.
Важно!
Для доступа к ресурсам Azure Active Directory мы настоятельно рекомендуем использовать Microsoft Graph вместо API Azure AD Graph.Теперь наши усилия сфокусированы на разработке Microsoft Graph; дальнейшее продвижение API Azure AD Graph мы не планируем.Есть очень мало сценариев, в которых по-прежнему можно использовать API Azure AD Graph. Дополнительные сведения об этом см. в записи блога в центре разработчиков Office, где сравниваются решения Microsoft Graph и Azure AD Graph.
Основные понятия области разрешений
Области только для приложений и делегированные области
Области разрешений могут быть делегированными или предназначенными только для приложений. Области только для приложений (также называются ролями приложения) дают полный набор привилегий, предлагаемых областью. Обычно такие области используются приложениями, которые работают как службы без присутствия пользователя, выполнившего вход в систему. Делегированные области разрешений предназначены для приложений, в которых пользователь выполняет вход. Эти области делегируют права пользователя, выполнившего вход в приложение, и позволяют приложению действовать от имени этого пользователя. Фактически приложение получает минимальную комбинацию (пересечение) прав, которые предоставляются областью и которыми обладает пользователь, выполнивший вход. Например, если область разрешений предоставляет делегированные права на запись всех объектов каталога, а пользователь, выполнивший вход, имеет права доступа только на обновление его собственного профиля, приложение сможет записывать данные только в профиль пользователя, выполнившего вход в приложение, но не в другие объекты.
Полный и базовый профили для пользователей и групп
Полный профиль (или профиль) пользователя или группы включает все объявленные свойства сущности. Поскольку профиль может содержать конфиденциальные данные каталога, конфиденциальные или личные сведения, некоторые области ограничивают доступ приложения определенным набором свойств, который называется базовым профилем. Для пользователей базовый профиль включает только следующие свойства: отображаемое имя, имя и фамилия, фото и адрес электронной почты. Для групп базовый профиль содержит только отображаемое имя.
Сведения об области разрешений
В приведенной ниже таблице перечислены области разрешений API Graph и указано, какой доступ они предоставляют.
- В столбце Область указывается имя области. Имена областей имеют форму resource.operation.constraint, например Group.ReadWrite.All. Если указано ограничение All (Все), область предоставляет приложению возможность выполнять операцию (ReadWrite) со всеми указанными ресурсами (Группа) в каталоге; в противном случае область разрешает выполнять эту операцию только с профилем пользователя, выполнившего вход в приложение. Области могут предоставлять ограниченные права на выполнение указанной операции. Дополнительные сведения см. в столбце Описание.
- В столбце Разрешение указано, как отображается область на портале Azure.
- Столбец Описание указывает полный список предоставляемых областью прав. В случае делегированных областей приложение практически получает минимальную комбинацию (пересечение) прав, которые предоставляются областью и которыми обладает пользователь, выполнивший вход.
Область | Разрешение | Описание | Тип области | Требует ли согласия администратора |
---|---|---|---|---|
User.Read | Вход в приложение и чтение профиля пользователя | Позволяет пользователю выполнять вход в приложение, а приложению — считывать полный профиль пользователя, выполнившего вход. Полный профиль включает все объявленные свойства сущности User. Приложение не может считывать свойства навигации, такие как руководитель или подчиненные. Также позволяет приложению считывать следующие основные сведения об организации пользователя, выполнившего вход (с помощью объектов TenantDetail): идентификатор клиента, отображаемое имя клиента и проверенные домены. | делегированная | Нет |
User.ReadBasic.All | Чтение базовых профилей всех пользователей | Позволяет приложению считывать базовые профили всех пользователей в организации от имени пользователя, выполнившего вход. Базовый профиль пользователя включает следующие свойства: отображаемое имя, имя и фамилия, фото и адрес электронной почты. Для чтения групп, в которые входит пользователь, приложению также требуется разрешение Group.Read.All или Group.ReadWrite.All. | делегированная | Нет |
User.Read.All | Чтение полных профилей всех пользователей | Действует как разрешение User.ReadBasic.All за тем исключением, что позволяет приложению считывать полные профили всех пользователей в организации, а также свойства навигации, такие как руководитель и подчиненные. Полный профиль включает все объявленные свойства сущности User. Для чтения групп, в которые входит пользователь, приложению также требуется разрешение Group.Read.All или Group.ReadWrite.All. | делегированная | Да |
Group.Read.All | Чтение всех групп (предварительная версия) | Позволяет приложению считывать базовые профили всех групп в организации от имени пользователя, выполнившего вход. Приложение также может считывать базовые профили групп, в которые входит группа. Базовый профиль группы включает только ее отображаемое имя. Для чтения профилей членов группы приложению также требуется разрешение User.ReadBasic или User.Read.All. | делегированная | Да |
Group.ReadWrite.All | Чтение и запись всех групп (предварительная версия) | Позволяет приложению считывать полные профили всех групп в организации, а также создавать и обновлять группы от имени пользователя, выполнившего вход. Приложение также может считывать полные профили групп, в которые входит группа. Полный профиль включает все объявленные свойства сущности Group. Для чтения профилей членов группы приложению также требуется разрешение User.ReadBasic или User.Read.All. | делегированная | Да |
Device.ReadWrite.All | Чтение и запись данных любых устройств | Позволяет приложению выполнять чтение и запись всех свойств устройства без участия пользователя, выполнившего вход. Не разрешает создавать и удалять устройства, а также обновлять альтернативные идентификаторы безопасности устройств. | только для приложений | Да |
Directory.Read.All | Чтение данных каталога | Позволяет приложению считывать все данные в каталоге организации, включая пользователей, группы и приложения, а также связанные с ними свойства навигации. Примечание. Пользователи могут дать или не дать согласие на предоставление этого разрешения приложению, зарегистрированному в клиенте организации. | только для приложений, делегированная | Да |
Directory.ReadWrite.All | Чтение и запись данных каталога | Позволяет приложению считывать все данные в каталоге организации. Позволяет приложению создавать и обновлять пользователей и группы, а также обновлять их свойства навигации, но запрещает удалять пользователя или группу. Также позволяет приложению определять расширения схемы для приложений. Подробный список привилегий см. ниже в разделе Сведения о привилегиях Directory.ReadWrite.All. | только для приложений, делегированная | Да |
Directory.AccessAsUser.All | Доступ к каталогу от имени пользователя, выполнившего вход | Предоставляет приложению такой же доступ к данным в каталоге организации, как у пользователя, выполнившего вход. Примечание. Собственное клиентское приложение может получить согласие пользователя на предоставление этого разрешения, однако веб-приложению требуется согласие администратора. | делегированная | Да |
Примечание. По умолчанию, если приложение создается с помощью портала Azure, Azure AD присваивает ему делегированную область разрешений User.Read.
Сведения о привилегиях Directory.ReadWrite.All
Область разрешений Directory.ReadWrite.All предоставляет следующие привилегии:
- Чтение всех объектов каталога (объявленных свойств и свойств навигации)
- Создание и обновление пользователей
- Отключение и включение пользователей (но не администратора компании)
- Установка альтернативного идентификатора безопасности пользователя (но не администраторов)
- Создание и обновление групп
- Управление членством в группах
- Обновление владельца группы
- Управление назначениями лицензий
- Определение расширения схемы для приложений
- Примечание. Не даются права на сброс паролей пользователей.
- Примечание. Не даются права на удаление сущностей (включая пользователей и группы).
- Примечание. Исключается создание и обновление сущностей, не перечисленных выше. Сюда входят сущности Application, Oauth2PermissionGrant, AppRoleAssignment, Device, ServicePrincipal, TenantDetail, домены и т. д.
Сценарии области разрешений
В приведенной ниже таблице представлены области разрешений, необходимые приложению для выполнения определенных операций. Обратите внимание, что в некоторых случаях возможность приложения выполнять те или иные операции зависит от того, ограничивается ли область разрешений приложениями или является делегированной, а в случае делегированной области разрешений также от того, какими привилегиями обладает пользователь, выполнивший вход.
Сценарий | Требуемый доступ | Необходимая область разрешений |
---|---|---|
Вход и отображение плитку с именем и миниатюрной фотографией пользователя. | Чтение полного профиля пользователя, выполнившего вход. Чтение базовых данных организации. |
User.Read |
Базовый выбор людей. | Чтение базовых профилей всех пользователей от имени пользователя, выполнившего вход. | User.ReadBasic.All |
Выбор людей с полным профилем. | То же, что и выше, но с доступом к полным профилям пользователей от имени пользователя, выполнившего вход. | User.Read.All |
Навигатор по организационной диаграмме. | Чтение полных профилей всех пользователей, руководителей и подчиненных от имени пользователя, выполнившего вход. | User.Read.All |
Выбор людей, включающий группы для контроля доступа к приложению. Средство для просмотра групп и членства. |
Чтение базовых профилей всех групп и пользователей от имени пользователя, выполнившего вход. Чтение базовых профилей руководителя и подчиненных пользователей. Чтение базовых профилей членов группы пользователей. Чтение базовых профилей членов группы групп. Чтение базовых профилей членов групп. |
User.ReadBasic.All and Group.Read.All |
Отображение профиля пользователя, выполнившего вход, а также его руководителя, подчиненных и членов группы. | Операции me позволяют считывать: Полный профиль пользователя, выполнившего вход. Полный профиль руководителя и подчиненных пользователя, выполнившего вход. Базовый профиль групп, в которые входит пользователь, выполнивший вход. Примечание. Комбинация двух областей предоставляет более высокий уровень доступа, чем отмеченный здесь для операций me . |
User.Read.All и Group.Read.All |
Служба управления группами, которая позволяет пользователям создавать группы и управлять ими. | Чтение полных профилей всех групп и пользователей от имени пользователя, выполнившего вход. Чтение полных профилей руководителя и подчиненных пользователей. Чтение полных профилей членов группы пользователей. Чтение полных профилей членов группы групп. Чтение полных профилей членов групп. Создание и обновление групп и их свойств навигации (членов). |
User.Read.All и Group.ReadWrite.All |
Чтение всех объектов каталога (включая свойства навигации). | Directory.Read.All | |
Чтение всех объектов каталога (включая свойства навигации). Создание и обновление объектов пользователей и групп. Удаление пользователей и групп не допускается. Примечание. Здесь перечислены не все предоставляемые привилегии. |
Directory.ReadWrite.All | |
Действие от имени пользователя, выполнившего вход. | Чтение и запись объектов каталога (включая свойства навигации) от имени пользователя, выполнившего вход. | Directory.AccessAsUser.All |
Доступ по умолчанию для администраторов, пользователей и гостей
В приведенной ниже таблице описывается доступ, предоставляемый (глобальным) администраторам, пользователям и гостям в каталоге по умолчанию. Доступ по умолчанию может быть дополнительно расширен или ограничен на основе параметров конфигурации для каталога и (или) членства пользователя в одной или нескольких ролях каталога. Дополнительные сведения о настройке доступа пользователей и гостевых пользователей к данным каталога см. в статье Создание и изменение пользователей в Azure AD. Дополнительные сведения о доступе, связанном с различными ролями каталога, см. в статье Назначение ролей администратора в Azure AD.
Тип пользователя | Доступ |
---|---|
глобальный администратор | Чтение всех объектов каталога. Создание, обновление и удаление всех объектов каталога |
User (Пользователь) | Чтение всех объектов каталога. Создание приложений и связанных субъектов-служб. Обновление их профилей. Обновление групп, которыми они владеют (и свойства members). Обновление приложений и субъектов-служб, которыми они владеют. Удаление приложений и субъектов-служб, которыми они владеют. |
Гостевой пользователь | Чтение полного профиля. Чтение базовых профилей всех остальных пользователей. Чтение базовых профилей всех групп. Чтение приложений. Обновление некоторых свойств профиля. Недоступен поиск пользователей и групп (см. раздел Ограничения на поиск пользователей и групп для гостевых пользователей ниже). |
Ограничения на поиск пользователей и групп для гостевых пользователей
Возможность поиска пользователей и групп позволяет приложению искать любого пользователя или группу в каталоге клиентов, выполняя запросы к набору ресурсов users или groups (например https://graph.windows.net/myorganization/users?api-version=1.6
). И администраторы, и пользователи обладают такой возможностью. Гостевые пользователи — нет. Если вошедший в приложение пользователь является гостем, приложение (в зависимости от области разрешений) может прочитать профиль определенного пользователя, используя идентификатор объекта или имя участника-пользователя (UPN) либо группы, применяя соответствующий идентификатор объекта (например https://graph.windows.net/myorganization/users/241f22af-f634-44c0-9a15-c8cd2cea5531?api-version=1.6
). При этом оно не может выполнять запросы к набору ресурсов users или groups, которые теоретически могут запрашивать более одной сущности. Например, в зависимости от области разрешений приложение может читать профили пользователей или групп, полученные им по ссылкам в свойствах навигации, но не может запрашивать список всех пользователей или групп в каталоге.