En Kerberos, el servidor de autenticación (AS) y el servidor de concesión de tickets (TGS) generalmente se implementan en el mismo servidor. Esta máquina se llama Centro de distribución de claves (KDC).
Seguramente, tiene sentido implementar estos servicios en la misma máquina física, ya que en redes pequeñas y medianas sería excesivo separar estos dos servicios. Además, tengo una fuente relativamente confiable, que dice (traducida):
TGS y AS tienen que acceder al mismo DB => no tiene mucho sentido implementar TGS y AS en diferentes máquinas
Sin embargo, no veo qué base de datos se debe compartir entre los dos.
Esta es mi idea, cómo separaría AS y TGS, no hay bases de datos compartidas:
- Como AS y TGS están separados, tienen un secreto maestro diferente
- El AS tiene una base de datos con todos los usuarios con su respectivo secreto maestro (utilizado cuando el Usuario inicia sesión, para cifrar la clave de sesión), así como el secreto maestro del TGS (para cifrar los TGT solicitados).
- El TGS tiene una base de datos, que le permite determinar qué usuario puede usar qué servicio (ACL, lista de revocación, ...), así como una base de datos con todos los servicios con sus respectivos secretos maestros (para encriptar Tickets).
Cuando un usuario quiere usar un servicio (simplificado):
- Autenticar en el AS
- Obtenga un Ticket Granting Ticket (TGT), cifrado con el secreto maestro de TGS, así como la clave de sesión, cifrada con el secreto maestro del usuario.
- Póngase en contacto con el TGS con el TGT
- Obtenga un boleto, encriptado con el secreto maestro del servicio
- Póngase en contacto con el servicio con el boleto
¿Me estoy perdiendo algo o realmente no hay ningún problema para separar el AS y el TGS?