Table of Contents
LDAP
O LDAP (Lightweight Directory Access Protocol) é um protocolo utilizado para acessar e manter serviços de diretório, permitindo o armazenamento e recuperação de informações estruturadas, como usuários, grupos, permissões e outros recursos, de forma centralizada.
Nosso LDAP é usado para armazenar e organizar informações sobre usuários, grupos, hosts, pontos de montagem do NFS e regras de sudo, centralizando esses dados para facilitar o acesso e a administração do sistema.
Todos os serviços do projeto utilizam o LDAP em alguma instância, seja para autenticação ou apenas para fornecer informações.
Estrutura
No projeto, estamos utilizando o esquema nis baseado na RFC2307bis para nosso LDAP. O esquema nis (Network Information Service) define como armazenar no LDAP informações importantes para sistemas Unix, como usuários, grupos, hosts, automount do NFS e regras de sudo. Ele serve como um modelo para organizar e centralizar esses dados, facilitando a integração com diferentes serviços e sistemas. A RFC2307bis expande as funcionalidades do esquema nis, permitindo que membros de grupos sejam referenciados por seus DNs (Distinguished Names), ao invés de apenas pelos nomes de usuário. No nosso caso, optamos pelo uso desta versão pois ele oferece suporte à interface memberOf, que permite consultar a quais grupos um usuário pertence sem a necessidade de listar diretamente os grupos, criítico para aplicações como o Gitea para fornecer permissões de administrador a usuários do LDAP.
Utilizamos os esquemas ldapPublicKey, sudo e groupOfEntries para atender às nossas necessidades de gerenciamento. Optamos pelo groupOfEntries porque os esquemas da RFC2307bis, como groupOfNames e groupOfUniqueNames, não permitem a criação de grupos sem membros. Isso seria um problema no nosso caso, já que não seria possível criar grupos primários com o mesmo nome do usuário, pois o grupo primário padrão do usuário não inclui o próprio usuário como membro na lista de membros.
Todas essas informações são integradas nos computadores utilizando o SSSD, garantindo acesso centralizado e consistente aos dados armazenados no LDAP.
Usuários e grupos
No projeto, utilizamos o LDAP para armazenar os usuários e os grupos aos quais eles pertencem. Isto permite que tanto os computadores com Linux quanto os serviços utilizem essas informações para autenticar usuários e autorizar ações conforme os níveis de privilégio concedidos aos diferentes grupos. Isso garante uma gestão centralizada e eficaz dos acessos.
Sudo
Também armazenamos as regras de sudo. Essas regras são aplicáveis apenas aos usuários do LDAP, garantindo que a administração de privilégios elevados seja centralizada e consistente.
Hosts
Também utilizamos a classe ipHost para armazenar informações como o IP, hostname e MAC das máquinas do laboratório e dos servidores.
Automounts
Armazenamos as informações dos pontos de montagem do NFS no LDAP utilizando a classe automount. Isso nos permite gerenciar e alterar as configurações dos pontos de montagem de forma centralizada.
Instância
No projeto, nossa instância do LDAP está rodando no Docker, configurada através do Docker Compose, utilizando a imagem osixia/openldap. Ela faz parte da stack chamada openldap, que gerencia o serviço de diretório de forma centralizada. O reverse proxy tcp com terminação SSL está configurado por meio do Traefik na porta 33004 e pode ser acessado pelo endereço ldaps://ldap.alice.ufsj.edu.br:33004.
Gerenciamento de usuários
O gerenciamento de usuarios é feito através do PHP Ldap Admin (PLA).