Lightweight Directory Access Protocol (LDAP)

O que é o LDAP?

LDAP é um protocolo de acesso a diretórios leves. ELE NÃO É UM ACTIVE DIRECTORY, ele é um protocolo de busca. Resumidamente, você armazena dados e as aplicações buscam esses dados… bem como se fosse um banco de dados em forma de árvores usado para buscas utimizadas.

Estrutura do LDAP

Deixarei 3 nomenclaturas para exemplicar e resumir boa parte da estrutura do LDAP. Porém, seguiremos com foco na solução OPENLDAP, assim conseguimos seguir uma linha de raciocinio para configuração e exemplo.

  • 1 - ObjectClass:
    • É uma CLASSE que contém um conjunto de ATRIBUTOS necessários para criar um dado.
    • Você só pode inserir um dado no LDAP usando uma ObjectClass, e consequentemente, os atributos que ela permitir.
    • Existem dois tipos: AUXILIARY & STRUCTURAL.
    • TODO registro precisa de uma STRUCTURAL.
    • Uma AUXILIARY adiciona novos atributos.

REPRESENTAÇÃO DE UMA CLASSE

  • Classe STRUCTURAL

👇🏻 Atributos

NAME: ’nomedaclasse'

SUP: ’top’ (superior a essa classe)

STRUCTURAL: (tipo da classe)

👇🏻 Tipos de atributos que podem ser usados MUST: (tipo must -o dado que obrigariatoriamente deve conter-)

MAY: (tipo may -o que pode passar opcionalmente-)

  • Classe AUXILIARY

👇🏻 Atributos

NAME: ’nomedaclasse'

SUP: ’top’ (superior a essa classe)

AUXILIARY: (tipo da classe)

👇🏻 Tipos de atributos que podem ser usados

DESC: (abstracao de uma conta com atributos posix)

MUST: (tipo must -o dado que obrigariatoriamente deve conter-)

MAY: (tipo may -o que pode passar opcionalmente-)

  • 2 - Attribute:
    • Os Atributos são o que as ObjectClass tem de informação (conforme exemplo das classes acima). São os dados que a aplicação pode utilizar quando se conectar com o LDAP.

EXEMPLO DE DADOS QUE PODEMOS CONTER NO ATRIBUTO MUST cn=matheus uid=matheus uidNumber=9000 gidNumber=9000 homeDirectory=/home/matheus

  • 3 - Schemas:
    • O schema nada mais é como se fosse um plugin, ele é um arquivo que contém a descrição de várias Classes(objectclasses). Exemplo: um arquivo que contenha todas as informações para importar determinado atributo em uma objectclasses (arquivo ldif).

EXEMPLO DE ARVORE LDAP diagrama

OPENLDAP

O OpenLDAP é uma solução open source de implementação do LDAP em um ambiente.

ESTRUTURA DO OPENLDAP

  • Access Control (ACL) - Controle de quem pode executar qual ação dentro do ldap. Sintaxe do atributo OLC Access (utilizado pelo ACL).
olcAccess: to<what>by<who><accesslevel>

tipos de utilização do "<what>": dn.base=“ou=people,o=suffix” 👈🏻 tudo que esteja no mesmo DN dn.one=“ou=people,o=suffix” 👈🏻 tudo que tenha o DN como pai dn.subtree=“ou=people,o=suffix” 👈🏻 tudo abaixo do DN, incluindo o DN dn.children=“ou=people,o=suffix” 👈🏻 tudo abaixo do DN

tipos de utilização do "<who>":

UTILIZACAO PARA QUEM
* Todos, incluindo anonimo e usuarios autenticados
anonymous Usuarios não autenticados
users Usuarios autenticados
self Usuarios associados com o target
dn [.<basic-style>]=<regex> Usuarios que combinem com a RegEx
dn [.<scope-style>]=<DN> Usuarios no escopo de uma DN

tipos de permissões do "<accesslevel>":

PERMISSAO REPRESENTACAO DESCRICAO
none 0 Sem acesso
disclose d Mostrar o what em mensagens de erro
auth dx Acesso a um atributo para autenticacao (bind)
compare cdx Operacao de comparacao
search scdx Operacao de busca com filtros
read rscdx Ler os dados do search
write wrscdx Escrever
manage mwrscdx Permissao maxima (admin)

Conclusão

O LDAP+OpenLDAP é uma excelente maneira para você ter um gerenciamento melhor do seu ambiente. Essa foi uma parte bem teórica sobre o LDAP e o OPENLDAP, possívelmente trarei a parte prática que realizarei em um laboratório e compartilharei com vocês.

Espero ter ajudado a entender um pouco melhor sobre a parte teórica do LDAP.

Abraços do Golden Retriever.