ACL – Access Control List

As diretivas de controle de acesso, como seu próprio nome sugere, definem o nível de acesso que cada usuário terá para cada tipo de informação disponível na base de dados. No OpenLDAP elas representam um ferramenta muito poderosa e versátil. Utilizando ACL‘s é possível controlar o acesso à base de dados, granularmente, baseando-se nas informações de autenticação, endereço IP, nome de domínio, dentre outras.

A primeira noção é que ACL são poderosas para controlar com mãos de ferro o que os usuários podem ou não fazer dentro de uma infraestrutura OpenLDAP. Apesar de esta ser uma das funções mais importantes, o aspecto mais interessante do uso de ACL em servidores LDAP é outro: a possibilidade de delegar tarefas.

Imagine o seguinte caso, válido tanto para sistemas que guardam dados em arquivos texto quanto para sistemas gerenciadores de bancos de dados: como permitir que um usuário altere a sua e apenas a sua senha?

Na maioria das vezes uma instrução como essa exige malabarismos enormes do administrador de sistemas, principalmente quando o grau de integração entre os serviços aumenta. Entretanto o OpenLDAP torna essa tarefa bem simples.

Sintaxe

Como descrito no “man 5 slapd.conf”, a sintaxe das ACL‘s é a seguinte:

access to <o que> [ by <quem> [ <acesso> ] [ <controle> ] ]+

Onde:

o que – atributo para o qual o controle será imposto;

quem – entidade ou DN completo do usuário (veja tabela de entidades a baixo)

acesso – define o nível de acesso à entidade ou ao usuário;

controle – define a forma do processamento das ACL‘s. Por padrão quando uma entrada de ACL é satisfeita o processamento das ACL‘s é interrompido. Isto se dá pois o valor de controle padrão é “stop”. Outros valores possíveis são “continue”, que faz com que o processamento continue e, “break”

Tabela de Entidades

Entidade Descrição
* Todos
anonymous usuários não autenticados. Anônimos
users usuário autenticado
self usuário dono do objeto e/ou atributo controlado

Tabela dos níveis de acesso

Nível Privilégio Descrição
none =0 sem acesso
auth =x necessário para autenticação
compare =cx necessário para efetuar comparações
search =scx necessário para utilizar filtros de pesquisa
read =rscx necessário para ler resultados de pesquisas
write =wrscx necessário para modificar ou renomear

Exemplos

Exemplo 1

access to attrs=userPassword,shadowLastChange
       by dn="cn=admin,dc=kyapanel,dc=com,dc=br" write
       by anonymous auth
       by self write
       by * none

Antes de descrever a linha acima chamamos a atenção para a tabulação a direita das linhas a partir da segunda. Essa tabulação é obrigatória. É através dela que o OpenLDAP entende que as linhas seguintes à primeira são sua continuação, ou seja, de fato o que aparenta serem várias linhas, para o OpenLDAP, é uma linha só.

Define os atributos que serão controlados. A lista é separada por vírgulas;

Define o usuário (através do seu DN completo) tem acesso e em seguida qual tipo de acesso;

Ativa a permissão de autenticação, ou seja, o acesso aos atributos somente será permitida mediante autenticação, uma vez que por padrão os acessos podem ser feitos de fora anônima. Ela define que acessos anônimos, para estes atributos não serão permitidos;

Define que os usuários somente terão acesso de escrita aos atributos “userPassword” e “shadowLastChange” deles mesmos, ou seja, dos quais sejam donos;

Define que todos (*) não tem acesso. Perceba que está última diretiva visa impedir quaisquer outros acesso que não estiverem dentro das categorias descritas acima dela.

Exemplo 2

access to dn.base="" by * read

Esta linha indica que qualquer usuário, inclusive anônimos, podem ler a raíz da base LDAP. Essa permissão é crucial para diversos clientes.

Perceba que o “dn.base”, onde “base” significa somente a raíz, assim como na opção “-s” do comando ldapsearch, explicada antes neste manual.

Exemplo 3

access to *
       by dn="cn=admin,dc=kyapanel,dc=com,dc=br" write
       by * read

Permite acesso a todos os usuários, inclusive anônimos;

Define o usuário (através de seu DN completo) “admin” pode escrever na base LDAP, ou seja, tem plenos poderes;

Define que todos os demais usuários podem ler o conteúdo da base;

Estes três exemplos são os valores definidos por padrão na instalação do OpenLDAP em um servidor Gnu/Linux Debian.

É importante perceber que essas três ACL‘s se comportam como uma, ou seja, apesar da última permitir que qualquer usuário possa ler qualquer atributo a primeira não. Por isso é fundamental dar toda a atenção possível à ordem das ACL‘s.

Licença

Copyright 2007 Anahuac de Paula Gil e Francisco Kem Iti Saito

Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.

Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.

openldap_basico/acl.txt · Last modified: 2009/08/19 14:00 by anahuac
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki