2.1. Introdução ao LDAP

O primeiro conceito importante para entender o que é o LDAP (Lightweight Directory Access Protocol) é o de diretório. Um diretório nada mais é do que um conjunto de atributos organizados de forma lógica e hierárquica, e o LDAP é um protocolo que controla requisições e modificações no serviço de diretórios que roda sobre o protocolo padrão da Internet TCP/IP. Um serviço de diretórios, por sua vez, atua como uma camada de abstração entre os usuários de uma rede e os recursos compartilhados entre eles através dessa mesma rede. O banco de dados usado para armazenar todas as informações pertinentes a esse controle de usuários e recursos, bem como a maneira de organizá-las, depende do modelo de serviço de diretórios usado.

O LDAP foi inicialmente projetado para o acesso a serviços de diretório X.500, sendo a versão reduzida de um protocolo chamado DAP (Directory Access Protocol). Por ser a versão mais leve e portável do DAP, o LDAP implementa apenas as suas operações básicas: Bind, Read, List, Search, Compare, Modify, Add, Delete e ModifyRDN.

Diretórios X Bases de Dados

Os termos diretório e BD (Base de dados) são usados com frequência quando falamos dos diretórios organizados via LDAP. Ambos servem para armazenar informações de maneira estruturada, porém diferem na implementação. É importante entender as vantagens de cada para decidir qual usar.

A maior diferença entre diretórios e BDs é que os primeiros são mais voltados a atender grandes quantidades de consultas, ou seja, operações de leitura, enquando os últimos atendem mais a inserções e modificações. Por isso mesmo, a maneira de construir um e outro difere.

Vejamos a seguir outras diferenças entre Diretórios e Bases de Dados.

Layout

Um BD pode ser visto como uma série de tabelas ou planilhas (contém linhas e colunas). Cada coluna é um campo e cada linha uma tupla na tabela. As tabelas podem conter uma ou mais colunas e consultas complexas podem selecionar colunas e tuplas de várias tabelas diferentes.
Veja as tabelas 1 e 2 como exemplo de como os dados são armazenados no BD e na tabela 3 veja um exemplo de consulta que pode ser feita selecionando-se apenas algumas colunas de cada tabela.

Tabela 1: Relação Funcionário / Departamento:

nome Sobrenome Departmento
Jay Smith Engenharia
Joseph Wilson Engenharia
John West Engenharia
Sally Stevens Vendas
Jane Doe Marketing


Tabela 2: Telefone dos Funcionários:

Nome Sobrenome Telefone Sala
Jay Smith 345-2332 E23
Joseph Wilson 345-2312 E30
John West 345-9393 E21
Sally Stevens 345-2211 T55
Jane Doe 345-3321 T33


Tabela 3: Resultado da seleção de nomes, sobrenomes e telefones de todos os Engenheiros:

Nome Sobrenome Telefone
Jay Smith 345-2332
Joseph Wilson 345-2312
John West 345-9393


Um Diretório, por outro lado, é melhor visto como uma árvore hierárquica. Ele é similar ao sistema de arquivos com arquivos e pastas. A organização example.com tem uma árvore assim:

Figura 1: Exemplo de árvore

2.jpg

Fica fácil ver que, baseado no layout dos dados, os BDs podem ser rearranjados para permitir consultas extremamente complexas. Já os diretórios permitem somente consultas simples, tais como listar os membros de uma subárvore, porém são muito fáceis de serem executadas.
Ao contrário do BD, um diretório pode conter várias entradas para cada tipo de dado. Por exemplo, suponha que John West tenha mais de um telefone. Em um diretório o outro telefone pode simplesmente ser adicionado à subárvore dele. Já no BD uma outra coluna precisaria ser criada para todas as entradas da tabela disperdiçando espaço de todas as tuplas que não contêm um segundo telefone.

Tempo de Acesso

Diretórios têm leituras rápidas, porém escritas lentas. Isso ocorre devido a sua estrutura simples. Portanto não é eficiente para armazenar grandes quantidades de dados. Diretórios são usados principalmente para armazenamento de dados estáticos como listas telefônicas.

Replicação de dados e Transações

Diretórios permitem que suas árvores sejam particionadas e replicadas entre vários servidores. Para ilustrar isso, example.com tem sua matriz com os departamentos de vendas e marketing em um local e o departamento de engenharia do outro lado do país. Eles armazenam seu diretório na matriz, porém a subárvore de engenharia é também armazenada no satélite da empresa. A subárvore de engenharia é sincoronizada com a cópia mestre da matriz ocasionalmente. Isso acelera o acesso para os engenheiros acessarem sua própria árvore e reduz o tráfego de dados entre os dois locais.

Em contrapardida, não se pode garantir que os dados da cópia replicada estão de acordo com os da matriz. Isso é considerado aceitável em Diretórios. Diretórios normalmente não suportam as transações em que os BDs se baseiam, e por serem mais estáticos não necessitam de toda a segurança implementada para BDs.

Conceitos LDAP

Essa estrutura de árvore na qual os diretórios são armazenados é chamada de Directory Information Tree (DIT). Cada entrada no diretório é chamada de objeto. Esses objetos são de dois tipos: objetos e registros. O objeto é como uma pasta que contém os registros (ou folhas).
Uma árvore não pode conter um conjunto arbitrário de objetos e registros. Ela deve seguir um schema definido para o diretório. Usando um schema padrão do OpenLDAP a empresa example.com tem a seguinte DIT simplificada :

Figura 2: Exemplo de DIT

3.jpg

Este exemplo contém várias abreviações específicas dos schemas sendo usados. Eles são elementos da organização da árvore.

dc – domain component. Cada elemento no domínio da Internet da companhia é um registro individual.
ou – organizational unit. A companhia é dividida em seus departamentos.
cn – common name. Um nome comum da pessoa. Os objetos abaixo na árvore descrevem elementos dessa pessoa.

Neste exemplo 'dc=example,dc=com', 'ou=Sales', e 'cn=Sally Stevens' são exemplos de objetos. Registros incluem 'telephoneNumber=3452211' e 'roomNumber=T55'.

Assim como os Sistemas de Arquivo, os diretórios suportam o conceito de caminho. Em um diretório isso é chamado de Distinguished Name (DN). O DN do John West é: cn=John West,ou=Engineering,dc=example,dc=com. Isto é construído para cada Relative Distinguished Name (RDN) de um indivíduo separado por vírgulas. Dependendo do diretório sendo usado, cada RDN deve ser separado por uma vírgula ou um ponto.

OpenLDAP no SLES

O SUSE usa o OpenLDAP, uma implementação de código aberto do LDAP. Ela é incluída na instalação padrão do SUSE. Vejamos agora os arquivos de configuração, os quais poderão ser alterados manualmente:
  • /etc/openldap/sldap.conf – O principal arquivo de configuração do OpenLDAP. Ele contém sessões para definir o esquema (schema) dos diretórios e as permissões de acesso ao diretório.
  • /etc/openldap/schema/*.schema – Os Diretórios seguem o que está nos arquivos schema.
  • /etc/init.d/ldap – O script de inicialização do OpenLDAP.


Voltar para o índice | Próximo capítulo

Last edited Aug 27, 2007 at 8:27 PM by joicekafer, version 6

Comments

No comments yet.