В Kerberos сервер аутентификации (AS) и сервер предоставления билетов (TGS) обычно реализуются на одном сервере. Эта машина называется центром распространения ключей (KDC).
Конечно, имеет смысл реализовать эти сервисы на одной и той же физической машине, поскольку в небольших и средних сетях было бы излишним разделять эти две службы. Кроме того, у меня есть относительно надежный источник, который говорит (переведено):
TGS и AS должны иметь доступ к одной и той же базе данных => нет смысла внедрять TGS и AS на разных машинах
Однако я не вижу, какая база данных должна быть разделена между ними.
Это моя идея, как бы я разделил AS и TGS, нет общих баз данных:
- Поскольку AS и TGS разделены, у них есть другой главный секрет
- AS имеет базу данных со всеми пользователями с соответствующим мастер-секретом (используется при входе пользователя для шифрования ключа сеанса), а также мастер-секрет TGS (для шифрования запрошенных TGT).
- TGS имеет базу данных, которая позволяет ему определить, какой пользователь может использовать какую службу (ACL, список отзыва, ...), а также базу данных со всеми службами с соответствующими мастер-секретами (для шифрования билетов).
Когда пользователь хочет использовать сервис (упрощенно):
- Аутентификация в AS
- Получите билет для предоставления билета (TGT), зашифрованный с помощью главного секрета TGS, а также ключ сеанса, зашифрованный с помощью главного секрета пользователя.
- Связаться с TGS с TGT
- Получить билет, зашифрованный с помощью главного секрета Сервиса
- Обратитесь в Сервис с Билетом
Я что-то упускаю или вообще нет проблем с разделением AS и TGS?
Ответы:
Ваш вопрос - это все теория. Поэтому я отвечу тем же. AS и TGS являются логическими серверами, и теоретически они могут быть разделены. Но на практике не было веских причин для их реализации на отдельных машинах, и никто не делает этого в реальной жизни. Даже самые крупные и загруженные сети в мире с точки зрения аутентификации Kerberos не нуждаются в выделении логических компонентов KDC. В реальных реализациях Kerberos все данные, которые нужны AS, и все данные, которые нужны TGS, хранятся в одной базе данных. Это может теоретически быть разделено , но есть просто не хороший повод , чтобы сделать это , и не будет делать ничего , но напрасно усложняет реализацию.
источник