Как анализировать работу ваших Conditional Access политик

В рамках Azure Day Labs, который мы проводили в Новосибирске, у меня было очень интересное обсуждение о том, как работает Conditional Access и как можно собирать какие то данные о его работе.

Собственно для анализа каких то данных, у вас они должны быть. Это достаточно очевидно, но по сути это ключевой момент, так как из коробки вы можете получать только ограниченное количество информации через скрипты или другой экспорт данных из интерфейса Sign-in логов. Это может работать в определенных случаях, но не более.

Если же мы хотим иметь больше данных, то нам нужно найти способ экспорта данных куда то, где эти данные можно будет анализировать.

Майкрософт предлагает нам для этого два варианта:

  • Интеграция с Azure Log Analytics
  • Экспорт данных в стороннюю SIEM систему через Event Hub

Так как я не работал с последним вариантом, то расскажу только про интеграцию с Log Analytics и что мы с этого можем поиметь.

Для начала, нам необходимо создать или использовать существующий Log Analytics Workspace.

После его создания нужно будет зайти в настройки Azure AD и настроить необходимую интеграцию через несколько кликов. Далее данные будут уходить в Log Analytics и будут доступны для анализа. После включения пройдёт около 20 минут прежде чем вы начнёте видеть логи в Log Analytics.

Diagnostics settings 
R save 
X Discard Delete 
* Name 
Archive to a storage account 
Stream to an event hub 
V Send to Log Analytics 
Subscription 
Access to Azure Active Directory 
Log Analytics Workspace 
No workspaces in this subscription. 
o 
AuditLogs 
SignlnLogs 
In order to export Sign-in data, your organization needs Azure AD PI or P2 license. If you don't have 
a PI or P2, start a free trial.

Все теперь вы готовы погружаться в данные. Но если вы никогда не работали с Log Analytics, я крайне советую пройти бесплатный курс на Pluralsight по языку запросов Kusto, который как раз тут необходим.

Готовы? Ну поехали. Теперь специально для Сергея Короткова пойдет немного запросов с картинками.

Самое простое, давайте посмотрим сколько у нас было событий логина за последние 24 часа:

SigninLogs
| summarize count(CorrelationId) by bin(TimeGenerated, 10m)
| render barchart 

Это интересно, но теперь давайте добавим разбивку по разным приложениям.

SigninLogs
| summarize count(CorrelationId) by bin(TimeGenerated, 10m), AppDisplayName
| render barchart 

Становится интересно, а теперь давайте сопоставим количество успешных и неуспешных логинов из-за Conditional Access политик.

SigninLogs
| where ConditionalAccessStatus == "success" or ConditionalAccessStatus == "failure"
| summarize dcount(UserPrincipalName) by ConditionalAccessStatus, bin(TimeGenerated, 12h)

Кажется у меня проблема и что то идёт не так:) Но продолжим разбираться.

Теперь же приблизимся к более интересному и посмотрим информацию по CA политикам. Тут нужны будут некие махинации, почистить вывод.

SigninLogs
| where ConditionalAccessStatus == "success" or ConditionalAccessStatus == "failure"
//Раскрываем поля
| mv-expand ConditionalAccessPolicies
| extend CAPolicy = ConditionalAccessPolicies["displayName"]
| extend result = ConditionalAccessPolicies["result"]
| extend control = ConditionalAccessPolicies["enforcedGrantControls"]
//Формируем вывод
| summarize dcount(UserPrincipalName) by tostring(CAPolicy),ConditionalAccessStatus
| render barchart kind=stacked100 

Тут мы видим соотношение Failure/Success для каждой конкретной политики. Таким образом дальше мы можем копать вглубь и разбираться дальше.

Использование Log Analytics стало для меня реальным спасением в работе с Conditional Access политиками, так как всегда было мало возможностей для аналитики и мониторинга. Очень удобно использование для поиска проблем конкретных пользователей или общих проблем.

Например график ниже был назван “Oh shit graph”, который наглядно показал ситуацию, когда что то пошло не так.

Но постоянно ковырять логи и запускать запросы может быть неудобно. Для наглядности и удобства я вижу следующие варианты визуализации:

  • Можно сохранять как панели на заглавной portal.azure.com – подходит для вывода всегда важной информации.
  • Использовать в рамках Azure Workbook, где вы можете создать набор графиков и фильтров для отображения конкретной информации, например все для работы с Conditional Access
  • Запросы из Log Analytics можно экспортировать в Power BI и строить отчеты там с автоматическим обновлением раз в день.
  • Graphana – конечно же нет, я же не Антон Мосягин.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: