Сервис Microsoft Graph API позволяет получать доступ к любым объектам в облаке Azure (Microsoft 365) через единую точку REST API (https://graph.microsoft.com). Скорее всего вы подумаете, что это должно быть интересно только веб программистам, но это не так. Доступ к некоторым данным, объектам или свойствам в Microsoft 365 можно получить только через Microsoft Graph. Администратору Azure для сбора аналитики, статистики и другой информации также периодически приходится использовать Microsoft Graph.
В этой статье мы покажем, как зарегистрировать свое приложение в Azure AD, получить токен для аутентификации, подключаться к различным ресурсам Microsoft 365 (Azure AD, Office 365, Intune, SharePoint, Teams, OneNote и т.д.) через RESTful из PowerShell с помощью командлета Invoke-RestMethod
. Microsoft Graph можно использовать как для получения данных, так и для управления объектами в Azure.
Для доступа к ресурсам в вашем тенанте Azure через Microsoft Graph нужно создать новое приложение Azure и разрешить ему получать доступ к различным объектам Azure.
azGraphPowerShellApp
; выберите кому можно использовать данное приложение: Accounts in this organizational directory only (tenantname only - Single tenant)
, и нажмите Register ; Для выполнения аутентификации в приложении можно использовать сертификат или секрет. Секрет представляет собой по сути автоматически генерируемый пароль, а имя пользователя — это идентфикатор приложения. Создадим секрет для нашего приложения.
Вставьте свои значения в переменные PowerShell
$ApplicationID = "46692ad-f8a0-123f-8cca-432102de3bcf"
$TenatDomainName = "26216542-465a-407e-a17d-2bb4c3e3313b"
$AccessSecret = "d-8jM3ZUG87du-syZd32k01q.gkssa3mH3v"
Для использования Microsoft Graph API из PowerShell не нужно устанавливать отдельные PowerShell модули (типа Azure AD ). Взаимодействие выполняется с помощью встроенного командлета Invoke-RestMethod
.
Для подключения к GraphApi нужно получить токен доступа. Следующий скрипт PowerShell позволяет аутенртфицироваться в вашем приложении и получить токен доступа к Microsoft Graph API.
$ApplicationID = "46692ad-f8a0-123f-8cca-432102de3bcf"
$TenatDomainName = "26216542-465a-407e-a17d-2bb4c3e3313b"
$AccessSecret = "d-8jM3ZUG87du-syZd32k01q.gkssa3mH3v"
$Body = @{
Grant_Type = "client_credentials"
Scope = "https://graph.microsoft.com/.default"
client_Id = $ApplicationID
Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
$token = $ConnectGraph.access_token
С этим токеном можно выполнять различные запросы к вашему тенанту Azure через GraphAPI.
Например, следующий скрипт позволяет вывести список всех групп в вашей Azure AD:
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value.displayName
Можно вывести дату создания группы в Azure AD :
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
$Groups=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value
$Groups | select displayName,createdDateTime
Вывести имя, UPN и email адрес пользователя:
$GrapUserUrl = 'https://graph.microsoft.com/v1.0/users'
$users=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapUserUrl -Method Get).value
$users | select displayName,userprincipalname,mail
The remote server returned an error: (403) Forbidden.
В рассмотренных примерах мы только читали данные из Azure AD с помощью метода GET. Но вы можете использовать методы POST, PUT, PATCH и DELETE для внесения измененияй. Например, можно создать пользователя в Azure AD, сбросить его пароль, изменить описание и т.д.
Для просмотра доступных свойства и методов Microsoft Graph API через браузер можно использовать Graph Explorer ( https://developer.microsoft.com/en-us/graph/graph-explorer ).
Install-Module Microsoft.Graph
). Но, мы показали, что в PowerShell можно обращаться к Microsoft Graph и напрямую. Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…
Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…
Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…
Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…
Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…
Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…