Создание Service Principal Name (SPN) и keytab-файла для сервисной учетной записи
Перед началом работы задайте в произвольной форме следующие значения:
-
имена хостов отдельно для каждого из модулей; например:
-
«Кабинет администратора» —
web-admin.example.com; -
«Магазин приложений» —
app-shop.example.com;
-
-
имя домена; например:
LCM.TERRA.INNO.TECH; -
имя сервисной учетной записи; например:
lcm_backend_svc.
При создании Service Principal Name (SPN) и keytab-файла модулей «Кабинет администратора» и «Магазин приложений» используется единый принцип.
Ниже приведены примеры создания SPN (Service Principal Name) и keytab-файла модуля «Кабинет администратора» для сервисной учетной записи в домене под управлением Samba и в домене под управлением Active Directory.
Создание Service Principal Name (SPN)
-
Создайте SPN с полным доменным именем, выполнив команду:
samba-tool spn add HTTP/<host-name>@<domain-name> <service-account>
Пример команды:
samba-tool spn add HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH lcm_backend_svc
-
Создайте SPN с коротким именем, выполнив команду:
$ samba-tool spn add HTTP/<host-name> <service-account>
Пример команды:
$ samba-tool spn add HTTP/web-admin.example.com lcm_backend_svc
-
Проведите проверку созданных SPN, выполнив команду:
$ samba-tool spn list <service-account>
Пример команды:
$ samba-tool spn list lcm_backend_svc
Пример вывода:
User CN=lcm_backend_svc,CN=Users,DC=lcm,DC=terra,DC=inno,DC=tech has the following servicePrincipalName: HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH HTTP/web-admin.example.com
-
Проведите проверку атрибутов сервисной учетной записи, выполнив команду:
$ samba-tool user show <service-account>
Пример команды:
$ samba-tool user show lcm_backend_svc
Пример вывода со значимыми параметрами:
cn: lcm_backend_svc name: lcm_backend_svc sAMAccountName: lcm_backend_svc userPrincipalName: lcm_backend_svc@lcm.terra.inno.tech objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=lcm,DC=terra,DC=inno,DC=tech msDS-SupportedEncryptionTypes: 24 accountExpires: 0 servicePrincipalName: HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH servicePrincipalName: HTTP/web-admin.example.com distinguishedName: CN=lcm_backend_svc,CN=Users,DC=lcm,DC=terra,DC=inno,DC=tech
-
Создайте SPN с полным доменным именем, выполнив команду:
setspn -A HTTP/<host-name>@<domain-name> <service-account>
Пример команды:
setspn -A HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH lcm_backend_svc
-
Создайте SPN с коротким именем, выполнив команду:
setspn -A HTTP/<host-name> <service-account>
Пример команды:
setspn -A HTTP/web-admin.example.com lcm_backend_svc
Пример вывода:
Checking domain DC=lcmtest,DC=lan Registering ServicePrincipalNames for CN=lcm_backend_svc,CN=Users,DC=lcm,DC=terra,DC=inno,DC=tech HTTP/web-admin.example.com Updated object -
Проведите проверку созданных SPN, выполнив команду:
setspn -L <service-account>
Пример команды:
setspn -L lcm_backend_svc
Пример вывода:
Registered ServicePrincipalNames for CN=lcm_backend_svc,CN=Users,DC=lcm,DC=terra,DC=inno,DC=tech: HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH HTTP/web-admin.example.com -
Проведите проверку атрибутов сервисной учетной записи, выполнив команду:
get-aduser -Identity <service-account> -properties servicePrincipalName
Пример команды:
get-aduser -Identity lcm_backend_svc -properties servicePrincipalName
Пример вывода со значимыми параметрами:
DistinguishedName : CN=lcm_backend_svc,CN=Users,DC=lcm,DC=terra,DC=inno,DC=tech Enabled : True GivenName : lcm_backend_svc Name : lcm_backend_svc ObjectClass : user ObjectGUID : d903b450-e6c3-4324-9770-0236b00f83f8 SamAccountName : lcm_backend_svc servicePrincipalName : {HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH, HTTP/web-admin.example.com} SID : S-1-5-21-1700660301-2837393460-1517524629-1105 Surname : UserPrincipalName : HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH
Создание keytab-файла
Чтобы создать keytab-файл, выполните команду:
$ sudo samba-tool domain exportkeytab ./lcm-user.keytab --principal=<service-account>
Пример команды:
$ sudo samba-tool domain exportkeytab ./lcm-user.keytab --principal=lcm_backend_svc
Чтобы просмотреть созданный файл, выполните команду:
$ sudo klist -e -k ./lcm-user.keytab
Пример файла:
Keytab name: FILE:./lcm-user.keytab KVNO Principal ---- -------------------------------------------------------------------------- 7 web-admin.example.com@LCM.TERRA.INNO.TECH (aes256-cts-hmac-sha1-96) 7 web-admin.example.com@LCM.TERRA.INNO.TECH (aes128-cts-hmac-sha1-96) 7 web-admin.example.com@LCM.TERRA.INNO.TECH(DEPRECATED:arcfour-hmac)
Чтобы создать keytab-файл, выполните команду:
ktpass -princ HTTP/<host-name>@<domain-name> -mapuser <service-account> -pass <service-account-password> -crypto All -ptype KRB5_NT_PRINCIPAL -out <target-path>\<keytab.filename>
Пример команды:
ktpass -princ HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH -mapuser lcm_backend_svc -pass "Qwerty123" -crypto All -ptype KRB5_NT_PRINCIPAL -out C:\temp\web-admin_0.keytab
Пример вывода:
Targeting domain controller: lcm-dc-winsrv.<span data-markjs="true" class="terms-mark tooltipstered terms-term-selector">lcm</span>.terra.inno.tech Using legacy password setting method Successfully mapped HTTP/web-admin.example.com to lcm_backend_svc. Key created. Key created. Key created. Key created. Key created. Output keytab to C:\temp\web-admin_0.keytab: Keytab version: 0x502 keysize 65 HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x1 (DES-CBC-CRC) keylength 8 (0x894ca425cb159eb0) keysize 65 HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x3 (DES-CBC-MD5) keylength 8 (0x894ca425cb159eb0) keysize 73 HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x17 (RC4-HMAC) keylength 16 (0x59fc0f884922b4ce376051134c71e22c) keysize 89 HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x12 (AES256-SHA1) keylength 32 (0x555027fe7864fdd549ea517ff1cff1077fb2bf83de7e6e28eeeb6ed66db556bc) keysize 73 HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x11 (AES128-SHA1) keylength 16 (0xe8dfe5b65a4fdb3bc0c367637c5a0606)
Windows не предоставляет встроенных средств для просмотра содержимого keytab-файла.
Однако, если у вас на компьютере установлена версия Java JRE, используйте утилиту klist.exe,
которая входит в комплект
java. cd "c:\Program Files\Java\jre1.8.0_181\bin" klist.exe -K -e -t -k C:\temp\web-admin_0.keytab.
|
Сохраните файл на сервере, на который будет устанавливаться бэкенд продукта. Путь к файлу
необходимо будет указать на этапе его настройки. Также измените права доступа к файлу, предоставив доступ к нему только для пользователя, от имени
которого будет запускаться systemd-служба lcm.
|