Как создать служебную учетную запись в Windows Server 2012 R2

И снова здрасьте, работа — а что есть лучше нового места работы — это новое место работы. Здесь я узнал (до этого никогда не использовал), что для нужд сервисов, т.е. от имени кого его(их) запускать введена компанией Microsoft технология управляемых служебных записей (аббревиатура MSA - Managed Service Accounts). Что самое интересное данная технология появилась еще на Windows Server 2008 R2, но я нигде ее не видел применения. А здесь она используется во всю. Раз так я тоже хочу ее применять, ведь это безопасность компрометации системных учетных записей.

Достоинства:

  • У учетной записи MSA пароль сгенерирован системой и длина его 240 символов.
  • Пароль меняется автоматические (по дефолту каждые 30 дней)
  • Никак не сохраняется в системе

Требования к использованию:

  • Уровень схемы AD = Windows Server 2012
  • Права Domain Admins
  • На контроллере домена должна присутствовать служба Microsoft Key Distribution Service (Служба распространения ключей)
  • PowerShell-модуль для управления Active Directory

Служба задействующая gMSA (gMSA — Group Managed Service Accounts) поддерживается SQL Server 2008 R2 SP1, 2012;IIS; AD LDS; Exchange 2010/2013

На заметку: MSA pre-Windows Server 2012, Windows Server 2012 released gMSA (group Managed Service Accounts). gMSA should support SQL Serve.

  • MSA – Managed Service Accounts (MSA)
  • gMSA – Group Managed Service Account (gMSA)

В наличии домен контроллер

srv-dc.polygon.local (OC: Windows Server 2012 R2 Std)

Login: ekzorchik (Group: Domain Admins)

Шаг №1: Для создания учетной записи gMSA создаю корневой ключ KDS (KDS root key) на домен контроллере.

Win + R -> Command Prompt (Admin) - powershell

1234567891011C:\Windows\system32\powershell PS C:\Windows\system32> Add-KdsRootKey -EffectiveImmediately Guid —- f88a882-11ad-d305-6c00f1708ea3 PS C:\Windows\system32>

Но как бы есть, но ключ заработает только через 10 часов, после окончания репликации. Так не пойдет, ускорим данный процесс:

1234567PS C:\Windows\system32> Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10)) Guid —- ffa75621-c6b0-1ebe-4f42-b12aeb2c73b4

Шаг №2: Проверяю, что корневой ключ KDS создался:

1PS C:\Windows\system32> Get-KdsRootKey
Проверяю, что корневой ключ KDS создался:

Шаг №3: Чтобы создать учетную запись MSA. (ограничена одним каким-либо сервером)

Win + X -> Command Prompt (Admin)

123C:\Windows\system32> powershell PS C:\Windows\system32> get-host
Версия PowerShell на сервере Windows Server 2012 R2 Std
1PS C:\Windows\system32> New-ADServiceAccount -Name msasql -RestrictToSingleComputer
  • -Name -> имя создаваемой сервисной учетной записи
  • -RestrictToSingleComputer -> Создание учетной записи действие которой ограничено одним каким-либо сервером

После чего проверяю, что в домене в сервисном OU=Managed Service Accounts появилась созданная учетная запись

Win + X – Control Panel – Administrative Tools – Active Directory Users and Computers

В домене появилась созданная системная учетная запись

Задействуем снова консоль powershell и получим информацию о созданной учетной записи msasql:

123PS C:\Windows\system32> Get-ADServiceAccount msasql (краткая информация) PS C:\Windows\system32> Get-ADServiceAccount msasql -properties * (расширенная информация)

Шаг №4: Чтобы создать учетную запись gMSA. (Group Managed Service Account). Групповая учетная запись, ограниченная применением группой, в которую включены несколько компьютеров:

