No Kerberos, o Authentication Server (AS) e o Ticket Granting Server (TGS) geralmente são implementados no mesmo servidor. Esta máquina é chamada de Key Distribution Center (KDC).
Certamente, faz sentido implementar esses serviços na mesma máquina física, pois em redes pequenas e médias seria exagero separar esses dois serviços. Além disso, tenho uma fonte relativamente confiável, que diz (traduzida):
O TGS e o AS precisam acessar o mesmo DB => não faz muito sentido implementar o TGS e o AS em máquinas diferentes
No entanto, não vejo qual banco de dados deve ser compartilhado entre os dois.
Essa é minha ideia: como eu separaria o AS e o TGS, não há bancos de dados compartilhados:
- Como AS e TGS são separados, eles têm um Master Secret diferente
- O AS possui um banco de dados com todos os usuários com o respectivo segredo principal (usado quando o Usuário entra para criptografar a chave da sessão), bem como o segredo principal do TGS (para criptografar os TGTs solicitados).
- O TGS possui um banco de dados, que permite determinar qual usuário tem permissão para usar qual serviço (ACL, lista de revogação, ...), além de um banco de dados com todos os serviços com seus respectivos segredos principais (para criptografar tickets).
Quando um usuário deseja usar um serviço (simplificado):
- Autenticar no AS
- Obtenha um TGT (Ticket Granting Ticket), criptografado com o TGS Master Secret, bem como a chave da sessão, criptografada com o segredo principal do usuário.
- Entre em contato com o TGS com o TGT
- Adquira um ticket, criptografado com o segredo principal do serviço
- Entre em contato com o serviço com o ticket
Estou faltando alguma coisa ou realmente não há nenhum problema em separar o AS e o TGS?