Por Márcio Flavio Luiz*
O LDAP – acrônimo de Lightweight Directory Access Protocol, ou Protocolo Leve de Acesso a Diretórios, em português – é baseado em X.500 e atua sobre o protocolo TCP. Ele utiliza duas portas: a 389, em que as transações entre cliente e servidor não são criptografadas; e a 636, quando essas transações são realizadas utilizando criptografia por meio de certificados gerados a partir do OpenSSL.
O funcionamento do LDAP é baseado no modelo cliente-servidor. Um ou mais servidores possuem os dados gravados em banco de dados Berkeley, que é um banco de dados do tipo não relacional. O processo de gravação e leitura desses dados utiliza mecanismos do próprio serviço e basicamente são utilizadas duas funções: a de leitura e a de escrita. Na leitura o cliente faz a pergunta para o servidor, que responde conforme as premissas enviadas pelo cliente. Já na escrita, o cliente envia para o servidor os dados que deverão ser gravados, mas eles só serão gravados se a lista de objetos/atributos estiverem disponíveis e respeitarem as políticas de escrita predefinidas no serviço do LDAP.
Esse serviço geralmente é utilizado para prover uma base de dados, em que são criados objetos organizados em árvore de maneira lógica e hierárquica, armazenando informações por atributos com valores determinados, que serão utilizados para filtros de pesquisas e validações. Os atributos, por sua vez, são disponibilizados via objectClasses previamente carregados por meio do arquivo de configurações do serviço, e o conjunto de atributos que cada objectClass disponibiliza são descritos e criados nos arquivos de schemas – local em que informamos o tamanho do campo, OIDs e a obrigatoriedade de utilização dos atributos.
Sem que possamos perceber, o LDAP é utilizado em várias soluções como back-end de armazenamento em estrutura de diretórios, como por exemplo: Active Directory da Microsoft, iDirectory da Novel e Tivoli da IBM. Embora pertençam a fabricantes diferentes, a maneira como são organizados e os métodos utilizados para gravação, modificação e leitura desses dados estão descritos na RFC 5411 (https://tools.ietf.org/html/
Atualmente, o OpenLDAP pode ser integrado à maioria dos serviços e também utilizado para outros fins. Usando como exemplo o case do Instituto das Cidades Inteligentes (ICI), a infraestrutura de LDAP foi desenhada para funcionar de forma ininterrupta, com alta disponibilidade e preparado para um grande crescimento. Ele é administrado pela ferramenta de gestão de domínios OpenDC e baseado em processos do ITIL, fazendo com que essa base de dados tenha também uma vertente para a gestão de serviços. A ferramenta OpenDC é uma solução desenvolvida em Java e suas ações são realizadas diretamente na camada do serviço de diretórios, mas existem outros meios de se criar, alterar e ler os objetos criados na base de dados. Além disso, o LDAP é utilizado como repositório de configurações utilizadas nos serviços do Squid e essa estratégia também é utilizada na solução de mensageria com Zimbra.
No nível de autenticação, grande parte das liberações de acesso aos serviços e aplicações utiliza grupos, nos quais são inseridos usuários que possuem tais permissões, como no proxy, em que a utilização desses grupos chega ao nível de perfis de acesso. Nesse caso, foram utilizados mecanismos que aperfeiçoam as buscas, fazendo com que a procura por um determinado objeto na árvore de diretórios se torne mais objetiva, rápida e que, principalmente, não degrade o desempenho do serviço, que atualmente recebe em torno de 3.000 conexões por segundo.
A escolha pelo OpenLDAP foi definida a partir dos princípios da utilização da solução de software livre e para que qualquer alteração na estrutura e desenho da árvore de diretórios não ficasse de forma engessada, como acontece em outras soluções disponíveis no mercado. Atualmente, a base de conhecimento é bastante extensa, visto que grande parte da comunidade utiliza o OpenLDAP. Além disso, o OpenLDAP é muito flexível e possibilita várias customizações e adequações conforme a necessidade do negócio.
*Márcio Flavio Luiz é analista de Infraestrutura de TI no Instituto das Cidades Inteligentes (ICI), onde atua na equipe de suporte nível III, com especialidade em Linux. Formado em Redes de Computadores, pós-graduado em Redes e Segurança de Sistemas e cursando atualmente a pós-graduação em Virtualização de Redes e Computação em Nuvem.