X.500 e LDAP
Liane Tarouco
X.500
• X.500 é um protocolo que especifica um modelo para a
conexão de Serviços de Diretórios locais a fim de
formar um diretório global distribuído
Serviços X.500
• X.500 é especificado como um serviço da Camada
de Aplicação no mundo OSI, porém o seu projeto
não depende significativamente das outras
camadas OSI, e ele pode ser visto como um
projeto de um Serviço de Diretório de propósito
geral.
Serviço de
diretórios é uma
aplicação (camada
7 do modelo OSI)
que interopera
usando protocolos
definidos nas
recomendações da
série X.500
X.500
• O padrão X.500 define o Diretório como uma
coleção de sistemas abertos que cooperam para
manter uma base de dados lógica com
informações sobre um conjunto de objetos do
mundo real.
• Os usuários do Diretório, incluindo pessoas e
programas, podem ler e modificar as informações,
ou parte dela, se tiverem permissão para isto
Definições
• Entrada - Uma entrada é o bloco básico de um banco de
dados, ela guarda as informações sobre o objeto de
interesse
• Objetos - Objetos são associados com entidades do
mundo real, sendo identificados pelo seu nome.
• Classes de Objetos - Uma classe de objetos identifica
objetos que possuem características similares, definindo as
informações de interesse para estes objetos
Definições
• Atributos - Um atributo é um pedaço de
informação que descreve algum aspecto de uma
entrada
• Nomes - Um nome simplesmente denota um
objeto, descrevendo o objeto, com o objetivo de
tornar mais fácil para as pessoas lembrarem-se
deles
Definições
• Endereço - Um endereço indica a localização de
um objeto dentro do Diretório
• Rota - Uma rota indica como chegar a um
determinado endereço através da estrutura do
Diretório
Nome distinto
• Cada entrada no Diretório X.500 descreve um objeto (uma
pessoa, uma rede), que tem um identificador único
chamado ND - Nome Distinto.
• Uma entrada consiste de uma coleção de atributos, sendo
que, para uma pessoa, estes atributos podem ser nome,
endereço, e-mail, etc.
• Exemplo de ND:
CN=Steve Kille, O=Isode Limited, C=GB
Nomes
• Em qualquer discussão sobre nomeação, é
importante distinguir entre três conceitos:
– um nome denota um objeto;
– um endereço indica onde o objeto esta;
– uma rota diz como chegar lá.
Nomes
• A X.500 especifica parcialmente regras para a
estrutura dos nomes e os valores que estes
nomes ou partes deles podem assumir.
Características dos nomes
• Eles têm uma ou mais partes
denominadas atributos
• As partes de um nome têm um
relacionamento hierárquico.
•A autoridade para atribuir nomes pode ser delegada
em qualquer nível de hierarquia
Características dos nomes
• As regras que governam a definição exata de um
nome (os atributos que são usados e os valores
que os atributos podem assumir) podem variar
em diferentes partes de espaços de nomes.
• Todos os objetos que compartilham o mesmo no
parental têm nomes distintos relativos diferentes.
• Um nome distinto relativo (NDR) é composto de
um ou mais atributos associados com o arco do
pai para o filho
AID - Árvore de Informação de
Diretório
• As entradas na BID são
organizadas em forma de
árvore e esta estrutura é
denominada Árvore de
Informações do Diretório
(AID).
• Os vértices da árvore representam as entradas. As entradas de mais alta ordem
(próximas da raiz) usualmente representam objetos tais como países ou
organizações enquanto que entradas de menor ordem representam pessoas ou
processos de aplicação.
Exemplo
{ Country = Brasil,
Organization = Empresa Geral de Acessórios,
{Division = Auditoria,
Estado = RS},
NomePessoal = Francisco Guedes}.
Recomendações série X.500
• A série de recomendações X.500 define
– regras para dar nome a objetos,
– uma BID - Base de Informações de Diretório
lógica para guardar informações sobre estes
objetos
– as entidades de protocolo que cooperam para
prover o Serviço de Diretórios.
Atributos
• A X.520 definiu onze grupos de tipos de atributos:
•
•
•
•
•
Sistema
Rotulação
Geográficos
Organizacionais
Explanatórios
•
•
•
•
•
•
Endereçamento postal
Telecomunicações
Preferência
Aplicação OSI
Relacional
Segurança
Sistema
• Tipos de atributos de sistema denotam a classe de
um objeto, um pseudônimo de um objeto, se
existe, e uma descrição legível por seres humanos
do conhecimento armazenado por um específico
ASD (conhecimento de como a BID e distribuída
entre os ASDs).
Rotulação
• Tipos de atributo de rotulação são cadeias de
caracteres que as pessoas associam com os
objetos.
• Exemplos disso incluem nomes comum, tais como
"Joao Silva" ou "Modem de Alta Velocidade" ou
números seriais.
Geográfico
• Tipos de atributos geográficos associam uma
região ou posição geográfica com um objeto.
Exemplos incluem país, estado e localidade.
Organizacionais
• Tipos de atributos organizacionais identificam a
organização em que o objeto e afiliado e o papel
do objeto naquela organização tal como nome da
organização e cargo.
Explanatório
• Tipos de atributos explanatório fornecem auxílio
ao usuário de Diretório.
• Por exemplo eles podem descrever o objetivo de
um objeto, sugerir critério de pesquisa que pode
ser útil numa sub-árvore ou dar a ocupação de
uma pessoa.
Endereçamento postal
• Tipos de atributo de endereçamento postal
especificam a informação requerida para a entrega
física de um objeto tal como um nome de rua ou
uma caixa postal.
Telecomunicações
• Tipos de atributos de telecomunicações associam
um ou mais endereços eletrônicos com um objeto.
• Exemplos de tais endereços incluem números de
telefones, números de telex números de teletex,
números de fac-simile, endereços X.121,
endereços RDSI e informação de endereçamento
usada para telegramas.
Preferência
• Tipos de atributos de preferência especificam a
ordem prioritária de escolha do método a ser
usado na tentativa de comunicar-se com o objeto
(por exemplo correio eletrônico, telefone).
Aplicação OSI
• Tipos de atributo de aplicação OSI armazenam o
endereço de apresentação e o contexto de
aplicação de uma entidade de aplicação OSI.
Relacional
• Tipos de atributo relacional implementam o
conceito de grupos e relacionamentos no
Diretório.
• Exemplos desses atributos incluem membro,
proprietário, papel e "veja outros".
• Note que o Diretório não inclui mecanismos
explícitos para manter a consistência desta
informação.
Segurança
• Tipos de atributo de segurança suportam
mecanismos de autenticação que podem ser
usados pelo Diretório.
• Exemplos deste atributo incluem palavra-senha e
certificações.
Protocolos
• Existem dois protocolos usados pelo Diretório.
– O Protocolo de Acesso ao Diretório (PAD) é usado
em interações entre um AUD e um ASD.
– Protocolo do Sistema de Diretórios (PSD) é usado
em interações entre dois ASD
Procedimentos
• O AUD interage com o Diretório comunicando-se
com um ou mais ASDs.
• Um AUD não precisa estar ligado a nenhum ASD
em particular.
• Ele pode interagir
diretamente com
vários ASDs para
fazer pedidos.
Atendimento AUD
• Se o ASD pode atender o pedido do AUD por si
mesmo, ele toma toda a atitude apropriada
fornecendo ao AUD informação de sua BID-Base de
Informações de Diretório.
• Se não tiver a informação solicitada pode ocorrer uma
das seguintes situações:
– Encadear
– Disseminar
– Sugerir
Encadear
• O ASD pode encadear o pedido passando-o para outro ASD.
• O segundo ASD responderia ao primeiro ASD, não ao AUD.
O encadeamento pode ser efetuado recursivamente.
Disseminar
• O ASD pode disseminar o pedido a dois ou mais ASDs
para resolução concorrente.
• O primeiro ASD coleta todas as respostas antes de
responder ao AUD.
• A disseminação pode ser considerada como uma forma de
encadeamento. Ela pode ser efetivada recursivamente.
Sugerir
• O ASD pode retornar ao AUD uma sugestão de
um outro ASD que possa atender o pedido.
• Isto é, o primeiro ASD da o nome do segundo
ASD para o AUD.
• O AUD então pergunta
ao segundo ASD o que
deseja.
Operações do DSP
• Leitura Encadeada - permite o encadeamento de
operações de leitura, comparação e abandono.
• Pesquisa Encadeada - permite o encadeamento das
operações de listagem e pesquisa.
• Modificação Encadeada - permite o encadeamento
das operações de acréscimo, exclusão e modificação
de entradas e modificação de NDR.
Protocolos X.500
Protocolos X.500
ROSE
Operações remotas
ACSE
Conectar e desconectar
X.500 é uma aplicação OSI
Serviços proporcionados
• conexão ao diretório
• interrogação do diretório
• modificação do diretório
Limites no uso dos recursos
• Controle são providos em, entre outras coisas:
– quantidade de tempo
– tamanho dos resultados
– escopo da pesquisa
– modos de interação
– prioridade do pedido
• Mecanismos de segurança para proteger as
informações do Diretório.
Filtros
• Pedidos que envolvam informações sobre ou
envolvendo diversa entradas podem carregar junto
um filtro
• Um filtro expressa uma ou mais condições que
uma entrada deve satisfazer para ser retornada
como parte do resultado.
• Isto permite reduzir o conjunto de entradas
retornadas para somente aquelas de interesse
relevante.
Conexão e Desconexão
(Binding e Unbinding)
As operações de conexão e desconexão são as primeiras e as últimas
numa série de operações que um AUD invoca num ASD.
Elas governam o relacionamento operacional entre um AUD e um
ASD.
A ligação prove um meio para um AUD se identificar a um ASD e
vice-versa.
O desligar é usado por um AUD para assinalar o fim de uma série de
operações.
AUD
ASD
Operações de Leitura
• Duas operações ler (READ) e comparar (COMPARE) são
usadas para examinar a informação associada com uma
entrada de objeto particular.
• Ler é usado para extrair informação de uma particular
entrada ou para verificar um nome único e distinto.
• Comparar e similar a ler exceto que o AUD fornece
informação para o ASD comparar contra uma entrada de
objeto.
Operações de Pesquisa
• Duas operações, listar (LIST) e pesquisar (SEARCH)
podem retornar informações sobre múltiplos objetos.
• Dada uma particular entrada na AID-Árvore de
Informações de Diretório, a operação de listar retorna os
nomes distintos relativos de suas entradas subordinadas.
• Dado um conjunto de critérios de seleção, pequisar
identifica as entradas de interesse numa sub-árvore na AID
e retorna a informação extraída dessas entradas.
Operações de Modificação
• Três Operações são usadas para manter a
informação armazenada nos nodos folhas da AID:
– adicionar (add)
– remover (remove)
– modificar (modify).
• Controles de acesso sobre adicionar, remover e
modificar são decisões a cargo do
implementador.
Operação de Abandono
• Abandono (abandon) pode ser invocado por um
AUD - Agente de Usuário de Diretório, após uma
operação anteriormente invocada, para dizer ao
ASD que não há mais interesse nos resultados da
mesma.
• Deve-se notar que o abandono não necessariamente
cancela a operação.
• Cancelar a operação poderia ser difícil de efetuar,
dada a natureza distribuída do Diretório.
LDAP
•
Lightweight Directory Access Protocol
(LDAP)
– subconjunto do X.500 DAP sem o
overhead do ASN.1 ou da pilha OSI
– Destinado a rodar em qualquer desktop
• Roda sobre TCP
• Pode ser usado para acessar um servidor
LDAP independente ou um servidor X.500
indiretamente, via servidor LDAP
Versões LDAP
• 1993 primeira versão
• 1996 LDAPv2
• 1997 LDAP v3
Aplicações do LDAP
• Localizar usuários e recursos da rede
• Gerenciar usuários e recursos da rede
– Recursos on-line (Dublin Core)
– Learning Objects (IEEE)
• Autenticar e proteger (segurança) usuários e
recursos da rede
Aspectos a considerar
• Replicação do diretório
• Controle de acesso
LDAP x DNS
• LDAP não é substitutivo para DNS
• Não pode competir com a performance orientada
ao alto tráfego do DNS
– não orientado a conexões
– usa porta 389 mas pode usar outras portas
– usa o protocolo LDAP para atendimento
Estrutura do
LDAP
Modelo de informação
• Coleção de atributos e valores
• Tipo de de dados armazenados no diretório
• Praticamente todo o tipo de informação pode ser
colocado no diretório
LDAP schema
• Define os elementos de dados que efetivamente
podem ser armazenados num particular servidor e
como se relacionam com objetos do mundo real
• Foram padronizados objetos representando:
– países
– organizações
– pessoas
– grupos
Naming Model
• Como a informação é organizada e referenciada
• Nomes LDAP são hierárquicos
• Nomes individuais compostos de atributos e
valores
• LDAP permite esquemas flexíveis de nomeação
Modelo de segurança
• Como a informação é protegida contra acesso não
autorizado
• Autenticação extensível permite a clientes e
servidores provarem sua identidade unas aos
outros
• Confidencialidade e integridade também podem
ser implementadas para proteger a privacidade e
contra ataques ativos
Modelo de funcionamento
• Como os clientes acessam e atualizam a
informação bem como o modo pelo qual os dados
podem ser manipulados
• Funções básicas operacionais:
– add delete modify
– bind unbind (autenticação)
– search compare
– modify DN (distinguished name)
– abandon (interromper operação em progresso)
LDAP protocol
• Interação entre clientes e servidores e mapeamento
sobre TCP/IP
• Cada LDAP request é portado em uma mensagem
e as entradas contidas na resposta a uma pesquisa
são transportadas em mensagens separadas
LDAPMessage ::=
SEQUENCE {
messageID
protocolOp
}
}
Mensagens do
LDAP
MessageID,
CHOICE {
bindRequest
BindRequest,
bindResponse
BindResponse,
unbindRequest
UnbindRequest,
searchRequest
SearchRequest,
searchResponse
SearchResponse,
modifyRequest
ModifyRequest,
modifyResponse
ModifyResponse,
addRequest
AddRequest,
addResponse
AddResponse,
delRequest
DelRequest,
delResponse
DelResponse,
modifyRDNRequest ModifyRDNRequest,
modifyRDNResponse ModifyRDNResponse,
compareDNRequest CompareRequest,
compareDNResponse CompareResponse,
abandonRequest AbandonRequest
Bind
BindRequest ::=
[APPLICATION 0] SEQUENCE {
version INTEGER (1 .. 127),
name
LDAPDN,
authentication CHOICE {
simple
[0] OCTET STRING,
krbv42LDAP [1] OCTET STRING,
krbv42DSA [2] OCTET STRING
}
}
Iniciar uma sessão entre um cliente e um servidor permitindo a
autenticação do cliente para o servidor
Deve ser a primeira operação recebida por um servidor de um cliente
numa sessão
Unbind
Encerrar uma sessão
UnbindRequest ::= [APPLICATION 2] NULL
SearchRequest ::=
[APPLICATION 3] SEQUENCE {
baseObject LDAPDN,
scope
ENUMERATED {
baseObject
(0),
singleLevel
(1),
wholeSubtree
(2)
},
derefAliases ENUMERATED {
neverDerefAliases (0),
derefInSearching
(1),
derefFindingBaseObj (2),
derefAlways
(3)
},
sizeLimit INTEGER (0 .. maxInt),
timeLimit INTEGER (0 .. maxInt),
attrsOnly BOOLEAN,
filter
Filter,
attributes SEQUENCE OF AttributeType
}
Search
Permite a um cliente
solicitar a execução de
uma pesquisa a ser
feita pelo servidor
Filter
Filter ::=
CHOICE {
and
[0] SET OF Filter,
or
[1] SET OF Filter,
not
[2] Filter,
equalityMatch [3] AttributeValueAssertion,
substrings
[4] SubstringFilter,
greaterOrEqual [5] AttributeValueAssertion,
lessOrEqual
[6] AttributeValueAssertion,
present
[7] AttributeType,
approxMatch
[8] AttributeValueAssertion
}
SubstringFilter
SubstringFilter
SEQUENCE {
type
AttributeType,
SEQUENCE OF CHOICE {
initial
[0] LDAPString,
any
[1] LDAPString,
final
[2] LDAPString
}
}
Modify
Permite a um cliente solicitar a modificação da BID (Base de Informações do
Diretório) que será feita para ele pelo servidor
ModifyRequest ::=
[APPLICATION 6] SEQUENCE {
object
LDAPDN,
modification SEQUENCE OF SEQUENCE {
operation ENUMERATED {
add
(0),
delete (1),
replace (2)
},
modification SEQUENCE {
type AttributeType,
values SET OF
AttributeValue
}
}
}
Add
Permite a um cliente adicionar uma entrada no diretório
AddRequest ::=
[APPLICATION 8] SEQUENCE {
entry
LDAPDN,
attrs
SEQUENCE OF SEQUENCE {
type
AttributeType,
values
SET OF AttributeValue
}
}
Delete
Permite a um cliente solicitar a remoção de uma entrada no diretório
DelRequest ::= [APPLICATION 10] LDAPDN
O pedido contém o Nome Distinto da entrada a seer deletada
Modify RDN
A operação Modify RDN permite a um cliente alterar o último
componente do nome de uma entrada no diretório
ModifyRDNRequest ::=
[APPLICATION 12] SEQUENCE {
entry
LDAPDN,
newrdn
RelativeLDAPDN,
deleteoldrdn BOOLEAN
}
Compare
Permite a um cliente comparar uma assertiva que ele provê com uma
entrada no diretório
CompareRequest ::=
[APPLICATION 14] SEQUENCE {
entry
LDAPDN,
ava
AttributeValueAssertion
}
Abandon
Permite a um cliente pedir ao servidor para abandonar o atendimento a um
pedido em atendimento.
AbandonRequest ::= [APPLICATION 16] MessageID
Considerações de segurança
A versão do protocolo definida no RFC1777 prove
apenas facilidades de autenticação simples usando
uma senha não cifrada ou autenticação com o
sistema kerberos versão 4
LDAP 1, 2
•
Nas versões 1 e 2 do LDAP não há previsão para que os
servidor retornem indicações de outros servidores que os
clientes poderiam consultar
• Mas visando otimizar a performance e a distribuição do
diretório o servidor pode retornar aos clientes referência a
outros servidores
LDAP API
• Application Program Interface (API) usados em
plataformas rodando C/C++, Java Javascript, Perl
• LDIF- LDAP Interchange Format - oferece
formato textual simples para representar entradas
do diretório
LDAP clients
• LDAP é um protocolo de acesso para cliente.
• Existem muitos clientes LDAP embutidos em aplicações
tais como email
Download

X.500 e LDAP