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