6.8.1. Назначение и формат SPN
SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса.
SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью сервиса (service logon account). Это позволяет клиентским приложением аутентифицироваться в роли сервиса даже не зная имени пользователя.
До того как аутентификация Kerberos сможет использовать
SPN для аутентификации сервиса,
SPN должен быть привязан к учётной записи, которая будет использоваться для входа. К учётной записи может быть привязано несколько
SPN.
SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к
SPN, изменяется, то необходимо заново выполнить привязку.
Можно иметь столько SPN, сколько необходимо. Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет
SPN для этого экземпляра, далее использует этот
SPN для аутентификации. Если клиент не может найти правильный SPN, он не сможет запросить билет службы.
SPN состоит из двух обязательных элементов и двух дополнительных элементов:
<service class>/<host>:<port>/<service name>
Элементы SPN:
service class (обязательный элемент) — строка, указывающая на класс, к которому относится сервис (например: HTTP, www, ldap и т. п.);
host (обязательный элемент) — имя компьютера, на котором работает сервис; это может быть полное доменное имя (FQDN) или NetBIOS-имя;
port — номер порта; может использоваться в том случае, если несколько экземпляров сервиса одного класса работают на одном узле; не требуется указывать, если экземпляр сервиса один и работает на стандартном для своего класса порту;
service name — имя реплицируемого сервиса, которое позволяет идентифицировать предоставляемые сервисом данные или обслуживаемый сервисом домен; в качестве имени могут использоваться DN-имя или objectGUID объекта службы каталогов, DNS-имя домена (если сервис реализует определенную службу на уровне всего домена), DNS-имя записи SRV или MX.
Если клиент не может найти правильный SPN, он не сможет запросить билет службы. Поэтому формирование SPN было глобально нормализовано:
для файлового сервера могут использоваться следующие SPN (их можно добавить столько, сколько нужно):
HOST/fileserver.test.alt
HOST/fileserver
HOST/fileserver@TEST.ALT
CIFS/fileserver.test.alt
на практике можно сопоставить SPN с IP-адресом, но это не рекомендуется:
Keytab-файл — это файл содержащий пары Kerberos принципалов и их ключей (полученных с использованием Kerberos пароля). Эти файлы используются для аутентификации в системах, использующих Kerberos, без ввода пароля. Если пароль принципала изменится, то keytab-файл необходимо будет сгенерировать заново.
Каждый кто имеет разрешения на чтения keytab-файла может воспользоваться любыми ключами в нем. Чтобы предотвратить нежелательное использование, необходимо ограничивать права доступа при создании keytab-файла.