Управление учетными записями sMSA и gMSA (общие операции)

В Эллес реализована поддержка функциональности по работе с автономными управляемыми служебными учетными записями (Standalone Managed Service Account, sMSA) и групповыми управляемыми служебными учетными записями (Group Managed Service Account, gMSA).

Для выполнения общих операций по администрированию учетных записей sMSA и gMSA с помощью утилиты samba-tool используется группа подкоманд service-account.

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

В текущей версии функциональность sMSA и gMSA поддерживается при работе Эллес в гетерогенном домене, в котором также доступны контроллеры домена на ОС Windows Server с развернутой службой каталогов Microsoft Active Directory Domain Services (AD DS).

Общие сведения

Управляемые служебные учетные записи (Managed Service Accounts, MSA) предназначены для автоматизации работы с учетными данными служб в доменной инфраструктуре Эллес. Они обеспечивают автоматическую ротацию, централизованное управление и использование паролей для аутентификации служб без участия администратора. Это позволяет устранить риски, связанные с ручным заданием и хранением паролей, и упростить администрирование системных и сетевых служб.

Эллес поддерживает работу с двумя типами управляемых служебных записей:

  • учетные записи sMSA;

  • учетные записи gMSA.

Учетные записи sMSA

Учетные записи sMSA предназначены для использования одной службой на одном компьютере в домене.

Пароль такой учетной записи автоматически обновляется контроллерами домена, а служба получает доступ к актуальному паролю через локальную систему безопасности (Local Security Authority, LSA). sMSA обеспечивает корректную аутентификацию по протоколу Kerberos, может использоваться для регистрации SPN и не требует задания пароля вручную при настройке службы.

sMSA подходят для служб, работающих на выделенных серверах, а также для приложений, не требующих совместного доступа к одной учетной записи с других узлов. Использование sMSA исключает необходимость синхронизации учетных данных между серверами и снижает риск компрометации, так как пароль никогда не раскрывается администратору и обновляется автоматически.

Учетные записи gMSA

Учетные записи gMSA предназначены для сценариев, когда одна и та же служба используется на нескольких компьютерах в домене. Пароль gMSA также управляется автоматически, а доступ к нему предоставляется ограниченному набору компьютеров, определенных в параметрах учетной записи.

gMSA реализует распределенный механизм доступа к паролю на основе службы распространения ключей (Key Distribution Service, KDS), которая работает на контроллерах домена. Пароль учетной записи gMSA никогда не раскрывается администраторам или службам в явном виде — серверы, включенные в список разрешенных, получают его динамически при запуске службы. Контроллер домена обеспечивает безопасную выдачу пароля и его периодическую ротацию с использованием криптографически стойких ключей.

gMSA поддерживает аутентификацию по протоколу Kerberos, а также регистрацию SPN для сервисов.

Перед использованием gMSA в домене требуется однократно создать корневой ключ KDS, который используется для генерации паролей всех управляемых учетных записей.

Создание управляемой служебной учетной записи

Формат вызова:

samba-tool service-account create -H <URL> [options]

При вызове ожидается имя учетной записи sMSA или gMSA в параметре --name.

Для создания sMSA требуется дополнительно указать параметр --restrict-to-single-computer.

Для gMSA также требуется указать полное доменное имя учетной записи в параметре --dns-host-name. Например, если gMSA с именем --name=gmsaServiceName создается в домене elles.inno.tech, то --dns-host-name=gmsaServiceName.elles.inno.tech.

При необходимости также могут быть заданы дополнительные параметры — разрешения в виде строки SDDL, периодичность смены пароля и один или несколько идентификаторов экземпляров сервисов (SPN) для использования вместе с создаваемой учетной записью.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --name=NAME — имя для учетной записи gMSA или sMSA (обязательный);

  • --dns-host-name=DNSHOSTNAME — полное доменное имя учетной записи gMSA (обязательный для gMSA);

  • --group-msa-membership=SDDL — значение атрибута msDS-GroupMSAMembership в виде строки на языке определения дескрипторов безопасности (SDDL), определяющей разрешения на использование учетной записи gMSA;

  • --managed-password-interval=INTERVAL — периодичность смены пароля в днях для учетной записи gMSA (по умолчанию — 30 дней);

    Задает значение атрибута msDS-ManagedPasswordInterval. После создания значение доступно только для просмотра. Изменение невозможно.
  • --restrict-to-single-computer — создать учетную запись sMSA (обязательный для sMSA);

  • --service-principal-names=SPN1,SPN2,SPNN — список идентификаторов экземпляров сервисов (SPN) через запятую без пробелов для использования вместе с создаваемой учетной записью gMSA.

    См. подробнее о работе с SPN в разделе «Администрирование SPN».

