W Kerberos, serwer uwierzytelniania (AS) i serwer przyznawania biletów (TGS) są zazwyczaj zaimplementowane na tym samym serwerze. To urządzenie nazywa się Centrum dystrybucji kluczy (KDC).
Z pewnością sensowne jest wdrożenie tych usług na tej samej maszynie fizycznej, ponieważ w małych i średnich sieciach rozdzielenie tych dwóch usług byłoby nadmierną przesadą. Dodatkowo mam stosunkowo wiarygodne źródło, które mówi (przetłumaczone):
TGS i AS muszą mieć dostęp do tego samego DB => nie ma sensu wdrażanie TGS i AS na różnych komputerach
Jednak nie widzę, która baza danych musi być dzielona między nimi.
Oto mój pomysł, jak oddzielić AS i TGS, nie ma wspólnych baz danych:
- Ponieważ AS i TGS są oddzielone, mają one inny Master Secret
- AS ma bazę danych ze wszystkimi użytkownikami z ich głównym kluczem tajnym (używanym, gdy Użytkownik loguje się, do szyfrowania klucza sesji), a także kluczem głównym TGS (do szyfrowania żądanych TGT).
- TGS ma bazę danych, która pozwala określić, który użytkownik może korzystać z której usługi (ACL, lista odwołania, ...), a także bazę danych ze wszystkimi usługami z ich odpowiednimi tajnymi kluczami głównymi (do szyfrowania Biletów).
Gdy użytkownik chce skorzystać z usługi (uproszczonej):
- Uwierzytelnij w AS
- Uzyskaj bilet przyznający bilet (TGT), zaszyfrowany przy użyciu głównego klucza tajnego TGS, a także klucz sesji zaszyfrowany przy użyciu głównego klucza tajnego użytkownika.
- Skontaktuj się z TGS z TGT
- Zdobądź bilet, zaszyfrowany głównym sekretem serwisu
- Skontaktuj się z obsługą z biletem
Czy coś mi brakuje, czy naprawdę nie ma żadnego problemu z oddzieleniem AS i TGS?
Odpowiedzi:
Twoje pytanie to cała teoria. Więc odpowiem w naturze. AS i TGS są serwerami logicznymi i jako takie można je teoretycznie rozdzielić. Ale w praktyce nie ma dobrego powodu, aby wdrażać je na osobnych maszynach, więc nikt nie robi tego w prawdziwym życiu. Nawet największe, najbardziej obciążone sieci na świecie pod względem uwierzytelniania Kerberos nie muszą rozdzielać logicznych komponentów KDC. W rzeczywistych implementacjach Kerberos wszystkie dane potrzebne AS i wszystkie dane TGS są przechowywane w tej samej bazie danych. To mogłoby teoretycznie być oddzielone, ale po prostu nie ma dobry powód, aby to zrobić i zrobi nic, ale niepotrzebnie skomplikować realizację.
źródło