Создание keytab-файла

Вы можете использовать одну учетную запись для аутентификации на всех узлах кластера. Для этого требуется создать 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-файл, используя одну учетную запись:

  1. В оснастке Active Directory Users and Computers создайте учетную запись пользователя (например, с именем control-user).
  2. Чтобы использовать алгоритм шифрования AES256-SHA1, в оснастке Active Directory Users and Computers выполните следующие действия:
    1. Откройте свойства созданной учетной записи.
    2. На закладке Account установите флажок This account supports Kerberos AES 256 bit encryption.
  3. Создайте keytab-файл для пользователя 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 "<хеш-значение>".

  4. Для каждого узла кластера добавьте в keytab-файл запись SPN. Для этого выполните следующую команду:

    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 узлов: control-01.test.local, secondary-01.test.local и secondary-02.test.local.

Чтобы создать в папке C:\keytabs\ файл под названием filename1.keytab, содержащий SPN Управляющего узла, требуется выполнить команду:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out C:\keytabs\filename1.keytab

Допустим, вы получили соль "TEST.LOCALHTTPcontrol-01.test.local".

Для добавления еще одного SPN необходимо выполнить следующую команду:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

Для добавления третьего SPN необходимо выполнить следующую команду:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

В результате будет создан файл с именем filename3.keytab, содержащий все три добавленные SPN.

Чтобы создать keytab-файл, используя отдельную учетную запись для каждого узла:

  1. В оснастке Active Directory Users and Computers создайте отдельную учетную запись пользователя для каждого узла кластера (например, учетные записи с именами control-user, secondary1-user, secondary2-user и т.д.).
  2. Чтобы использовать алгоритм шифрования AES256-SHA1, в оснастке Active Directory Users and Computers выполните следующие действия:
    1. Откройте свойства созданной учетной записи.
    2. На закладке Account установите флажок This account supports Kerberos AES 256 bit encryption.
  3. Создайте keytab-файл для пользователя 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 Управляющего узла.

  4. Для каждого узла кластера добавьте в 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 узлов: control-01.test.local, secondary-01.test.local и secondary-02.test.local.

Чтобы создать в папке C:\keytabs\ файл под названием filename1.keytab, содержащий SPN Управляющего узла, требуется выполнить команду:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out C:\keytabs\filename1.keytab

Для добавления еще одного SPN необходимо выполнить следующую команду:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser secondary1-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab

Для добавления третьего SPN необходимо выполнить следующую команду:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser secondary2-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab

В результате будет создан файл с именем filename3.keytab, содержащий все три добавленные 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

В начало