Вы можете использовать одну учетную запись для аутентификации на всех узлах кластера. Для этого требуется создать keytab-файл, содержащий имена субъекта-службы (далее также "SPN") для каждого из этих узлов. При создании keytab-файла потребуется использовать атрибут для генерации соли (salt, модификатор входа хеш-функции).
Сгенерированную соль необходимо сохранить любым удобным способом для дальнейшего добавления новых SPN в keytab-файл.
Вы также можете создать отдельную учетную запись Active Directory для каждого узла кластера, для которого вы хотите настроить Kerberos-аутентификацию.
Действия перед созданием keytab-файла
Перед созданием keytab-файла следует для каждого SPN убедиться, что он не зарегистрирован в Active Directory. Сделать это можно с помощью команды setspn -Q <SPN>
, где <SPN>
имеет следующий вид: HTTP/<полное доменное имя (FQDN) узла кластера>@<realm имя домена Active Directory в верхнем регистре>
.
Команда должна вернуть ответ "No such SPN found"
, что означает, что этот SPN не зарегистрирован. Если SPN уже зарегистрирован, перед созданием keytab-файла нужно удалить привязку SPN к учетной записи или удалить саму учетную запись в Active Directory, к которой был привязан этот SPN.
Пример проверки SPN для одного Управляющего и двух Подчиненных узлов: setspn -Q HTTP/control-01.test.local@TEST.LOCAL setspn -Q HTTP/secondary-01.test.local@TEST.LOCAL setspn -Q HTTP/secondary-02.test.local@TEST.LOCAL |
Создание keytab-файла
Keytab-файл создается на сервере контроллера домена или на компьютере под управлением Windows Server, входящем в домен, под учетной записью с правами доменного администратора.
Чтобы создать keytab-файл, используя одну учетную запись:
control-user
).control-user
с помощью утилиты ktpass. Для этого в командной строке выполните следующую команду:C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) Управляющего узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser control-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out <путь к файлу>\<имя файла>.keytab
Утилита запросит пароль пользователя control-user
в процессе выполнения команды.
В созданный keytab-файл будет добавлено SPN Управляющего узла. На экране отобразится сгенерированная соль: Hashing password with salt "<хеш-значение>".
C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser control-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <путь и имя ранее созданного файла>.keytab -out <путь и новое имя>.keytab -setupn -setpass -rawsalt "<хеш-значение соли, полученное при создании keytab-файла на шаге 3>"
Утилита запросит пароль пользователя control-user
в процессе выполнения команды.
Keytab-файл будет создан. Этот файл будет содержать все добавленные SPN узлов кластера.
Пример: Например, вам нужно создать keytab-файл, содержащий SPN-имена 3 узлов: Чтобы создать в папке C:\keytabs\ файл под названием
Допустим, вы получили соль Для добавления еще одного SPN необходимо выполнить следующую команду:
Для добавления третьего SPN необходимо выполнить следующую команду:
В результате будет создан файл с именем |
Чтобы создать keytab-файл, используя отдельную учетную запись для каждого узла:
control-user
, secondary1-user
, secondary2-user
и т.д.).control-user
с помощью утилиты ktpass. Для этого в командной строке выполните следующую команду:C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) Управляющего узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser control-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out <путь к файлу>\<имя файла>.keytab
Утилита запросит пароль пользователя control-user
в процессе выполнения команды.
В созданный keytab-файл будет добавлено SPN Управляющего узла.
C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser secondary1-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <путь и имя ранее созданного файла>.keytab -out <путь и новое имя>.keytab
Утилита запросит пароль пользователя secondary1-user
в процессе выполнения команды.
Keytab-файл будет создан. Этот файл будет содержать все добавленные SPN узлов кластера.
Пример: Например, вам нужно создать keytab-файл, содержащий SPN-имена 3 узлов: Чтобы создать в папке C:\keytabs\ файл под названием
Для добавления еще одного SPN необходимо выполнить следующую команду:
Для добавления третьего SPN необходимо выполнить следующую команду:
В результате будет создан файл с именем |
Действия после создания keytab-файла
После создания keytab-файла следует для каждого SPN убедиться. что он зарегистрирован и привязан к соответствующей учетной записи. Сделать это можно с помощью команды setspn -Q <SPN>,
где <SPN>
имеет следующий вид: HTTP/<полное доменное имя (FQDN) узла кластера>@<realm имя домена Active Directory в верхнем регистре>
.
Команда должна вернуть ответ "Existing SPN found"
и учетную запись, к которой привязан SPN.
Дополнительно после создания keytab-файла можно проверить список SPN, который привязан к соответствующей учетной записи. Сделать это можно с помощью команды setspn -L <account>
, где <account>
имеет следующий вид: <имя пользователя>@<realm имя домена Active Directory в верхнем регистре>
.
Если keytab-файл создан с одной учетной записью, команда должна вернуть список всех SPN, для которых создавался keytab-файл. Если keytab-файл создан с отдельными учетными записями для каждого узла, то команда должна вернуть один SPN, который привязан к конкретной учетной записи.
Пример команды для одной учетной записи: setspn -L control-user@TEST.LOCAL Пример команды для отдельных учетных записей для каждого узла: setspn -L control-user@TEST.LOCAL setspn -L secondary1-user@TEST.LOCAL setspn -L secondary2-user@TEST.LOCAL |