Управление корневыми ключами
Для работы с корневыми ключами с помощью утилиты samba-tool используется группа подкоманд domain kds root-key.
Операции доступны пользователям с правами администратора домена (член группы Domain Admins) или администратора предприятия (член группы Enterprise Admins).
Общие сведения
Чтобы контроллеры домена начали формировать пароли для учетных записей 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) части ассиметричного ключа используется для создания секретов с помощью алгоритма симметричного шифрования.
Создание корневого ключа
Формат вызова:
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=elles,DC=inno,DC=tech",
"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=elles,DC=inno,DC=tech",
"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=elles,DC=inno,DC=tech",
"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=elles,DC=inno,DC=tech", "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=elles,DC=inno,DC=tech",
"dn": "CN=0bab54e8-ca8b-6b09-05a6-25df7b3fba84,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=elles,DC=inno,DC=tech",
"instanceType": "4",
"msKds-CreateTime": "2024-07-09T20:35:20.560902+00:00",
"msKds-DomainID": "CN=DC01,OU=Domain Controllers,DC=elles,DC=inno,DC=tech",
"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=elles,DC=inno,DC=tech",
"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=elles,DC=inno,DC=tech",
"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=elles,DC=inno,DC=tech",
"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"
}
]