С тех пор, как мы в одной из прошлых заметок рассматривали процесс развёртывания HP Product Bulletin, прошло немало времени. За это время продукт успел побывать в фазе активной поддержки, после чего был "заморожен" со стороны HP и его обновления какое-то время не выпускались, затем уже в HPE провели его ребрендинг и снова вернули к жизни. Поэтому для тех, кто активно работает с оборудованием HP/HPE, на сегодняшний день этот продукт может быть всё ещё полезен. В этой заметке мы сделаем акцент на то, как развернуть актуальную версию HPE Product Bulletin Gateway таким образом, чтобы она выполнялась в контексте сервисной учётной записи Group Managed Service Account (gMSA).
Как я понял, в актуальной версии Product Bulletin в целях ребрендинга HP –> HPE была обновлена лишь графическая оболочка инсталлятора и самого приложения. При этом Backend приложения, судя по всему, изменён не был, так как у Product Bulletin Gateway остались все прежние "детские болезни", типа того, что служба HPPB_Gateway не приспособлена для работы в более или менее новых серверных ОС Windows Server и по прежнему требует интерактивного режима работы. Например, попытка запуска службы в Windows Server 2012 R2 приведёт к ошибке типа:
Log Name: System Source: Service Control Manager Event ID: 7030 Level: Error Description: The HPPB_Gateway service is marked as an interactive service. However, the system is configured to not allow interactive services. This service may not function properly.
При этом, даже если включить в ОС поддержку старых интерактивных служб и пытаться запустить службу от имени сервисной учётной записи, результат будет неутешительным.
Поэтому автоматизацию запуска процесса PB Gateway мы будем достигать путём создания задачи в планировщике задач (Task Scheduler), но уже не в контексте обычной доменной учётной записи, как это было рассмотрено ранее, а в контексте сервисной учётной записи gMSA.
Примеры основных приёмов работы с gMSA можно найти в соответствующем разделе Вики.
Создаём в домене Active Directory отдельную учётную запись gMSA:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" $server1 = Get-ADComputer "KOM-HPSW-SRV01" New-ADServiceAccount -Name "s-gMSAS01" -DNSHostName "s-gMSAS01.holding.com" ` -PrincipalsAllowedToRetrieveManagedPassword $server1 ` -ManagedPasswordIntervalInDays 60 ` -Path "OU=MSA,OU=Service Objects,OU=KOMI,DC=holding,DC=com"
Созданную учётную запись gMSA включаем в группу доступа в Интернет, чтобы у процесса PB Gateway была возможность загружать обновления файлов хранилища спецификаций оборудования HP/HPE.
Устанавливаем учётную gMSA запись на сервер:
Install-ADServiceAccount -Identity "s-gMSAS01"
Наделяем учётную запись gMSA минимально необходимыми правами на нашем сервере:
- Выдаём полные права доступа на ключ реестра: HKLM\SOFTWARE\Wow6432Node\HPE Product Bulletin Gateway
- Выдаём полные права на каталог установки PB Gateway:
"C:\Program Files (x86)\HPE Product Bulletin Gateway"
Практика показывает, что привилегия "Log on as a batch job", о которой мы писали ранее, в случае использования gMSA не требуется.
Чтобы убедиться в том, что выданных в системе прав достаточно и процесс Product Bulletin Gateway сможет корректно выполняться в контексте сервисной учётной записи gMSA, попробуем запустить процесс с помощью утилиты PsExec.
"C:\Temp\PsExec64.exe" -i -u "KOM\s-gMSAS01$" -p ~ "C:\Program Files (x86)\HPE Product Bulletin Gateway\Gateway.exe"
При первом запуске приложения в случае успешной настройки загрузится ~1.1GB спецификаций на оборудование HP/HPE
После этого мы можем открыть диалоговое окно настроек приложения и настроить дополнительные параметры, например, изменить расписание автоматического обновления каталога спецификаций из онлайн-каталога HPE.
В случае успешного запуска приложения в ручную, нам остаётся настроить автоматическую загрузку процесса Gateway.exe при старте ОС с Планировщика Task Scheduler.
Общую информацию о создании задачи Планировщика можно найти в Вики-статье: Как создать задание Планировщика Windows Task Scheduler от имени учётной записи MSA/gMSA в PowerShell
$Action = New-ScheduledTaskAction -Execute '"C:\Program Files (x86)\HPE Product Bulletin Gateway\Gateway.exe"' $Trigger = New-ScheduledTaskTrigger -AtStartup $SvcUser = New-ScheduledTaskPrincipal -UserID "KOM\s-gMSAS01$" -LogonType Password $Task = Register-ScheduledTask -TaskName "HPE Product Bulletin Gateway Auto-Start" -TaskPath "\IT Dept" -Action $Action -Trigger $Trigger -Principal $SvcUser # # Add 3 minutes delay from system startup # Delay format from https://en.wikipedia.org/wiki/ISO_8601#Durations # $Task.Triggers[0].Delay = "PT3M" $Task.Settings.ExecutionTimeLimit = "PT0S" $Task | Set-ScheduledTask
В нашем случае после создания задачи, в её свойства вносятся специфичные для задачи правки. А именно, в свойства триггера запуска при старте ОС перед запуском процесса добавляется небольшая задержка, например на 3 минуты. Если в триггер не добавить эту задержку выполнения при старте, то на этапе запуска задания мы рискуем получить ошибку типа:
Log Name: Microsoft-Windows-TaskScheduler/Operational Source: Microsoft-Windows-TaskScheduler Event ID: 101 Task Category: Task Start Failed Level: Error User: SYSTEM Description: Task Scheduler failed to start "\IT Dept\HPE Product Bulletin Gateway Auto-Start" task for user "(NONE)". Additional Data: Error Value: 2147944189.
Как я понял, связана эта ошибка с тем, что управляющий процесс Планировщика пытается выполнить задание в то время, как механизмы, поддерживающие аутентификацию учётных записей gMSA в домене Active Directory ещё не завершили свою инициализацию при старте ОС.
Помимо этого в свойствах задания нужно отключить настроенное по умолчанию ограничение (ExecutionTimeLimit) выполнения в количестве 72 часов (3 дней), иначе по истечении этого времени задача остановится и запущенный процесс будет терминирован системой.
После того, как задание Планировщика для автоматического запуска PB Gateway создано и проверена его работа, нам остаётся только создать "шару" для возможности доступа клиентов HPE Product Bulletin Client к обновляемому хранилищу спецификаций:
New-SmbShare -Name "HPEPB-Catalogs" -Path "C:\Program Files (x86)\HPE Product Bulletin Gateway\Catalogs" -FullAccess "Users" -CachingMode "None" -Description "HPE Product Bulletin Gateway Data Files for HPE Product Bulletin Clients"
При этом на уровне NTFS права на запись в этот каталог предоставлять не требуется, а достаточно иметь права на чтение для группы "Users". Исключением является только подкаталог \Clients\, в который клиенты Product Bulletin будут записывать свою статистику об использовании ПО. На этот каталог, как я понял, ещё в ходе установки Product Bulletin Gateway добавляется право полного доступа для группы "Everyone". Разумеется, эту привилегию можно сделать поскромней, удалив из ACL группу "Everyone" и добавив, например, группу "Users", членство в которой подразумевает, как минимум, явно аутентифицированных пользователей ("Authenticated Users"). И здесь на уровне файловой системы сервера в качестве дополнительной меры безопасности можно настроить квотирование для подкаталога \Clients\, чтобы у любого желающего не было возможности по сети переполнить диск сервера.
В завершении на нужном количестве клиентских компьютеров нам только остаётся установить клиентскую часть HPE Product Bulletin Client, в ходе установки которой будет указан соответствующий сетевой каталог хранения автоматически обновляемых спецификаций HPE:
По большому счёту описанные здесь особенности запуска процесса в контексте учётной записи gMSA могут быть применимы и к любым другим приложениям, запуск которых необходимо выполнять с помощью Планировщика заданий Windows.
Добавить комментарий