Saltar para o conteúdo principal

Kerberos

Autenticação e Propagação de Identidade

Kerberos icon

A autenticação pode ser categorizada em dois tipos:

  • Autenticação de Serviços: Verifica a identidade entre diferentes componentes de serviço como HDFS, YARN, MapReduce, etc.

  • Autenticação de Usuário: Um processo que permite a um dispositivo verificar a identidade dum usuário/cliente que se conecta a um recurso de rede. Sem a autenticação de usuário, o serviço simplesmente confia na informação de identidade fornecida pelo cliente.

    Na maioria dos cenários, uma senha é utilizada como prova de identidade. No entanto, é necessário prevenir a interceptação ou "escuta" desta senha e disponibilizar um meio de autenticação de usuários, de modo que sempre que um usuário solicitar um serviço, ele deve provar sua identidade.

Autenticação e Propagação de Identidade
Autenticação e Propagação de Identidade

Características do Kerberos

O Kerberos é o resultado dum esforço do MIT - Massachusetts Institute of Technology, conhecido como "Projeto Athena", iniciado em 1983. É um protocolo de autenticação de computadores em rede de código aberto, que disponibiliza Login Único (SSO) baseado num serviço de autenticação mútua confiável (usuários e serviços dependem de uma terceira parte: o servidor Kerberos). Foi adotado pelo time Hadoop como componente para autenticação para acesso ao Cluster Hadoop. Dentre suas principais características, destacamos:

  • Confiabilidade:

    • Os serviços com acesso controlado pelo protocolo só estarão disponíveis se o Kerberos também estiver. Utiliza uma arquitetura distribuída de servidores, com sistemas habilitados a fazer cópia de segurança uns dos outros.
    • É um sistema de autenticação mútua que garante não apenas que o usuário é quem diz ser, mas também que os serviços que o usuário está acessando são os esperados. Usuários e o servidor sempre estarão seguros de que a contraparte com a qual estão interagindo é autêntica.
  • Escalabilidade: As senhas ou chaves secretas são conhecidas apenas pelo Centro de Distribuição de Chaves (KDC) e pelos principais do Kerberos (identidades únicas, como utilizadores ou serviços), tornando o sistema escalável para autenticar um grande número de entidades. Cada entidade precisa apenas de conhecer a sua própria chave secreta e registá-la previamente no KDC.

  • Segurança: A senha do usuário nunca é transmitida pela rede. O Kerberos utiliza bilhetes temporários (como o TGT e o Bilhete de Serviço), que são emitidos pelo servidor de autenticação (KDC) e têm um tempo de vida limitado.

  • Transparência: O usuário não tem conhecimento do processo de autenticação em si, exceto pela solicitação de uma senha.

  • Simplicidade: Utiliza o sistema SSO (Single Sign-On), onde um único ticket pode ser usado por todos os serviços até que a validade expire.
    Simplifica o gerenciamento de usuários: Criar, deletar, atualizar usuários no Kerberos é muito simples.

  • Velocidade, pois utiliza Operações de Chave Simétrica, que são sempre mais rápidas em operações de autenticação SSL, que é baseada em chaves públicas e privadas.

  • Adaptabilidade, pois integra-se facilmente com fornecedores de identidade empresariais, como o Active Directory, o FreeIPA ou sistemas baseados em LDAP.

Arquitetura do Kerberos

O Kerberos opera no modelo cliente-servidor. Seu funcionamento básico consiste em:

  • Um ticket, que é um tipo de certificado, que informa de forma segura a identidade do usuário para quem o acesso foi originalmente concedido.
  • Um autenticador, que é uma credencial gerada pelo cliente com informações que serão comparadas com o ticket, garantindo assim que o cliente que está apresentando o ticket é o mesmo para quem o ticket foi concedido.
  • Um centro de distribuição de chaves, que disponibiliza tickets válidos temporariamente ao usuário para aceder uma aplicação, que serão ratificados pelo autenticador. A aplicação examina o ticket e o autenticador quanto à validade e concede o acesso caso sejam válidos.

Para autenticar e verificar a autenticidade dos consumidores, o Kerberos utiliza criptografia de chave simétrica (a mesma chave é usada para cifrar e decifrar os dados) e um componente central denominado KDC (Centro de Distribuição de Chaves), que mantém uma base de dados com todas as chaves secretas. Este processo envolve três componentes principais:

  • Servidor de Autenticação (AS) – realiza a autenticação inicial do utilizador e emite o Ticket Granting Ticket (TGT).
  • Servidor de Concessão de Bilhetes (TGS) – emite bilhetes específicos para serviços com base no TGT previamente obtido, evitando que a palavra-passe do utilizador tenha de ser reutilizada.
  • Base de Dados Kerberos – armazena as chaves secretas e as identidades de todos os utilizadores e serviços autorizados no sistema.

A ideia que norteia a solução é a existência dum servidor capaz de entregar tickets ao usuário para aceder serviços. Esses tickets permanecem válidos por um determinado período. O serviço não necessita de contactar o KDC para validar o bilhete, pois consegue validá-lo localmente utilizando a chave secreta que partilha com o KDC.:

  • O cliente solicita um ticket ao servidor Kerberos.

  • O cliente submete o ticket ao serviço pretendido e é autenticado.

    note

    Não existe a possibilidade de falsificar uma identidade ou forjar/reutilizar um ticket.

Autenticação de Serviços

Os serviços se autenticam com o Kerberos quando são iniciados, através do Kerberos Principal (uma identidade única que pode receber tickets para autenticação) e da keytab (que contém as credenciais de autenticação de recursos do cluster).

O Kerberos Principal autentica o serviço através da chave na keytab.

Após a autenticação, o KDC emite o ticket, que será inserido no conjunto de credenciais privadas. O serviço pode então atender ao cliente.

O processo de autenticação do usuário ocorre, resumidamente, da seguinte forma:

  • O usuário se autentica usando seu Kerberos Principal.
    note

    Inicialmente, o usuário deve fazer login na máquina cliente que está habilitada a se comunicar com o Cluster Hadoop.

  • O usuário executa o comando kinit com o Kerberos Principal e a senha.
  • Kinit autentica o usuário no KDC, obtendo o ticket resultante e colocando-o no cache de tickets no sistema de ficheiros.
Arquitetura Kerberos
Arquitetura Kerberos

Melhores Práticas para o Kerberos

  • As configurações de criptografia no Kerberos geralmente são definidas para uma variedade de tipos, incluindo escolhas "fracas" como DES, por padrão. É recomendável remover os tipos fracos para garantir a melhor segurança possível.

  • Ao usar AES-256, as extensões criptográficas Java precisam ser instaladas em todos os nós do cluster para permitir tipos de criptografia de "força ilimitada". É importante notar que alguns países proíbem o uso desses tipos de criptografia.

  • Em ambientes onde os usuários do Active Directory (AD) precisam aceder Serviços Hadoop, é recomendável estabelecer confiança unidirecional entre Hadoop Kerberos e o Domínio AD.

  • Como o Kerberos é um protocolo sensível ao tempo, todos os hosts no domínio devem ser sincronizados pelo tempo, por exemplo, usando o Network Time Protocol (NTP). Se a hora do sistema local dum cliente diferir daquela do KDC em apenas 5 minutos (o padrão), o cliente não poderá se autenticar.

Detalhes do Projeto Kerberos

O Kerberos foi desenvolvido em C.

Fontes: