Criando o layout do diretório LDAP para uma organização do tipo ISP

3

Administro alguns servidores para uma organização pequena que oferece serviços semelhantes a ISPs para seus membros (hospedagem na Web, endereços de email em vários domínios e contas IMAP associadas, contas do Jabber) e quero centralizar todos os dados da conta no LDAP. Sou novo no LDAP e agora preciso projetar e organizar o layout do diretório LDAP.

O maior problema com o qual estou lidando é como mapear usuários para várias contas, por exemplo, usuários únicos têm atualmente várias contas IMAP e Jabber que estão associadas a vários endereços em vários domínios e cada conta tem uma senha diferente e eu preciso reter isso.

Então, como eu organizaria o layout do diretório LDAP?
Os usuários e várias contas devem estar em árvores diferentes, que são vinculadas por meio de um uid comum, ou = = people, dc = example, dc = net com inetOrgPersons descrevendo o usuário e, em seguida, separando árvores para as contas como ou = imapAccounts, dc = Por exemplo, dc = net, ou = jabberAccounts, dc = exemplo, dc = net etc. com esquemas customizados? Ou existe uma maneira melhor, já que isso parece muito com uma solução usando um banco de dados relacional?

Alguma recomendação de recursos / livros / exemplos do mundo real que são úteis aqui? A maioria dos recursos que eu vi parecem assumir que uma pessoa tem apenas uma conta de e-mail / jabber etc. e quer usar uma única senha para isso. Não acredito que seja incomum que os ISPs permitam que seus clientes tenham várias contas, por exemplo, para permitir que eles separem e-mails privados e de trabalho ou encorajem senhas diferentes para serviços diferentes, de modo que uma senha salva do Jabber que seja comprometida não resulte em um comprometimento de todos os outros serviços desse cliente, etc.

Tentarei ser mais específico sobre meu caso de uso e explicar meu modelo de dados atual:

Existem usuários únicos, que são pessoas para as quais preciso de alguns dados de contato e que possuem uma conta de shell (única) na caixa de hospedagem. Cada um desses usuários únicos pode ter várias contas IMAP e Jabber.

Para responder às perguntas de design:

  • Um usuário pode ser considerado um contêiner para contas, mas também representa uma pessoa que deve ter dados de contato associados a eles.
  • Os usuários nunca compartilham contas.
  • As contas nunca serão movidas entre os usuários.
  • As caixas executam o RHEL6 e eu preciso de integração com o PAM, Postfix / Dovecot e ejabberd, para que a integração seja possível tanto com o LDAP quanto com um RDB.
por user1226159 05.03.2012 / 17:34

1 resposta

6

Você está se aproximando disso da maneira errada em que você escolheu uma tecnologia e agora está tentando colocar seu modelo de dados nela. Projete seu DATAMODEL primeiro e, em seguida, encontre uma tecnologia que facilite sua implementação.

Comece com um quadro branco e escreva as coisas que você precisa acompanhar e determine como elas se relacionam umas com as outras. Se você acabar com uma hierarquia / árvore natural, o LDAP é uma boa escolha. Se você acabar com uma coisa parecida com a web, um sistema relacional pode funcionar melhor.

Algumas perguntas a fazer enquanto você faz o design:

  • É um "usuário" um contêiner (que contém contas)?
    (Se esse for o caso, cada conta apontará para exatamente um usuário. No jargão do LDAP, um usuário seria uma unidade organizacional e as contas seriam criadas dentro dessa unidade organizacional. Em linguagem relacional, a conta teria uma chave estrangeira obrigatória (NOT NULL) apontando no usuário)

  • Os usuários sempre compartilharão contas?
    (A modelagem relacional geralmente funciona melhor aqui)

  • As contas serão movidas entre usuários (ou usuários se movem entre contas)?

  • Que tipo de sistemas precisará integrar com este armazenamento de dados?

por 05.03.2012 / 20:55

Tags