1PS C:\Windows\system32> New-ADServiceAccount -Name “gmsasql” -DNSHostName “srv-dc.polygon.local” -PrincipalsAllowedToRetrieveManagedPassword srv-sql$
  • -Name "gmsasql" -> имя создаваемой учетной записи gMSA
  • -DNSHostName -> имя которое для учетной записи будет в формате <name><domain suffix>

Т.к. по умолчанию период действия пароля ограничен 30 днями, можно его увеличить, к примеру до 90 дней перед автоматической сменой в примере выше указав ключ “-ManagedPasswordInvervalInDays” 90. (Кавычки не указываем)

Задействуем снова консоль powershell и получим информацию о созданной учетной записи gmsasql:

123PS C:\Windows\system32> Get-ADServiceAccount gmsasql (краткая информация) PS C:\Windows\system32> Get-ADServiceAccount gmsasql -properties * (расширенная информация)

Также увидеть воочию созданную системную учетную запись нужно запустить оснастку Active Directory Users and Computer, нажать View - Advanced Features.

В домене создана групповая системная учетная запись

На заметку: Как учит Microsoft и Best Practice – один сервис = одна учетная запись, а не использовать одну везде и для всех случаев. Да удобно, но правильно так, к тому же обязательно составлять заметку как настроен сервис и какие учетные записи применяются.

Шаг №5: Помимо явного указания сервера к которому привязывается групповая системная учетная запись (gMSA) можно привязать к доменной группе которая включает в себя FQDN—имена систем:

1PS C:\Windows\system32> dsadd group “CN=sqlserver,OU=IT,DC=polygon,DC=local”

после добавляем в эту группу систему srv-sql

