Управление корневыми ключами

Для работы с корневыми ключами с помощью утилиты samba-tool используется группа подкоманд domain kds root-key.

Операции доступны пользователям с правами администратора домена (член группы Domain Admins) или администратора предприятия (член группы Enterprise Admins).

Корневые ключи KDS в Эллес

Чтобы контроллеры домена начали формировать пароли для учетных записей 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 8601 YYYY-MM-DD HH:MM:SS, в формате временной метки LDAP YYYYmmddHHMMSS.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"
  }
]

Обновлено: