PowerShell

Переглянути та проаналізувати журнали запису (Outletification) користувачів у Microsoft 365/Azure AD

Переглянути та проаналізувати журнали запису (Outletification) користувачів у Microsoft 365/Azure AD

У цій статті ми покажемо, як дізнатися час останнього запису користувача в Azure AD та генерувати інші звіти про активність користувачів у своєму орендаря Microsoft за допомогою PowerShell (через AzureadPreview та Microsoft Grapha API).

Найпростіший спосіб побачити журнал активності користувача Azure - використовувати портал. Перейдіть на https: // портал.Лазур.Com -> Azure ad -> Користувачі -> Виберіть користувача -> Журнали -in -in -in. Вся історія про входи користувача з’явиться у відкритому таблиці.

Ви можете дізнатися час введення, операційну систему на пристрої користувача, місцезнаходження, агента користувача тощо.D. У таблиці ви можете отримати фільтри відповідно до різних параметрів, додавання/видалення стовпців та завантаження даних у файл CSV.

Однак якщо вам потрібно отримати інформацію на останньому вході для кількох або всіх користувачів, вам доведеться використовувати PowerShell. Існує два способи доступу до журналів введення користувачів в Azure:

Зміст:

Отримання історії автентифікації користувачів в Azure через API Microsoft Graph

Давайте спробуємо отримати журнали введення користувачів через API Microsoft Graph. Підключіться до свого орендаря Azure за допомогою API Microsoft Graph (детальні інструкції щодо регулювання доступу тут):

У налаштуваннях програми, за допомогою якої ви підключаєтесь до API Azure Graph, вам потрібно надати такі права: Аудитор.Читати.Все і Каталог.Читати.Все.


$ Application = "46692AD-F8A0-123F-8CCA-432102DE3BCF"
$ TenatdomainName = "26216542-465A-407E-A17D-2BB4C3E3313B"
$ Accessecret = "D-8JM3ZUG87DU-SYZD32K01Q.GKSSA3MH3V "
$ Body = @
Grant_type = "client_credentials"
Scope = "https: // графік.Microsoft.Com/.За замовчуванням "
client_id = $ applicationid
Client_secret = $ accessecret

$ ConnectGraph = inspoke -restmethod -Uri "https: // login.Microsoftonline.Com/$ tenatdomainname/oauth2/v2.0/Token "-Метод Пост -Борд $ body
$ token = $ connectGraph.Маркер доступу

Отримавши маркер, ви можете підключити API REST, який зберігає інформацію про входи користувачів:

