Управляемые учетные записи служб (Managed Service Accounts) появились еще в Windows Server 2008 R2 и стали настоящим спасением для администраторов SQL Server, как простой механизм автоматического управления паролями сервисных записей и упрощения управления SPN. Теперь задача сохранения и управления паролями служебных учётных записей ушла в прошлое. Однако основным ограничением технологии MSA была невозможность использования одной учетной записи сервиса на нескольких серверах домена. Для каждого сервера записи приходилось создавать отдельный аккаунт MSA, что делало эту технологию непригодной для использования в кластерных сценариях.
Group Managed Service Accounts в Windows Server 2012
В Windows Server 2012 появился функционал групповых управляемых учетных записей — Group Managed Service Accounts (gMSA), позволяющий использовать одну и ту же учетку одновременно на нескольких серверах, что особо актуально в кластерных конфигурациях SQL Server. После настройки gMSA задача смены пароля (по умолчанию каждые 30 дней) возлагается на Active Directory и выполняется автоматически без участия администратора gMSA и необходимости перезапуска служб SQL Server.
Пароли для учетных записей gMSA генерирует и управляет имя служба Key Distribution Service (KDS, kdssvc.dll) на контролерах домена Active Directory. Это позволяет нескольким серверам Windows использовать одну и ту же учетную запись gMSA, причем запрос пароля доступен только определенному списку учетных записей компьютеров домена.
Учетные записи Group Managed Service Account можно настроить только на хостах с ОС не ниже Windows Server 2012, кроме того имеется ряд других ограничений:
- Функциональный уровень домена AD должен быть не менее Windows Server 2012 (при этом не обязательно апгрейдить все DC с Windows Server 2008/R2);
- Необходимо создать корневой ключ для Key Distribution Service (https://technet.microsoft.com/en-us/library/jj128430.aspx) и дождаться его репликации между всеми контроллерами домена;
Теперь можно приступать к настройке аккаунта gMSA.
Создаем корневой ключ KDS
Если он еще не создан, необходимо создать корневой ключ KDS. Создать его можно с помощью командлета PowerShell Add-KdsRootKey. После создания ключа нужно подождать 10 часов до окончания его полной синхронизации между всеми контроллерами домена AD. В тестовой среде можно воспользоваться аргументов –EffectiveImmediately, чтобы можно было пользоваться ключом сразу:
Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))
Настройка группы доступа к gMSA в Active Directory
Теперь нужно создать новую группы AD, в которую будут включены все SQL сервера, которые будут пользоваться нашей учеткой gMSA. В нашем примере группа будет называться ProductionSQLServers.
После того, как группа создана добавим в нее учтены записи компьютеров с SQL Server. После чего, все эти сервера нужно будет перезагрузить.
Создаем новую групповую управляемую учетную запись gMSA
Для создания учетной записи gMSA нужно установить модуль ActiveDirectory Powershell. Создадим новую учётную запись PrdSQLgMSAsvc и привяжем ее к группе ProductionSQLServers.
New-ADServiceAccount -name PrdSQLgMSAsvc -DNSHostName PrdSQLgMSAsvc.contoso.com -PrincipalsAllowedToRetrieveManagedPassword “ProductionSQLServers”
Данная команда создаст новый аккаунт типа PrdSQLgMSAsvc и разрешит членам группы ProductionSQLServers получать доступ к паролю учетной записи в AD. В контейнере Managed Service Accounts должна появится новая учетка. Это видно из консоли AD Administrative Center:
Настройка gMSA на SQL серверах
Чтобы установить созданную учетную запись на SQL сервере и разрешить ему периодически сбрасывать пароль этого аккаунта без участия администратора, выполните команду:
Install-ADServiceAccount PrdSQLgMSAsvc
Проверить успешность установки можно следующей командой, если все настроено корректно, она вернет True.
Test-ADServiceAccount PrdSQLgMSAsvc
Созданную учетную запись можно использовать как для новых, так и для существующих экземпляров SQL Server.
При установке нового SQL Server с помощью мастера нужно указать, что служба должна запускаться из-под аккаунта CONTOSO\PrdSQLgMSAsvc$. Мастер не запросит у вас указать пароль этой учетной записи, а возьмёт его из AD.
Чтобы изменить сервисную учетную запись для уже установленного экземпляра SQL Server, откройте его свойства в консоли SQL Server Configuration Manager.
Нажмите кнопку Browse и аналогичным образом укажите, что службы должна запускаться из-под Contoso\PrdSQLgMSAsvc$ . Поле с паролем учетной записи заполнять так же не нужно, служба сама получит его из AD.
Осталось перезапустить службу.
Если выполняется установка сервера SQL из командной строки, аккаунт нужно указать так: SQLSVCACCOUNT=”Contoso\PrdSQLgMSAsvc$”