Примеры

Пример создания учетной записи gMSA:

samba-tool service-account create \
   --name=GMSA1 \
   --dns-host-name=gmsa1.elles.inno.tech
Created group managed service account: GMSA1

Пример создания учетной записи gMSA с указанием интервала обновления пароля и значения для атрибута msDS-GroupMSAMembership:

samba-tool service-account create \
   --name=GMSA2 \
   --dns-host-name=gmsa2.elles.inno.tech \
   --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.elles.inno.tech \
   --service-principal-names=HTTP/webserver1.elles.inno.tech,HTTP/webserver2.elles.inno.tech
Created group managed service account: GMSA3

Пример создания учетной записи sMSA:

samba-tool service-account create \
   --name=SMSA1 \
   --restrict-to-single-computer
Created standalone managed service account: SMSA1

Изменение управляемой служебной учетной записи

Формат вызова:

samba-tool service-account modify -H <URL> [options]

При вызове ожидается имя учетной записи в параметре --name.

Изменение интервала обновления пароля (значение атрибута msDS-ManagedPasswordInterval) после создания невозможно.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --name=NAME — имя существующей учетной записи gMSA или sMSA (обязательный);

  • --dns-host-name=DNSHOSTNAME — полное доменное имя учетной записи gMSA;

  • --group-msa-membership=SDDL — значение атрибута 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

Удаление управляемой служебной учетной записи

Формат вызова:

samba-tool service-account delete -H <URL> [options]

При вызове ожидается имя учетной записи в параметре --name.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --name=NAME — имя учетной записи gMSA или sMSA (обязательный).

Примеры

Пример удаления учетной записи gMSA:

samba-tool service-account delete \
   --name=GMSA3
Deleted group managed service account: GMSA3

Пример удаления учетной записи sMSA:

samba-tool service-account delete \
   --name=SMSA3
Deleted standalone managed service account: SMSA3

Получение информации об управляемой служебной учетной записи

Формат вызова:

samba-tool service-account view -H <URL> [options]

При вызове ожидается имя учетной записи в параметре --name.

Подкоманда возвращает стандартный набор атрибутов учетной записи, соответствующий ее классу в схеме службы каталогов (msDS-GroupManagedServiceAccount для gMSA и msDS-ManagedServiceAccount для sMSA). Для учетной записи gMSA в выводе содержатся следующие специфичные атрибуты:

  • dNSHostName — полное доменное имя учетной записи;

  • msDS-GroupMSAMembership — строка на языке определения дескрипторов безопасности (SDDL), определяющая разрешения на использование учетной записи gMSA;

  • msDS-ManagedPasswordInterval — интервал автоматической смены пароля учетной записи.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --name=NAME — имя учетной записи gMSA или sMSA (обязательный).

Примеры

Пример получения информации об учетной записи 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.elles.inno.tech",
  "distinguishedName": "CN=GMSA2,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
  "dn": "CN=GMSA2,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
  "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=elles,DC=inno,DC=tech",
  "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
}

Пример получения информации об учетной записи sMSA:

samba-tool service-account view \
   --name=SMSA1
{
  "badPasswordTime": "1601-01-01T00:00:00+00:00",
  "badPwdCount": 0,
  "cn": "SMSA1",
  "codePage": 0,
  "countryCode": 0,
  "distinguishedName": "CN=SMSA1,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
  "dn": "CN=SMSA1,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
  "instanceType": 4,
  "lastLogoff": "1601-01-01T00:00:00+00:00",
  "lastLogon": "1601-01-01T00:00:00+00:00",
  "logonCount": 0,
  "msDS-HostServiceAccountBL": [
    "CN=SRV1,CN=Computers,DC=elles,DC=inno,DC=tech"
  ],
  "msDS-SupportedEncryptionTypes": 28,
  "name": "SMSA1",
  "objectCategory": "CN=ms-DS-Managed-Service-Account,CN=Schema,CN=Configuration,DC=elles,DC=inno,DC=tech",
  "objectClass": [
    "top",
    "person",
    "organizationalPerson",
    "user",
    "computer",
    "msDS-ManagedServiceAccount"
  ],
  "objectGUID": "185ab822-9c1c-493e-bd56-fe450e11b476",
  "objectSid": "S-1-5-21-1159061634-2679507100-403793082-1159",
  "primaryGroupID": 515,
  "pwdLastSet": "1601-01-01T00:00:00+00:00",
  "sAMAccountName": "SMSA1$",
  "sAMAccountType": 805306369,
  "userAccountControl": 4096
}

