Администрирование групповых управляемых служебных учетных записей (gMSA)
В Эллес реализована поддержка базовой функциональности по работе с групповыми управляемыми служебными учетными записями (Group Managed Service Account, gMSA).
| В текущей версии функциональность gMSA доступна при работе контроллеров Эллес в составе домена, развернутого с помощью Microsoft Active Directory Domain Services. |
Общие сведения
Учетные записи gMSA позволяют запускать службы на серверах в домене Эллес с аутентификацией по протоколу Kerberos без необходимости управлять паролями вручную.
Поддержка gMSA обеспечивает:
-
формирование и смену паролей для учетных записей gMSA в автоматическом режиме;
-
дополнительную защиту от несанкционированного изменения учетной записи, от имени которой запускается служба, а также от несанкционированного доступа к паролю такой учетной записи;
-
автоматическую синхронизацию паролей между машинами — участниками домена;
-
возможность делегировать управление учетными записями администраторам домена;
-
возможность запускать службу от имени единой учетной записи, независимо от того, на какой машине — участнике домена она будет выполняться.
| Полноценная поддержка gMSA доступна в доменах и лесах с функциональным уровнем 2012 и выше. |
Принцип работы
Чтобы контроллеры домена начали формировать пароли для учетных записей gMSA, должен быть сгенерирован корневой ключ (root key). Данный ключ сохраняется в контейнере CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=domain,DC=name службы каталогов и реплицируется на все контроллеры домена.
Корневой ключ представляет собой объект класса msKds-ProvRootKey с ассиметричным ключом; длина открытой (msKds-PublicKeyLength) и закрытой (msKds-PrivateKeyLength) части ассиметричного ключа используется для создания секретов с помощью алгоритма симметричного шифрования.
Объекты gMSA имеют класс msDS-GroupManagedServiceAccount и хранятся в партиции по умолчанию службы каталогов и реплицируются на все контроллеры домена.
Работа с объектами gMSA в службе каталогов определяется следующими атрибутами:
-
msDS-GroupMSAMembership— используется для проверки того, что запрашивающая пароль к gMSA машина — участник домена имеет на это право; -
msDS-ManagedPasswordId— идентификатор текущего пароля для gMSA; -
msDS-ManagedPasswordPreviousId— идентификатор предыдущей версии пароля; -
msDS-ManagedPasswordInterval— интервал автоматической смены пароля; -
msDS-ManagedPassword— поле типа BLOB для пароля.Атрибут принадлежит к типу constructed и его значение вычисляется каждый раз при запросе на его чтение. Любой контроллер домена с правом на запись может вычислить значение этого атрибута, и значение это всегда будет одинаково.
За генерацию паролей для gMSA и их синхронизацию между серверами в домене отвечает служба распространения ключей (Key Distribution Service, KDS). Данная служба реализует криптографические функции для получения пароля на основе криптографических материалов, включающих в себя корневой ключ.
Также служба KDS выполняет смену пароля по запросу контроллера домена, чем обеспечивается дополнительная безопасность. Период ротации ключей по умолчанию он составляет 30 дней.
Ключи и пароли распространяются по серверам домена по протоколу Kerberos.
Машины — участники домена, на которых запускаются службы от имени gMSA, проходят аутентификацию Kerberos на контроллерах домена Эллес с помощью пароля gMSA, получают билеты Kerberos TGT (Ticket-Granting Ticket), а затем используют TGT для запроса сервисных билетов Kerberos.
Поддержка в Эллес
Эллес предоставляет:
-
инструменты для работы с корневыми ключами;
-
инструменты для работы с учетными записями gMSA;
-
инструменты для управления разрешениями на использование (чтение пароля) учетной записи gMSA;
-
возможность выполнения операций с паролями не только с использованием локальной БД службы каталогов (sam.ldb), но и посредством аутентификации на удаленном сервере (опция
-H ldap://DC-NAME), включая:-
получение текущего и предыдущего паролей учетной записи gMSA;
-
получение билета Kerberos TGT для учетной записи gMSA с возможностью сохранения в локальном кэше.
-
Процесс настройки
В общем случае процесс настройки учетной записи gMSA в домене Эллес состоит из следующих шагов:
-
Создание и настройка корневого ключа (см. раздел «Создание корневого ключа»).
При создании домена Эллес с помощью подкоманды samba-tool domain provisionкорневой ключ создается автоматически. -
Создание и настройка учетной записи gMSA (см. раздел «Создание учетной записи gMSA»).
-
Настройка списка учетных записей машин — участников домена, на которых будет доступна для использования gMSA (см. раздел «Выдача разрешения на использование (чтение пароля) учетной записи gMSA»).
-
Настройка запуска служб на машинах — участниках домена от имени учетной записи gMSA.
Операции с корневыми ключами
Для работы с корневыми ключами с помощью утилиты samba-tool используется группа подкоманд domain kds root-key.
Операции доступны пользователям с правами администратора домена (член группы Domain Admins) или администратора предприятия (член группы Enterprise Admins).
Создание корневого ключа
Формат вызова:
samba-tool domain kds root-key create [-H <URL>] [options]
При создании ключу присваивается уникальный идентификатор (GUID), который должен в дальнейшем использоваться для работы с ним.
По умолчанию время начала периода действия корневого ключа совпадает с временем его создания. Существует возможность задать начало периода действия с помощью параметра --use-start-time.
Рекомендуется задавать это значение таким образом, чтобы выделенного интервала было достаточно для репликации корневого ключа на все контроллеры в домене. Попытка воспользоваться учетной записью gMSA до момента завершения процесса репликации со всеми его участниками может привести к невозможности получения пароля.
При создании домена Эллес с помощью подкоманды samba-tool domain provision корневой ключ создается автоматически.
|
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--json— вывод результатов выполнения операции в формате JSON; -
--use-start-time— начало использования корневого ключа в формате ISO 8601YYYY-MM-DD HH:MM:SS, в формате временной метки LDAPYYYYmmddHHMMSS.0Zили в виде строкового значенияnow(ключ доступен для использования на целевом контроллере сразу после создания); -
-v|--verbose— вывод детальной информации.
Примеры
Пример создания корневого ключа:
samba-tool domain kds root-key create created root key 52c454a8-9e1d-0b4b-3e1a-75b360333e85, usable from 2024-07-09T20:32:30.989180+00:00 (about now)
Пример создания корневого ключа с выводом детальной информации в формате JSON:
samba-tool domain kds root-key create \
--json \
-v
{
"cn": "0bab54e8-ca8b-6b09-05a6-25df7b3fba84",
"dn": "CN=0bab54e8-ca8b-6b09-05a6-25df7b3fba84,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=samdom,DC=example,DC=com",
"message": "created root key 0bab54e8-ca8b-6b09-05a6-25df7b3fba84, usable from 2024-07-09T20:35:20.560902+00:00 (about now)\n",
"msKds-CreateTime": "2024-07-09T20:35:20.560902+00:00",
"msKds-DomainID": "CN=DC01,OU=Domain Controllers,DC=samdom,DC=example,DC=com",
"msKds-KDFAlgorithmID": "SP800_108_CTR_HMAC",
"msKds-KDFParam": "00000000010000000e000000000000005300480041003500310032000000",
"msKds-PrivateKeyLength": 256,
"msKds-PublicKeyLength": 2048,
"msKds-SecretAgreementAlgorithmID": "DH",
"msKds-UseStartTime": "2024-07-09T20:35:20.560902+00:00",
"msKds-Version": 1,
"name": "0bab54e8-ca8b-6b09-05a6-25df7b3fba84",
"objectGUID": "c637f7ac-0144-4a67-8f86-6f3e6eac6a7d",
"whenChanged": "20240709203520.0Z",
"whenCreated": "20240709203520.0Z"
}
Пример создания корневого ключа с заданием начала периода действия:
samba-tool domain kds root-key create \
--json \
--use-start-time='2024-07-10 10:00:00'
{
"dn": "CN=11840b9f-451a-a4b1-0a4f-eb01bd957aa1,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=samdom,DC=example,DC=com",
"message": "created root key 11840b9f-451a-a4b1-0a4f-eb01bd957aa1, usable from 2024-07-10T07:00:00+00:00 (about 10 hours in the FUTURE)",
"msKds-CreateTime": "133650311471620020",
"msKds-UseStartTime": "133650684000000000",
"name": "11840b9f-451a-a4b1-0a4f-eb01bd957aa1",
"status": "OK"
}
Удаление корневого ключа
Формат вызова:
samba-tool domain kds root-key delete [-H <URL>] [options]
В качестве имени корневого ключа в параметре --name ожидается GUID, присвоенный ему при создании. Для получения GUID доступных корневых ключей используйте подкоманду samba-tool domain kds root-key list.
| Удаление и последующее повторное создание корневого ключа может приводить к проблемам, поскольку старый ключ сохраняется в кэше контроллеров домена и его использование может продолжаться и после удаления. В этом случае рекомендуется перезапустить службу KDS на всех контроллерах домена. |
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— GUID удаляемого корневого ключа (обязательный); -
--json— вывод результатов выполнения операции в формате JSON.
Примеры
Пример удаления корневого ключа:
-
получение GUID:
samba-tool domain kds root-key list \ --json [ { "dn": "CN=11840b9f-451a-a4b1-0a4f-eb01bd957aa1,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=samdom,DC=example,DC=com", "msKds-CreateTime": "2024-07-09T20:39:07.162002+00:00", "msKds-UseStartTime": "2024-07-10T07:00:00+00:00", "name": "11840b9f-451a-a4b1-0a4f-eb01bd957aa1" } ] -
удаление корневого ключа:
samba-tool domain kds root-key delete \ --name=11840b9f-451a-a4b1-0a4f-eb01bd957aa1 deleted root key 11840b9f-451a-a4b1-0a4f-eb01bd957aa1
Получение информации о корневом ключе
Формат вызова:
samba-tool domain kds root-key view [-H <URL>] [options]
В качестве имени корневого ключа в параметре --name ожидается GUID, присвоенный ему при создании. Для получения GUID доступных корневых ключей используйте подкоманду samba-tool domain kds root-key list.
Для получения информации о последнем созданном ключе без указания его GUID может использоваться параметр --latest.
В базовом варианте вызова подкоманды в выводе содержатся следующие основные атрибуты корневого ключа:
-
cn— относительное доменное имя (GUID) ключа; -
dn— уникальное доменное имя ключа; -
msKds-CreateTime— время создания ключа; -
msKds-DomainID— полное доменное имя сервера, на котором был создан ключ; -
msKds-KDFAlgorithmID— идентификатор криптографического алгоритма (по умолчанию —SP800_108_CTR_HMAC); -
msKds-KDFParam— параметры для алгоритма наследования ключа; -
msKds-PrivateKeyLength— длина закрытой части ключа (по умолчанию —256); -
msKds-PublicKeyLength— длина открытой части ключа (по умолчанию — 2048); -
msKds-SecretAgreementAlgorithmID— алгоритм совместной генерации общего секретного ключа (по умолчанию —DH); -
msKds-UseStartTime— начало периода действия ключа; -
msKds-Version— версия ключа (по умолчанию —1); -
name— GUID ключа; -
objectGUID— GUID объекта; -
whenChanged— время последнего изменения; -
whenCreated— время создания.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— GUID удаляемого корневого ключа (обязательный, если не передается--latest); -
--latest— получение информации о последнем созданном корневом ключе без указания его GUID (обязательный, если не передается--name); -
--show-secrets— добавление в вывод секретов; -
--json— вывод результатов выполнения операции в формате JSON; -
-v|--verbose— вывод детальной информации.
Примеры
Пример получения детальной информации о последнем созданном корневом ключе в формате JSON:
samba-tool domain kds root-key view \
--latest \
--show-secrets \
--json \
-v
{
"cn": "0bab54e8-ca8b-6b09-05a6-25df7b3fba84",
"distinguishedName": "CN=0bab54e8-ca8b-6b09-05a6-25df7b3fba84,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=samdom,DC=example,DC=com",
"dn": "CN=0bab54e8-ca8b-6b09-05a6-25df7b3fba84,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=samdom,DC=example,DC=com",
"instanceType": "4",
"msKds-CreateTime": "2024-07-09T20:35:20.560902+00:00",
"msKds-DomainID": "CN=DC01,OU=Domain Controllers,DC=samdom,DC=example,DC=com",
"msKds-KDFAlgorithmID": "SP800_108_CTR_HMAC",
"msKds-KDFParam": "00000000010000000e000000000000005300480041003500310032000000",
"msKds-PrivateKeyLength": 256,
"msKds-PublicKeyLength": 2048,
"msKds-RootKeyData": "847e4120e425ef00e5ee118c75bef973981d9db849718b14ca9020c2ec66665e1bf6f3498223286670a39f272b16c733b8be012d6ffbfe45062e7598a6a65a3e",
"msKds-SecretAgreementAlgorithmID": "DH",
"msKds-SecretAgreementParam": "0c0200004448504d0001000087a8e61db4b6663cffbbd19c651959998ceef608660dd0f25d2ceed4435e3b00e00df8f1d61957d4faf7df4561b2aa3016c3d91134096faa3bf4296d830e9a7c209e0c6497517abd5a8a9d306bcf67ed91f9e6725b4758c022e0b1ef4275bf7b6c5bfc11d45f9088b941f54eb1e59bb8bc39a0bf12307f5c4fdb70c581b23f76b63acae1caa6b7902d52526735488a0ef13c6d9a51bfa4ab3ad8347796524d8ef6a167b5a41825d967e144e5140564251ccacb83e6b486f6b3ca3f7971506026c0b857f689962856ded4010abd0be621c3a3960a54e710c375f26375d7014103a4b54330c198af126116d2276e11715f693877fad7ef09cadb094ae91e1a15973fb32c9b73134d0b2e77506660edbd484ca7b18f21ef205407f4793a1a0ba12510dbc15077be463fff4fed4aac0bb555be3a6c1b0c6b47b1bc3773bf7e8c6f62901228f8c28cbb18a55ae31341000a650196f931c77a57f2ddf463e5e9ec144b777de62aaab8a8628ac376d282d6ed3864e67982428ebc831d14348f6f2f9193b5045af2767164e1dfc967c1fb3f2e55a4bd1bffe83b9c80d052b985d182ea0adb2a3b7313d3fe14c8484b1e052588b9b7d2bbd2df016199ecd06e1557cd0915b3353bbb64e0ec377fd028370df92b52c7891428cdc67eb6184b523d1db246c32f63078490f00ef8d647d148d47954515e2327cfef98c582664b4c0f6cc41659",
"msKds-UseStartTime": "2024-07-09T20:35:20.560902+00:00",
"msKds-Version": 1,
"name": "0bab54e8-ca8b-6b09-05a6-25df7b3fba84",
"objectCategory": "CN=ms-Kds-Prov-RootKey,CN=Schema,CN=Configuration,DC=samdom,DC=example,DC=com",
"objectClass": [
"top",
"msKds-ProvRootKey"
],
"objectGUID": "c637f7ac-0144-4a67-8f86-6f3e6eac6a7d",
"showInAdvancedViewOnly": "TRUE",
"uSNChanged": "5024",
"uSNCreated": "5024",
"whenChanged": "20240709203520.0Z",
"whenCreated": "20240709203520.0Z"
}
Получение списка корневых ключей в домене
Формат вызова:
samba-tool domain kds root-key list [-H <URL>] [options]
В базовом варианте вызова подкоманды в выводе содержатся следующие основные атрибуты каждого корневого ключа:
-
dn— уникальное доменное имя ключа; -
msKds-CreateTime— время создания ключа; -
msKds-UseStartTime— начало периода действия ключа; -
name— GUID ключа.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--show-secrets— добавление в вывод секретов; -
--json— вывод результатов выполнения операции в формате JSON; -
-v|--verbose— вывод детальной информации.
Примеры
Получение списка корневых ключей в домене в формате JSON:
samba-tool domain kds root-key list \
--json
[
{
"dn": "CN=0bab54e8-ca8b-6b09-05a6-25df7b3fba84,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=samdom,DC=example,DC=com",
"msKds-CreateTime": "2024-07-09T20:35:20.560902+00:00",
"msKds-UseStartTime": "2024-07-09T20:35:20.560902+00:00",
"name": "0bab54e8-ca8b-6b09-05a6-25df7b3fba84"
},
{
"dn": "CN=c730bd98-53ec-942d-7507-ecc02e4828ff,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=samdom,DC=example,DC=com",
"msKds-CreateTime": "2024-07-09T20:34:59.444824+00:00",
"msKds-UseStartTime": "2024-07-09T20:34:59.444824+00:00",
"name": "c730bd98-53ec-942d-7507-ecc02e4828ff"
}
]
Операции с учетными записями gMSA
Для работы с учетными записями gMSA с помощью утилиты samba-tool используется группа подкоманд service-account.
Операции доступны пользователям с правами администратора домена (член группы Domain Admins) или администратора предприятия (член группы Enterprise Admins).
Создание учетной записи gMSA
Формат вызова:
samba-tool service-account create -H <URL> [options]
При вызове ожидаются имя учетной записи gMSA в параметре --name и полное доменное имя учетной записи в параметре --dns-host-name.
Например, если gMSA с именем --name=gmsaServiceName создается в домене samdom.example.com, то --dns-host-name=gmsaServiceName.samdom.example.com.
При необходимости также могут быть заданы дополнительные параметры — разрешения в виде строки SDDL, периодичность смены пароля и один или несколько идентификаторов экземпляров сервисов (SPN) для использования вместе с создаваемой учетной записью gMSA.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— имя учетной записи gMSA (обязательный); -
--dns-host-name— полное доменное имя учетной записи gMSA (обязательный); -
--group-msa-membership— значение атрибутаmsDS-GroupMSAMembershipв виде строки на языке определения дескрипторов безопасности (SDDL), определяющей разрешения на использование учетной записи gMSA; -
--managed-password-interval— периодичность смены пароля в днях (по умолчанию — 30 дней);Задает значение атрибута msDS-ManagedPasswordInterval. После создания значение доступно только для просмотра. Изменение невозможно. -
--service-principal-names— список идентификаторов экземпляров сервисов (SPN) через запятую без пробелов для использования вместе с создаваемой учетной записью gMSA.См. подробнее о работе с SPN в разделе «Администрирование SPN».
Примеры
Пример создания учетной записи gMSA:
samba-tool service-account create \ --name=GMSA1 \ --dns-host-name=gmsa1.samdom.example.com Created group managed service account: GMSA1
Пример создания учетной записи gMSA с указанием интервала обновления пароля и значения для атрибута msDS-GroupMSAMembership:
samba-tool service-account create \ --name=GMSA2 \ --dns-host-name=gmsa2.samdom.example.com \ --managed-password-interval=25 \ --group-msa-membership="O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-500)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-2100)" Created group managed service account: GMSA2
Пример создания учетной записи gMSA с указанием списка SPN:
samba-tool service-account create \ --name=GMSA3 \ --dns-host-name=gmsa3.samdom.example.com \ --service-principal-names=HTTP/webserver1.samdom.example.com,HTTP/webserver2.samdom.example.com Created group managed service account: GMSA3
Изменение учетной записи gMSA
Формат вызова:
samba-tool service-account modify -H <URL> [options]
При вызове ожидается имя учетной записи в параметре --name.
Изменение интервала обновления пароля (значение атрибута msDS-ManagedPasswordInterval) после создания невозможно.
|
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— имя учетной записи gMSA (обязательный); -
--dns-host-name— полное доменное имя учетной записи gMSA; -
--group-msa-membership— значение атрибутаmsDS-GroupMSAMembershipв виде строки на языке определения дескрипторов безопасности (SDDL), определяющей разрешения на использование учетной записи gMSA.
Примеры
Пример изменения значения атрибута msDS-GroupMSAMembership учетной записи gMSA:
samba-tool service-account modify \ --name=GMSA1 \ --group-msa-membership="O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-500)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-2100)" Modified group managed service account: GMSA1
Удаление учетной записи gMSA
Формат вызова:
samba-tool service-account delete -H <URL> [options]
При вызове ожидается имя учетной записи gMSA в параметре --name.
Получение информации об учетной записи gMSA
Формат вызова:
samba-tool service-account view -H <URL> [options]
При вызове ожидается имя учетной записи gMSA в параметре --name.
В выводе подкоманды содержатся следующие базовые атрибуты учетной записи gMSA:
-
name— имя учетной записи; -
cn— относительное доменное имя учетной записи; -
dn— уникальное доменное имя учетной записи; -
sAMAccountName— имя учетной записи SAM (значениеnameс символом$в конце); -
dNSHostName— полное доменное имя учетной записи; -
msDS-GroupMSAMembership— строка на языке определения дескрипторов безопасности (SDDL), определяющая разрешения на использование учетной записи gMSA; -
msDS-ManagedPasswordInterval— интервал автоматической смены пароля учетной записи; -
msDS-SupportedEncryptionTypes— поддерживаемые типы шифрования (по умолчанию —28, что соответствуетRC4, AES 128, AES 256); -
pwdLastSet— время последнего изменения пароля.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— имя учетной записи gMSA (обязательный).
Примеры
Пример получения информации об учетной записи gMSA:
samba-tool service-account view \
--name=GMSA2
{
"badPasswordTime": "1601-01-01T00:00:00+00:00",
"badPwdCount": 0,
"cn": "GMSA2",
"codePage": 0,
"countryCode": 0,
"dNSHostName": "gmsa2.samdom.example.com",
"distinguishedName": "CN=GMSA2,CN=Managed Service Accounts,DC=samdom,DC=example,DC=com",
"dn": "CN=GMSA2,CN=Managed Service Accounts,DC=samdom,DC=example,DC=com",
"instanceType": 4,
"lastLogoff": "1601-01-01T00:00:00+00:00",
"lastLogon": "1601-01-01T00:00:00+00:00",
"logonCount": 0,
"msDS-GroupMSAMembership": "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-500)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-2100)",
"msDS-ManagedPasswordInterval": 20,
"msDS-SupportedEncryptionTypes": 28,
"name": "GMSA2",
"objectCategory": "CN=ms-DS-Group-Managed-Service-Account,CN=Schema,CN=Configuration,DC=samdom,DC=example,DC=com",
"objectClass": [
"top",
"person",
"organizationalPerson",
"user",
"computer",
"msDS-GroupManagedServiceAccount"
],
"objectGUID": "ff08b2bd-e05d-46b9-ac03-f0b62869ad3c",
"objectSid": "S-1-5-21-1159061634-2679507100-403793082-2119",
"primaryGroupID": 515,
"pwdLastSet": "1601-01-01T00:00:00+00:00",
"sAMAccountName": "GMSA2$",
"sAMAccountType": 805306369,
"userAccountControl": 4096
}
Просмотр списка учетных записей gMSA
Формат вызова:
samba-tool service-account list -H <URL> [options]
По умолчанию подкоманды выводит список имен учетных записей gMSA в домене в формате sAMAccountName.
Для получения полного списка атрибутов для каждой учетной записи необходимо использовать ключ --json.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--json— вывод результатов выполнения операции в формате JSON.
Примеры
Пример получения списка имен учетных записей gMSA в домене:
samba-tool service-account list GMSA1$ GMSA2$
Пример получения полного перечня атрибутов учетных записей gMSA в домене:
samba-tool service-account list \
--json
{
"GMSA1$": {
"badPasswordTime": "1601-01-01T00:00:00+00:00",
"badPwdCount": 0,
"cn": "GMSA1",
"codePage": 0,
"countryCode": 0,
"dNSHostName": "gmsa1.samdom.example.com",
"distinguishedName": "CN=GMSA1,CN=Managed Service Accounts,DC=samdom,DC=example,DC=com",
"dn": "CN=GMSA1,CN=Managed Service Accounts,DC=samdom,DC=example,DC=com",
"instanceType": 4,
"lastLogoff": "1601-01-01T00:00:00+00:00",
"lastLogon": "1601-01-01T00:00:00+00:00",
"logonCount": 0,
"msDS-GroupMSAMembership": "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-500)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-2100)",
"msDS-ManagedPasswordInterval": 30,
"msDS-SupportedEncryptionTypes": 28,
"name": "GMSA1",
"objectCategory": "CN=ms-DS-Group-Managed-Service-Account,CN=Schema,CN=Configuration,DC=samdom,DC=example,DC=com",
"objectClass": [
"top",
"person",
"organizationalPerson",
"user",
"computer",
"msDS-GroupManagedServiceAccount"
],
"objectGUID": "458bfe6a-e412-42ca-9fd4-742d5077df2a",
"objectSid": "S-1-5-21-1159061634-2679507100-403793082-2118",
"primaryGroupID": 515,
"pwdLastSet": "1601-01-01T00:00:00+00:00",
"sAMAccountName": "GMSA1$",
"sAMAccountType": 805306369,
"userAccountControl": 4096
},
"GMSA2$": {
"badPasswordTime": "1601-01-01T00:00:00+00:00",
"badPwdCount": 0,
"cn": "GMSA2",
"codePage": 0,
"countryCode": 0,
"dNSHostName": "gmsa2.samdom.example.com",
"distinguishedName": "CN=GMSA2,CN=Managed Service Accounts,DC=samdom,DC=example,DC=com",
"dn": "CN=GMSA2,CN=Managed Service Accounts,DC=samdom,DC=example,DC=com",
"instanceType": 4,
"lastLogoff": "1601-01-01T00:00:00+00:00",
"lastLogon": "1601-01-01T00:00:00+00:00",
"logonCount": 0,
"msDS-GroupMSAMembership": "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-500)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-2100)",
"msDS-ManagedPasswordInterval": 20,
"msDS-SupportedEncryptionTypes": 28,
"name": "GMSA2",
"objectCategory": "CN=ms-DS-Group-Managed-Service-Account,CN=Schema,CN=Configuration,DC=samdom,DC=example,DC=com",
"objectClass": [
"top",
"person",
"organizationalPerson",
"user",
"computer",
"msDS-GroupManagedServiceAccount"
],
"objectGUID": "ff08b2bd-e05d-46b9-ac03-f0b62869ad3c",
"objectSid": "S-1-5-21-1159061634-2679507100-403793082-2119",
"primaryGroupID": 515,
"pwdLastSet": "1601-01-01T00:00:00+00:00",
"sAMAccountName": "GMSA2$",
"sAMAccountType": 805306369,
"userAccountControl": 4096
}
}
Выдача разрешения на использование (чтение пароля) учетной записи gMSA
Формат вызова:
samba-tool service-account group-msa-membership add -H <URL> [options]
При вызове ожидается имя учетной записи gMSA в параметре --name и sAMAccountName или уникальное доменное имя (DN-имя) субъекта протокола Kerberos, который будет использовать gMSA, в параметре --principal.
Подкоманда добавляет разрешения для указанного субъекта в значение атрибута msDS-GroupMSAMembership учетной записи gMSA.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— имя учетной записи gMSA (обязательный); -
--principal— sAMAccountName или уникальное доменное имя (DN-имя) субъекта протокола Kerberos, который будет использовать gMSA (обязательный).
Примеры
Пример добавления разрешений для учетной записи сервера в атрибут msDS-GroupMSAMembership учетной записи gMSA:
samba-tool service-account group-msa-membership add \ --name=GMSA1 \ --principal=Server1$ Trustee 'Server1$' is now allowed to show managed passwords for: GMSA1$
Проверка изменения значения атрибута msDS-GroupMSAMembership (по SID объекта):
samba-tool service-account view \ --name=GMSA1 \ | grep msDS-GroupMSAMembership "msDS-GroupMSAMembership": "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-500)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-2121)",
Отзыв разрешения на использование (чтение пароля) учетной записи gMSA
Формат вызова:
samba-tool service-account group-msa-membership remove -H <URL> [options]
При вызове ожидается имя учетной записи gMSA в параметре --name и sAMAccountName или уникальное доменное имя (DN-имя) субъекта протокола Kerberos, который больше не должен иметь доступ к паролю учетной записи gMSA, в параметре --principal.
Подкоманда удаляет разрешения для указанного субъекта из значения атрибута msDS-GroupMSAMembership учетной записи gMSA.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— имя учетной записи gMSA (обязательный); -
--principal— sAMAccountName или уникальное доменное имя (DN-имя) субъекта протокола Kerberos, который будет использовать gMSA (обязательный).
Примеры
Пример удаления разрешений для учетной записи сервера из атрибута msDS-GroupMSAMembership учетной записи gMSA:
samba-tool service-account group-msa-membership remove \ --name=GMSA1 \ --principal=Server1$ Trustee 'Server1$' removed access to show managed passwords for: GMSA1$
Проверка изменения значения атрибута msDS-GroupMSAMembership (по SID объекта):
samba-tool service-account view \ --name=GMSA1 \ | grep msDS-GroupMSAMembership "msDS-GroupMSAMembership": "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1159061634-2679507100-403793082-500)",
Просмотр списка разрешений на использование (чтение пароля) учетной записи gMSA
Формат вызова:
samba-tool service-account group-msa-membership list -H <URL> [options]
В выводе подкоманды содержится список уникальных доменных имен (DN) субъектов протокола Kerberos, имеющих разрешения на использование (чтение пароля) учетной записи gMSA.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--name— имя учетной записи gMSA (обязательный); -
--json— вывод результатов выполнения операции в формате JSON.
Примеры
Пример получения списка субъектов протокола Kerberos, имеющих разрешения на использование учетной записи gMSA:
samba-tool service-account group-msa-membership show \
--name=GMSA1
{
"dn": "CN=GMSA1,CN=Managed Service Accounts,DC=samdom,DC=example,DC=com",
"trustees": [
"CN=Administrator,CN=Users,DC=samdom,DC=example,DC=com",
"CN=Server1,CN=Computers,DC=samdom,DC=example,DC=com"
]
}
Пример настройки gMSA средствами Эллес
В качестве примера рассмотрим настройку учетной записи gMSA на контроллере Эллес, введенном в домен, который изначально был развернут с помощью Microsoft Active Directory Domain Services.
В результате выполненных действий в домене должна появиться учетная запись gMSA, которую можно было бы использовать для безопасного запуска различных служб на рабочих станциях и серверах, являющихся участниками домена.
Выполняется следующая последовательность шагов по настройке от имени доменного пользователя Administrator с необходимыми правами:
-
Проверка наличия корневого ключа.
Данный пример основан на допущении, что ключ был создан на другом контроллере в домене и был добавлен на текущий контроллер Эллес в результате репликации:
samba-tool domain kds root-key list 1 root key found. name f1acc9a9-bf7f-4413-e2ee-c288f6ad236f created 2024-07-11T18:25:35.290512+00:00 (about 22 minutes ago) usable from 2024-07-11T08:20:35.290512+00:00 (about 10 hours ago) dn CN=f1acc9a9-bf7f-4413-e2ee-c288f6ad236f,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=gmsaexample,DC=net
-
Просмотр содержимого ключа.
Для проверки параметров ключа можно просмотреть его содержимое:
samba-tool domain kds root-key view \ --name=f1acc9a9-bf7f-4413-e2ee-c288f6ad236f name f1acc9a9-bf7f-4413-e2ee-c288f6ad236f created 2024-07-11T18:25:35.290512+00:00 (about 22 minutes ago) usable from 2024-07-11T08:20:35.290512+00:00 (about 10 hours ago) dn CN=f1acc9a9-bf7f-4413-e2ee-c288f6ad236f,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=gmsaexample,DC=net cn f1acc9a9-bf7f-4413-e2ee-c288f6ad236f whenCreated 20240711182535.0Z whenChanged 20240711182535.0Z objectGUID 824f85dd-a7e9-488b-9cac-40f00fc5c1a1 msKds-KDFAlgorithmID SP800_108_CTR_HMAC msKds-KDFParam 00000000010000000e000000000000005300480041003500310032000000 msKds-SecretAgreementAlgorithmID DH msKds-PublicKeyLength 2048 msKds-PrivateKeyLength 256 msKds-Version 1 msKds-DomainID CN=AL-R-DC1,OU=Domain Controllers,DC=gmsaexample,DC=net
-
Создание доменной группы.
Для удобства администрирования состава машин — участников домена, которые будут иметь доступ к паролю учетной записи gMSA, создаются:
-
подразделение:
samba-tool ou add 'OU=GMSAS' Added ou "OU=GMSAS,DC=gmsaexample,DC=net"
-
доменная группа:
samba-tool group add GMSA1 \ --groupou="OU=GMSAS" \ --group-scope=Global Added group GMSA1
-
-
Добавление в группу машин — участников домена.
Добавленные в группу рабочие станции и серверы будут иметь доступ к паролю учетной записи gMSA:
samba-tool group addmembers GMSA1 al-r-dc1$,win-cl1$,win-r-dc1$ Added members to group GMSA1
Проверка состава группы:
samba-tool group show GMSA1 dn: CN=GMSA1,OU=GMSAS,DC=gmsaexample,DC=net objectClass: top objectClass: group cn: GMSA1 instanceType: 4 whenCreated: 20240711180023.0Z uSNCreated: 3967 name: GMSA1 objectGUID: 3158ea1f-dc51-4b77-be6e-09f8a6ea4fbd objectSid: S-1-5-21-280994483-2379122998-3972094575-1601 sAMAccountName: GMSA1 sAMAccountType: 268435456 groupType: -2147483646 objectCategory: CN=Group,CN=Schema,CN=Configuration,DC=gmsaexample,DC=net member: CN=WIN-R-DC1,OU=Domain Controllers,DC=gmsaexample,DC=net member: CN=WIN-CL1,CN=Computers,DC=gmsaexample,DC=net member: CN=AL-R-DC1,OU=Domain Controllers,DC=gmsaexample,DC=net whenChanged: 20240711180436.0Z uSNChanged: 3968 distinguishedName: CN=GMSA1,OU=GMSAS,DC=gmsaexample,DC=net
-
Создание групповой управляемой служебной учетной записи (gMSA).
Создается учетная запись gMSA:
samba-tool service-account create \ --name=gmsaSrvc1 \ --dns-host-name=gmsaSrvc1.gmsaexample.net Created group managed service account: gmsaSrvc1
Созданная запись привязывается к группе
GMSA1:samba-tool service-account group-msa-membership add \ --name=gmsaSrvc1 \ --principal='CN=GMSA1,OU=GMSAS,DC=gmsaexample,DC=net' Trustee 'CN=GMSA1,OU=GMSAS,DC=gmsaexample,DC=net' is now allowed to show managed passwords for: gmsaSrvc1
Проверка разрешений, заданных для созданной учетной записи gMSA:
samba-tool service-account group-msa-membership show \ --name=gmsaSrvc1 \ --json { "dn": "CN=gmsaSrvc1,CN=Managed Service Accounts,DC=gmsaexample,DC=net", "trustees": [ "CN=Administrator,CN=Users,DC=gmsaexample,DC=net", "CN=GMSA1,OU=GMSAS,DC=gmsaexample,DC=net" ] }
Далее созданная учетная запись gMSA может использоваться для выполнения различных задач на добавленных в группу машинах — участниках домена.