Назад | Перейти на главную страницу

Имеет ли значение полное доменное имя Kerberos SPN для сервера или достаточно ключа?

Большую часть времени я провожу разработчиком, поэтому не знаю всех деталей ...

У меня есть служба, работающая на хосте Linux. Я хочу использовать Kerberos для передачи идентификационной информации службе. Некоторые из моих клиентов используют клиенты Windows, подключенные к AD, поэтому у них уже есть билет. Я понимаю, как использовать kinit для получения билета на моих клиентах * nix, и подтвердил, что могу это сделать. У меня есть файл /etc/krb5.conf, который, похоже, работает на моих * nix-клиентах.

Я понимаю, что мне нужно сделать следующее ...

  1. Попросите администратора AD создать keytab для определенного SPN.
  2. Поместите keytab на моем сервере в место, где служба сможет его найти.
  3. клиенты используют билет и SPN для получения токена из инфраструктуры Kerberos.
  4. Настройте службу на получение токена и его декодирование с помощью keytab.

Вот моя проблема ...

SPN обычно имеет форму service_name / FQDN @ domain_name. Однако мои клиенты не создают SPN, используя имя хоста службы. Вместо этого SPN устанавливается в файле конфигурации. Для меня было бы проще, если бы я мог создать одно SPN и использовать его на каждом экземпляре моего сервера.

Итак, я бы сделал следующее ...

  1. Создайте SPN вида имя_службы / какое-то_ фиктивное_имя @ имя_домена.
  2. Создайте keytab и скопируйте его в svr1.mycompany.mydomain, svr2.mycompany.mydomain, ..., svrX.mycompany.mydomain.
  3. Настройте мои клиенты с одним SPN.

Я думаю, что это сработает, поскольку один и тот же SPN / keytab может использоваться на нескольких серверах с разными именами хостов, когда серверы кластеризованы.

Вкратце - является ли полное доменное имя частью имени участника-службы важной для сервера или оно существует только для того, чтобы типичные клиенты могли генерировать правильное имя участника-службы? Если несколько серверов имеют одну и ту же вкладку ключей, могут ли они получать и проверять одни и те же токены, или требуется что-то еще?

Подчеркну, что сервис - это java-приложение для Linux, клиенты - java-приложения для Windows и * nix. AD предоставит инфраструктуру сервера Kerberos.

В случае, если вы обрисовываете в общих чертах, это должно работать. Вы можете использовать keytab на нескольких машинах, если у всех клиентов есть способ выяснить, для какого принципала службы запрашивать ключ службы. Kerberos требует, чтобы обе стороны соединения определили принципала службы с помощью некоторых внешних средств. Обычно это соглашение, основанное на DNS-имени сервера, но в Kerberos нет ничего, что требует этого.

Я бы сказал, что это разумное решение, если количество серверов "невелико" и нет требований безопасности для регулярной ротации keytab.