3 minutes
Lightweight Directory Access Protocol (LDAP)
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
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.