LDAP para controle de privilégios?

5

Eu tenho pensado por um tempo se o LDAP pode ser usado para controlar privilégios de usuário. Por exemplo, se eu tiver UNIX e web logins, existe uma maneira fácil de conceder ao usuário acesso a apenas ou apenas UNIX (ou até mesmo ambos?)

Minha tentativa atual de resolver esse problema foi criar grupos de 'login' e 'nologin', mas isso não parece ser suficiente para atender às idéias que tenho em mente. Eu também ainda estou na situação em que todos os usuários UNIX são usuários da web, o que não é um problema, mas um indicador das limitações.

Alguém tem alguma opinião sobre isso? Este problema já foi resolvido?

    
por neoice 14.11.2009 / 13:37

5 respostas

3

Você pode controlar o acesso de algumas maneiras. O RBAC é segurança baseada em funções. Grupos são grupos de usuários e funções são grupos de direitos de acesso. Você pode mapear grupos em funções ou usuários em funções. Nesse caso, suas regras de acesso podem ser assim:

"Permitir que todos no RH vejam o banco de dados de RH", o que, na implementação, faria com que os usuários agrupassem em um objeto LDAP groupOfUniqueNames. Isso geralmente leva a uma organização mais limpa e a maioria das organizações tem como objetivo o RBAC quando começar do nada. Se o RBAC é refinado é outra questão. Por exemplo, as funções controlam o acesso a um documento inteiro com base em grupos, mas não discriminam o nível do parágrafo para você. Para algumas organizações, isso é grosseiro.

Uma abordagem mais simples, se isso soar muito complicado, é fazer o ABAC (segurança baseada em atributos), onde seu aplicativo / camada intermediária / o que quer que esteja controlando o acesso por consultas LDAP que se parecem com isso: "Se você tem um atributo 'foo', você pode clicar no aplicativo foo." ou "Se seu atributo foo tiver o valor HR, você poderá acessar o aplicativo HR."

O problema com o ABAC é que ele se transforma em uma verdadeira bagunça. Mas para algumas coisas é uma verificação fácil. Por exemplo, talvez eu queira que pessoas com uid, userPassword e mail sejam permitidas em uma webapp, porque esses são os atributos obrigatórios que meu aplicativo precisa. Daí, meu aplicativo pode procurar papéis e tomar decisões mais refinadas. Login e nologin são realmente as consultas (login=*) and (!(login=*)) que permitiriam o acesso com base na existência de um único atributo. Isso é ABAC e geralmente não é reutilizável e / ou cenários de ponta matam o design. Como um exemplo planejado, e se eu tiver um login no sistema para um trabalho agendado, mas realmente não quero que a conta do sistema faça login no meu aplicativo. Se eu definir nologin (como shell para / dev / null ou similar), então meu trabalho cron não é executado, se eu configurá-lo para login, meu trabalho cron é executado, mas agora uma conta do sistema tem a capacidade de entrar no meu aplicativo desnecessariamente. Crie duas funções (chame-as de usuários e contas do sistema, etc.) e crie uma política que atenda aos dois requisitos.

Em uma escala corporativa, as organizações usam produtos de gerenciamento de identidades (IDM) para gerenciar, reportar e automatizar centralmente essas políticas de acesso. A automação e a geração de relatórios são úteis quando você tem N sistemas em N suborganizações em uma grande empresa / organização.

    
por 17.03.2010 / 16:23
0

Eu fiz isso de duas maneiras diferentes e usei as duas coisas ao mesmo tempo. Primeiro você pode tornar as pessoas diferentes, mas isso pode acabar sendo uma dor. A outra maneira era criar um groupOfNames com cada pessoa. Eu usei essas duas coisas em combinação para dar às pessoas acesso a máquinas UNIX através de sua classe de objeto e, em seguida, controle de granularidade fina para diferentes aplicações web via groupOfNames.

    
por 14.11.2009 / 14:02
0

Você pode manipular a autorização, dependendo do servidor subjacente que está lendo via LDAP.

Por exemplo, no eDirectory, você pode especificar um objeto com atributos dos quais os usuários com acesso podem ler o valor do atributo específico.

Depois, você usa as ACLs do eDirectory para permitir ou negar isso.

Use o modelo nativo da ACL e, em seguida, você pode facilmente decidir se um usuário tem direitos suficientes via LDAP.

    
por 16.11.2009 / 17:51
0
Em última análise, você precisa de uma maneira de dizer a um grupo de usuários de outro e usando o LDAP / unix você tem duas opções: ter uma consulta LDAP que descreva (& (userName = konrads) (unixLogin = yes)) ou usando pam_ * métodos discriminam localmente.

    
por 23.12.2009 / 14:27
0

Eu só tive que fazer algo semelhante uma vez, e adicionamos um atributo ao nosso esquema local e atribuímos um valor para cada sistema em que o usuário tinha permissão para efetuar login.

Então, na configuração do pam, tínhamos a string de pesquisa que eles tinham que ter esse atributo definido adequadamente para essa máquina, então você pode ter algo como:

(&(host:acad1)( ... test to make sure they weren't disabled ... ))

Como o 'host' era multi-valorizado, poderíamos atribuir quantos hosts aos usuários conforme necessário (e atribuímos uidNumbers acima de 5000 para as contas LDAP, reservando-as abaixo de 5000 para aplicativos, administradores de sistema e outras contas locais.)

    
por 23.12.2009 / 16:31