Создаем доменную группу и включаем в нее систему
12345PS C:\Windows\system32> Uninstall-ADServiceAccount -Identity ‘gmsasql’ PS C:\Windows\system32> Set-ADServiceAccount -Identity gmsasql ` -PrincipalsAllowedToRetrieveManagedPassword sqlserver

Проверять к каким компьютерам или группе компьютеров привязана системная учетная запись gMSA:

1PS C:\Windows\system32> Get-ADServiceAccount -Identity gmsasql -Properties PrincipalsAllowedToRetrieveManagedPassword
Проверять к каким компьютерам или группе компьютеров привязана системная учетная запись gMSA:

Шаг №6: Перед тем как прописать системную учетную запись (MSA) нужно установить командлеты PowerShell для работы Active Directory:

Т.к. одиночная и групповая системная учетная запись созданы выше теперь нужно прописать её(их) на конкретном сервере(рах):

Система: srv-sql.polygon.local (Windows Server 2012 R2 Std English)

Авторизуюсь на ней под учетной записью Login: ekzorchik Group:"Domain Admins"

Win + X -> Command Prompt (Admin) -> powershell

1PS C:\Windows\system32> Install-WindowsFeature -Name “RSAT-AD-PowerShell”

На заметку: если добавить ключ «fl«, то вывод будет не в табличном режиме, а в строковом.

1PS C:\Windows\system32> Install-ADServiceAccount -Identity “msasqm”

После обязательно проверяем работу учетной записи:

1PS C:\Windows\system32> Test-ADServiceAccount -Identity “msasqm”
  • True – статус означает, что учётная запись установлена на сервере.
  • False – статус означает, что учётная запись не привязана в AD к системе на которой выполняем проверку

У меня статус True.

1PS C:\Windows\system32>

Если открыть свойства системы srv-sql и перейти во вкладку Attribute Editor в атрибуте msDS-HostServiceAccount будет привязка к системной учетной записи CN=msasql,CN=Managed Service Accounts,DC=polygon,DC=local

Далее нужно на системе srv-sql через gpedit.msc указать что системную учетную запись msasql можно задействовать в роли указания, как запуск службы от ее имени.

Win + R -> gpedit.msc & Win + X – Run -> gpedit.msc – Local Computer Policy – Computer Configuration – Windows Settings – Security Settings – Local Policies – User Rights Assignment

  • Log on as a batch job: прописываем системную учетную запись
  • Log on as a service: прописываем системную учетную запись
Даем права системной учетной записи на запуск от имени и как командный файл

Все можно настраивать сервисы и указывать что запуск их будет происходить от имени msasql$, а пароль не указываем.

Шаг №7: Как прописать групповую системную учетную запись (gMSA) нужно установить командлеты PowerShell для работы Active Directory на сервер srv-sql и отредактировать локальную групповую политику.

Win + X – Command Prompt (Admin) – PowerShell

123PS C:\Windows\system32> New-ADServiceAccount -Name “gmsasql” -DNSHostName “srv-dc.polygon.local” -PrincipalsAllowedToRetrieveManagedPassword sqlserver PS C:\Windows\system32> Install-WindowsFeature -Name “RSAT-AD-PowerShell”

Шаг №8: Чтобы найти все учетные записи MSA & gMSA в домене, поиск ведем под учетной записью вхожей в группу Domain Admins на домен контроллере:

Win + X – Command Prompt (Admin) – PowerShell

1PS C:\Windows\system32> Get-ADServiceAccount -Filter *
Найти все системные учетные записи в домене

Шаг №9: Как сбросить пароль на системную учетную запись (Выполняем под учетной записью вхожей в группу Domain Admins на той системе на которой используется системная учетная запись):

Win + X – Command Prompt (Admin) – PowerShell

123PS C:\Windows\system32> Get-ADServiceAccount -Identity msasql -Properties passwordlastset | select Name,ObjectClass,PasswordLastSet | ft PS C:\Windows\system32> Reset-ADServiceAccountPassword -Identity msasql

Если запустить эту команду на другой системе с которой нет привязки, то получите ошибку вида «Referenced service account is not installed on this computer.

Шаг №10: Чтобы удалить системную учетную запись или групповую.

Удаляем учетную запись MSA с серверов (к примеру на srv-sql), где она была проинсталлирована командой Install-ADServiceAccount:

1234567891011PS C:\Windows\system32> hostname srv-sql PS C:\Windows\system32> Test-ADServiceAccount -Identity “msasql” True PS C:\Windows\system32> Test-ADServiceAccount -Identity “gmsasql” True
Удаляем системную учетную запись
1234567PS C:\Windows\system32> Uninstall-ADServiceAccount msasql PS C:\Windows\system32> Test-ADServiceAccount -Identity “msasql” False WARNING: The Managed Service Account msasql is not linked with any computer object in the directory

После проверяем что в свойствах компьютера srv-sql, вкладка Attribute Editor (На домен контроллере) атрибут msDS-HostServiceAccount принял дефолтное значение <not set>, т.е. не назначено.

После удаления системной учетной записи компьютер не связан с нею

(on srv-dc.polygon.local)

123456789PS C:\Windows\system32> Remove-ADServiceAccount -Identity msasql Are you sure you want to perform this action? Performing the operation “Remove” on target “CN=msasql,CN=Managed Service Accounts,DC=polygon,DC=local”. Нажимаю на клавиатуре клавишу “A” и нажимаю <ENTER> PS C:\Windows\system32>

Удаляем (из под доменной учетной записи с правами Domain Admins) учетную запись gMSA с серверов (к примеру на srv-sql) указанных явно или назначенную на доменную группу с вхожими в нее системами:

1234567PS C:\Windows\system32> Test-ADServiceAccount -Identity “gmsasql” True PS C:\Windows\system32> Uninstall-ADServiceAccount gmsasql PS C:\Windows\system32> Remove-ADServiceAccount -Identity ‘gmsasql’
Удаляем групповую системную учетную запись

Работу заметки на Windows Server 2016 & Server 2019 не проверял, просто пока нет надобности.

Заметка будет дополняться если возникнет такая необходимость.

Пока на этом, собственно, все, с уважением автор блога Олло Александр aka ekzorchik.