Como lidar com autenticação de usuário centralizada sem LDAP?

3

Estou tentando criar um banco de dados centralizado para meus usuários para o meu servidor e acessos web, para que eu possa permitir que esses usuários façam login através do ssh se tiverem acesso, e através dos meus serviços da web verem sua conta e sistema informação.

Eu li sobre o LDAP, mas quero poder gerenciar os usuários em um banco de dados diferente, como o Postgresql, para que eu possa mais facilmente vincular o banco de dados aos meus serviços da Web e controlar as migrações e esquemas SQL se precisar mais detalhes do usuário.

Eu olhei para algo como Puppet, mas é um pouco demais para o que eu estou procurando fazer, e eu não preciso gerenciar vários servidores no momento. Tentei pesquisar como o Puppet lida com a autenticação do usuário do servidor, mas não encontrei muita informação.

Minha pergunta: Existe uma maneira de criar um banco de dados centralizado de informações do usuário em algo diferente de LDAP, como o Postgres, que eu possa usar para autenticar usuários do ssh e da web?

    
por josh 14.11.2013 / 14:32

3 respostas

4

Sim.

A autenticação do sistema nos sistemas Linux e UNIX passou pelo PAM, Pluggable Authentication Modules por décadas.

O princípio do PAM é que se você quiser usar um novo back-end de autenticação você não precisa recompilar todos os aplicativos que usam autenticação como sistema auth, ssh, ftp, telnet sudo etc. Carregue o módulo correto e tudo mais que usa o PAM pode usar automaticamente o novo backend de autenticação.

Portanto, se seus aplicativos usarem o PAM (e muitos, muitos o fazem) e já existirem ou você puder criar um módulo PAM para seu armazenamento de usuário / autenticação alternativo, pronto.

pam-pgsql é um desses módulos PAM que usa uma tabela em um banco de dados PostGres SQL. Isso facilitaria a integração com o aplicativo da Web ou você também poderia usar a integração do PAM do seu servidor da Web para acesso autenticado.

Além disso, alguns aplicativos possuem integração nativa com backends de banco de dados, fora do PAM.

    
por 14.11.2013 / 15:09
4

O LDAP realmente faz três coisas em máquinas linux:

Autenticação:

Este é o domínio do PAM, ele está usando o nome de usuário / senha para verificar se o usuário é o usuário.

Autorização:

Aqui é onde o PAM não atende a necessidade, o PAM é ativado / desativado, você recebe aprovação ou não. A autorização é sobre associação ao grupo.

Atributos:

Onde está o seu diretório pessoal? Qual o seu nome?

Os dois últimos itens são tratados por backends nss. Se você olhar em /etc/nsswitch.conf, verá que ele usa backends padrão para converter chamadas de sistema em pesquisas de ldap.

Se você não quiser usar o LDAP, precisará usar uma versão diferente das bibliotecas de plug-ins do nss que suportam o banco de dados que você deseja usar. Alguns deles existem, mas você está reinventando uma roda bastante grande.

No que diz respeito a fantoches, utiliza certificados ssl para autenticação de clientes. Algo semelhante na maneira em que o ssh faz.

    
por 14.11.2013 / 16:47
0

Sua pergunta de marionete deve ser realmente uma pergunta diferente, já que não está realmente relacionada.

Pensei no que você está perguntando um pouco mais e uma maneira de implementar o que você deseja é usar uma consulta de banco de dados de um módulo de fantoches. Como a linguagem dos bonecos é algo próprio e não uma extensão de uma linguagem de propósito geral, você provavelmente teria que escrever / encontrar um provedor de recursos de bonecos que retornaria uma lista de nomes de usuários e então teria o gerenciador de bonecos / etc / passwd etc. arquivos na máquina.

Isso seria mais simples de implementar no chef. Tenho certeza que é possível no fantoche. Também é possível (e melhor prática IMHO) para atualizar seu servidor LDAP de entradas de banco de dados. Isso realmente depende da escala em que você opera e da rapidez com que você deseja que as alterações sejam propagadas.

    
por 14.11.2013 / 19:38