dahiko
01-11-2023, 14:37
Всем привет!
Есть такая задача - автоматизировать поиск измений в групповых политиках GPO. Т.к. стандарнтные средства Active Directory не показывают, что именно изменилось в GPO, а только сам факт изменения можно увидеть в логе, я решил написать что-то свое.
И так, у меня есть такая идея:
Экспортировать в HTML-отчет те GPO, которые я хочу отслеживать. Например так:
Get-GPOReport -Name "Default Security For Domain" -ReportType HTML -Path "C:\users\vasya\Desktop\GPOReport1.html"
Распарсить этот HTML-файл и сложить куда-то, например в БД. Пока не понимаю, как это будет выглядеть. Возможно в одну ячейчку в JSON формате все запихнуть. А возможно и сделать отдельную таблицу с столбцами для параметров GPO.
Далее отсжеживать изменение GPO по дате. Если поменялась, опять повторить пункты 1 и 2.
Затем сравнивать между собой два результата, чтобы понять ЧТО именно поменялось.
Вот я сейчас застрял на втором пункте и не понимаю, как это лучше сделать? Есть небольшой опыт в BASH и Powershell. Как написать такую регулярку, чтобы все разложила пополочкам, не понимаю. С моими навыками в BASH смогу точно выдернуть информацию из разделов GPO "Подробности", "Ссылки". Но разделы "Конфигурция конмпьюрета" и "Конфигурация пользователя" не смогу. Все усложняется тем, что в этих разделах внутри GPO может быть много политик - более тысячи запросто. А у каждой политики несколько значений параметра и вложенные в них подпараметры.
Пример 1.
В политике «Конфигурация компьютера\Политики\Конфигурация Windows\Параметры безопасности\Локальные политики/Параметры безопасности\Аудит\Аудит: аудит доступа глобальных системных объектов» может несколько значений Параметра: «Включено», «Отключено» или «Не определено».
Пример2.
В политике «Конфигурация компьютера\Политики\Административные шаблоны\Компоненты Windows/Политики автозапуска\Выключение автозапуска» может несколько значений Параметра: «Включено», «Выключено» или «Не определено». А так же у параметра может быть еще и вложенный параметр. В данном случае он называется «Отключить автозапуск:» и он тоже имеет несколько значений. Например "Все устройства".
И таких нюансов много, и не могу найти закономерность.
Примечания:
Делать простой DIFF двух HTML файлов построчно – не подходит. Так, как в одной строке в GPO много лишней информации, которая мешает. И приходится потом все равно глазами искать, что же именно было изменено. Пробовал - совсем не то, что нужно.
Перевести HTML в JSON пробовал разными онлайн сервисами - не подходит, потому что в JSON меняется структура и нет полного пути к конкретной политике. Например, из этого остается только это [U]«Аудит: аудит доступа глобальных системных объектов». И это совсем плохо, т.к. нет понимания где именно в GPO лежит эта политика. Так что сокрее всего нужно что-то кастомное.
Каждую GPO можно выгрузить еще и в XML. Но структура XML содержит не полную информацию, поэтому все таки приходится использовать HTML в момент выгрузки всех параметров GPO. Именно в HTML есть полный путь к конкретному пункту политики.
Если кто-то сталкивался с такой задачей, просьба подсказать. Если получиться правильно все распарсить, то смогу далее прикрутить к этому некий веб-интерфейс и вообще получится "конфетка".
Пример HTML файла можно взять тут (https://cloud.mail.ru/public/m6Dj/KwKmPnxDa)
Заранее спасибо!
P.S. Не предлагайте Policy Analyzer - не подходит.
Есть такая задача - автоматизировать поиск измений в групповых политиках GPO. Т.к. стандарнтные средства Active Directory не показывают, что именно изменилось в GPO, а только сам факт изменения можно увидеть в логе, я решил написать что-то свое.
И так, у меня есть такая идея:
Экспортировать в HTML-отчет те GPO, которые я хочу отслеживать. Например так:
Get-GPOReport -Name "Default Security For Domain" -ReportType HTML -Path "C:\users\vasya\Desktop\GPOReport1.html"
Распарсить этот HTML-файл и сложить куда-то, например в БД. Пока не понимаю, как это будет выглядеть. Возможно в одну ячейчку в JSON формате все запихнуть. А возможно и сделать отдельную таблицу с столбцами для параметров GPO.
Далее отсжеживать изменение GPO по дате. Если поменялась, опять повторить пункты 1 и 2.
Затем сравнивать между собой два результата, чтобы понять ЧТО именно поменялось.
Вот я сейчас застрял на втором пункте и не понимаю, как это лучше сделать? Есть небольшой опыт в BASH и Powershell. Как написать такую регулярку, чтобы все разложила пополочкам, не понимаю. С моими навыками в BASH смогу точно выдернуть информацию из разделов GPO "Подробности", "Ссылки". Но разделы "Конфигурция конмпьюрета" и "Конфигурация пользователя" не смогу. Все усложняется тем, что в этих разделах внутри GPO может быть много политик - более тысячи запросто. А у каждой политики несколько значений параметра и вложенные в них подпараметры.
Пример 1.
В политике «Конфигурация компьютера\Политики\Конфигурация Windows\Параметры безопасности\Локальные политики/Параметры безопасности\Аудит\Аудит: аудит доступа глобальных системных объектов» может несколько значений Параметра: «Включено», «Отключено» или «Не определено».
Пример2.
В политике «Конфигурация компьютера\Политики\Административные шаблоны\Компоненты Windows/Политики автозапуска\Выключение автозапуска» может несколько значений Параметра: «Включено», «Выключено» или «Не определено». А так же у параметра может быть еще и вложенный параметр. В данном случае он называется «Отключить автозапуск:» и он тоже имеет несколько значений. Например "Все устройства".
И таких нюансов много, и не могу найти закономерность.
Примечания:
Делать простой DIFF двух HTML файлов построчно – не подходит. Так, как в одной строке в GPO много лишней информации, которая мешает. И приходится потом все равно глазами искать, что же именно было изменено. Пробовал - совсем не то, что нужно.
Перевести HTML в JSON пробовал разными онлайн сервисами - не подходит, потому что в JSON меняется структура и нет полного пути к конкретной политике. Например, из этого остается только это [U]«Аудит: аудит доступа глобальных системных объектов». И это совсем плохо, т.к. нет понимания где именно в GPO лежит эта политика. Так что сокрее всего нужно что-то кастомное.
Каждую GPO можно выгрузить еще и в XML. Но структура XML содержит не полную информацию, поэтому все таки приходится использовать HTML в момент выгрузки всех параметров GPO. Именно в HTML есть полный путь к конкретному пункту политики.
Если кто-то сталкивался с такой задачей, просьба подсказать. Если получиться правильно все распарсить, то смогу далее прикрутить к этому некий веб-интерфейс и вообще получится "конфетка".
Пример HTML файла можно взять тут (https://cloud.mail.ru/public/m6Dj/KwKmPnxDa)
Заранее спасибо!
P.S. Не предлагайте Policy Analyzer - не подходит.