$ Graphsigninlogs = "https: // графік.Microsoft.Com/v1.0/AuditLogs/Signins "
(Застосування -restmethod -headers@automization = "newer $ ($ token) -uri $ graphsignlogs -meethod get).Цінність

Перевірте, чи можна отримати дані в торгових точках в Azure:

Зверніть увагу, що API Microsoft Graph може повертатися не більше 1000 об'єктів. Ви можете, використовуючи Pagition, розбити результати на сторінку та обробити більше об'єктів у циклі @odata.Наступна лінія .

Тепер з Azure Graph Explorer (https: // розробник.Microsoft.Com/en-sus/graph/graph-explorer) Ви можете вибрати назву полів, які ви хочете побачити в історії про історію введення користувачів. Наприклад, я хочу побачити інформацію про звіту про користувача, операційну систему, програму Azure/Microsoft 365, що використовується користувачем та його місцезнаходженням (поля userdisplayname, userprinciplayname, місцезнаходження, ipaddress, palentapped).

У цьому прикладі я хочу отримати звіт про діяльність користувачів Azure за останні 90 днів:

$ SetDate = (Get-Date).Adddays (-90)
$ SetDate = get-date ($ setdate) -format yyyy-mm-dd
$ Graphsigninlogs = "https: // графік.Microsoft.Com/v1.0/AuditLogs/Signins "
$ Result = (invoke -restmethod -headers@automization = "носій $ ($ token)" -uri $ graphsigninlogs -method get).Значення | Виберіть -Object userDisplayName, userPrincipalName, AppDisplayName, ipaddress, Clientapped, SecudedEtail, Location, CreedDateTime | Що -Object $ _.CreeddeteTime -gt $ setdate
$ alluserhistory =@()
Foreach ($ resitem in $ result)
$ userHistory = new -Object psobject -property@
Користувач = $ resitem.userDisplayName
Upn = $ resitem.Userprincipalname
Asureappused = $ resitem.Appdisplayname
Usorapp = $ resitem.Клієнт
Ip = $ resitem.IP-адреса
Дата = $ resitem.CreedDateTime
OS = ($ Resitem.DeainedEtail).Операційна система
Браузер = ($ resitem.DeainedEtail).Браузер
City = ($ Resitem.Місцезнаходження).Місто
Країна = ($ resitem.Місцезнаходження).Країна

$ alluserhistory+= $ userhistory

Щоб вивантажити результат у файл CSV, виконайте:

$ alluserhistory | Export-CSV "C: \ PS \ azure_login_logs.CSV "-notypeInformation

Отриманий файл CSV має інформацію про активність всього користувача: з яких пристрої та місця, в яких він входив, які використовували програми Microsoft 365. Якщо потрібно, ви можете додати будь -які інші поля.

Щоб отримати час останнього входу для кожного користувача зі списку отриманого, виконайте команду:

$ alluserhistory | Група -Object UPN |%$ _.Група | Виберіть UPN, дата -Перст 1

Ви можете знайти всіх неактивних користувачів за вказаний період. Для цього вам потрібно отримати повний список користувачів UPN в Azure за допомогою API Graph та порівняти його з раніше отриманим списком користувачів, які були автентифіковані в Azure за останні 90 днів.

$ Grapuserurl = 'https: // графік.Microsoft.Com/v1.0/користувачі '
$ ALLUSERS = (Apploce -reporters -headers@automization = "Newer $ ($ token)" -uri $ grapuserurl -method get).Цінність
$ ALLUSERS = $ Allusers | Виберіть -Object @name = "upn"; Вираз = $ _.Userprincipalname.Знизити ()
$ activyUsers = $ alluserhistory | Виберіть UPN -Onique

Залишається порівняти два списки. Таким чином, використовуючи сценарій PowerShell, ви можете знайти неактивних користувачів у ліцензії Microsoft 365 та випуску.

Обробка журналів введення користувачів за допомогою команди get-azureadauditsigninlogs від Azureadpreview

Модуль AzureadPreview має окремий командлет Get-azureadauditsigninlogs Для отримання інформації про входи користувачів у Microsoft 365. Чомусь цей командир відсутній у продуктивному модулі Azuread PowerShell (мабуть, Microsoft вважає, що графічного API нам достатньо)).

Встановіть на комп’ютер модуль AzureadPreview:

Встановити -модуль asureadpreview -aLlowClobber

Підключіться до свого орендаря Azure через AzureadPreview:

Asureadpreview \ connect-azuread

Наступна команда поверне інформацію про останні 10 входів користувача до Azure та Microsoft 365

Get -azureadauditsigninlogs -filter "userprincipalname eq '[email protected] '—Топ 10 | Виберіть CreedDateTime, userPrincipAlName, IsInterActive, AppDisplayName, ipaddress, TokenissuerType, @Name =' deviceOS '; exmanse = $ _ _ _ _ _ _ _ _ _ _.Eviedetail.OperatingSystem | ft

За останні 3 дні ви можете отримати статистику на входах користувачів у Azure та експортувати її до файлу CSV:

$ SetDate = (Get-Date).Adddays (-3);
$ SetDate = get-date ($ setdate) -format yyyy-mm-dd
$ Array = get -azureadauditsigninlogs -filter "CreedDateTime gt $ setdate" | Виберіть userDisplayName, userPrincipAlName, AppDisplayName, ipaddress, ClientAppluse, name = 'deviceos'; Вираз = $ _.Eviedetail.OperatingSystem,@name = 'location'; Вираз = $ _.Місцезнаходження.Місто
$ Масив | Export-CSV "C: \ PS \ AzurePreview_login_logs.CSV "-notypeInformation

У Active Domain Active Domain ви можете збирати інформацію про вхід/вихід користувачів з журналів контролерів домену.
Як дізнатись диск UUID в Linux
Ми говоримо про те, що таке uuid і як його знайти. Що таке uuid? Для початку ми розберемося, що таке uuid і чому це взагалі може знадобитися. UUIID оз...
Увімкнемо дисплей заряду в відсотках iPhone
Ми говоримо про те, як відобразити зарядку у відсотках від різних моделей iPhone.  Відображення рівня заряду у відсотках для ідентифікатора обличчя i...
Подарунок від Nirsoft - сім нових комунальних послуг для адміністрації Windows
З моменту створення ресурсу Nirsoft Минуло рівно п’ятнадцять років, і весь цей час його розробники не перестали працювати над створенням корисних інст...