Получение списка управляемых служебных учетных записей

Формат вызова:

samba-tool service-account list -H <URL> [options]

Подкоманда возвращает список имен только учетных записей gMSA (без использования дополнительного параметра --restrict-to-single-computer) или только учетных записей sMSA (при использовании параметра --restrict-to-single-computer) в домене в формате sAMAccountName.

Для получения полного списка атрибутов для каждой учетной записи необходимо использовать ключ --json.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --json — вывод результатов выполнения операции в формате JSON;

  • --restrict-to-single-computer — включить в вывод только учетные записи sMSA.

Примеры

Пример получения списка имен учетных записей 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.elles.inno.tech",
    "distinguishedName": "CN=GMSA1,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "dn": "CN=GMSA1,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "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=elles,DC=inno,DC=tech",
    "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.elles.inno.tech",
    "distinguishedName": "CN=GMSA2,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "dn": "CN=GMSA2,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "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=elles,DC=inno,DC=tech",
    "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
  }
}

Пример получения списка имен учетных записей sMSA в домене:

samba-tool service-account list \
    --restrict-to-single-computer
SMSA1$
SMSA2$

Пример получения полного перечня атрибутов учетных записей sMSA в домене:

samba-tool service-account list \
    --restrict-to-single-computer \
   --json
{
  "SMSA1$": {
    "badPasswordTime": "1601-01-01T00:00:00+00:00",
    "badPwdCount": 0,
    "cn": "SMSA1",
    "codePage": 0,
    "countryCode": 0,
    "distinguishedName": "CN=SMSA1,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "dn": "CN=SMSA1,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "instanceType": 4,
    "lastLogoff": "1601-01-01T00:00:00+00:00",
    "lastLogon": "1601-01-01T00:00:00+00:00",
    "logonCount": 0,
    "msDS-HostServiceAccountBL": [
      "CN=SRV1,CN=Computers,DC=elles,DC=inno,DC=tech"
    ],
    "msDS-SupportedEncryptionTypes": 28,
    "name": "SMSA1",
    "objectCategory": "CN=ms-DS-Managed-Service-Account,CN=Schema,CN=Configuration,DC=elles,DC=inno,DC=tech",
    "objectClass": [
      "top",
      "person",
      "organizationalPerson",
      "user",
      "computer",
      "msDS-ManagedServiceAccount"
    ],
    "objectGUID": "185ab822-9c1c-493e-bd56-fe450e11b476",
    "objectSid": "S-1-5-21-1159061634-2679507100-403793082-1159",
    "primaryGroupID": 515,
    "pwdLastSet": "1601-01-01T00:00:00+00:00",
    "sAMAccountName": "SMSA1$",
    "sAMAccountType": 805306369,
    "userAccountControl": 4096
  },
  "SMSA2$": {
    "badPasswordTime": "1601-01-01T00:00:00+00:00",
    "badPwdCount": 0,
    "cn": "SMSA2",
    "codePage": 0,
    "countryCode": 0,
    "distinguishedName": "CN=SMSA2,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "dn": "CN=SMSA2,CN=Managed Service Accounts,DC=elles,DC=inno,DC=tech",
    "instanceType": 4,
    "lastLogoff": "1601-01-01T00:00:00+00:00",
    "lastLogon": "1601-01-01T00:00:00+00:00",
    "logonCount": 0,
    "msDS-HostServiceAccountBL": [
      "CN=SRV2,CN=Computers,DC=elles,DC=inno,DC=tech"
    ],
    "msDS-SupportedEncryptionTypes": 28,
    "name": "SMSA2",
    "objectCategory": "CN=ms-DS-Managed-Service-Account,CN=Schema,CN=Configuration,DC=elles,DC=inno,DC=tech",
    "objectClass": [
      "top",
      "person",
      "organizationalPerson",
      "user",
      "computer",
      "msDS-ManagedServiceAccount"
    ],
    "objectGUID": "185ab822-9c1c-493e-bd56-fe450e11b476",
    "objectSid": "S-1-5-21-1159061634-2679507100-403793082-1159",
    "primaryGroupID": 515,
    "pwdLastSet": "1601-01-01T00:00:00+00:00",
    "sAMAccountName": "SMSA2$",
    "sAMAccountType": 805306369,
    "userAccountControl": 4096
  }
}