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?
Respostas:
Sua pergunta é toda teoria. Então eu vou responder da mesma forma. O AS e o TGS são servidores lógicos e, como tal, poderiam teoricamente ser separados. Mas, na prática, não há boas razões para implementá-las em máquinas separadas e, portanto, ninguém faz isso na vida real. Mesmo as redes maiores e mais movimentadas do mundo em termos de autenticação Kerberos não precisam separar os componentes lógicos dos KDCs. Nas implementações reais do Kerberos, todos os dados que o AS precisa e todos os dados que o TGS precisa são armazenados no mesmo banco de dados. Ele poderia , teoricamente, ser separados, mas simplesmente não há uma boa razão para fazê-lo e não faria nada, mas desnecessariamente complicar a execução.
fonte