A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Controle de acesso no Joomla 1.5

Dom

4

Mai

2008


20:40

(29 votos, média 3.97 de 5) 


Definindo o controle de acesso com o phpGACL

Parece que para situações mais complexas esta técnica da 'matriz de acesso' não é muito apropriada. Precisamos de um sistema melhor que mantenha as vantagens (controle de granularidade fina e uma noção clara de quem tem acesso a que), mas que elimine as desvantagens (dificuldade de resumir e dificuldade de administrar grandes grupos de pessoas). Uma das soluções é o phpGACL (não foi por acaso que os responsáveis pelo Joomla fizeram esta opção).

O phpGACL não descreve o acesso de 'baixo para cima' como as matrizes de acesso mostradas. Faz exatamente ao contrário, de 'cima para baixo', assim como a descrição textual da política de acesso feita pelo capitão Maremoto. Isto é um sistema muito flexível que permite administrar acessos de grupos grandes, sintetiza muito bem a política de acesso e fica fácil de ver quem pode acessar o que.

Uma árvore ARO define uma hierarquia de Grupos e de AROs (coisas que solicitam acesso). É muito parecida com a árvore de diretórios (pastas) e arquivos. As 'pastas' são os Grupos e os 'arquivos' são os AROs.

Vamos fazer uma árvore ACL para as pessoas do navio do Maremoto. Primeiramente definimos algumas categorias para as pessoas. É evidente que Maremoto e Barrica comandam o navio e que o restante das pessoas fazem parte da tripulação:

Princesa dos Mares
|
|- Grupo Comando
|  |- Maremoto ARO
|  |- Barrica  ARO
|
|- Grupo Tripulação
   |- Zé Arruela ARO
   |- Zé do Boné ARO
   |- Margarida  ARO
   |- Papagaio   ARO

Esta árvore, por si só, não especifica qualquer política de acesso - ela só mostra como estamos agrupando as pessoas que podem requisitar acesso (AROs). Podemos aplicar restrições de acesso colocando instruções sobre determinados recintos (ACOs) para Grupos ou AROs na árvore. Maremoto diz: "Como padrão, ninguém pode ter acesso a qualquer recinto do Princesa dos Mares. Mas o comando deve ter acesso a todos os recintos. A tripulação pode ter acesso apenas ao refeitório".

Princesa dos Mares
|
|- Grupo Comando [ALLOW: ALL]
|  |- Maremoto
|  |- Barrica
|
|- Grupo Tripulação [ALLOW: Refeitório]
   |- Zé Arruela
   |- Zé do Boné
   |- Margarida
   |- Papagaio

Para interpretar esta árvore ARO, começamos em cima e vamos abrindo caminho para baixo.

Em primeiro lugar, a política padrão é proibir o acesso. As permissões podem ser substituídas para o "Comando" de modo que este tenha acesso a tudo ("ALL" significa TUDO, todos os recintos: "Comando, Refeitório, Despensa, Máquinas"). A "tripulação" tem acesso apenas ao Refeitório.

Resumindo:

  • Access Control Objects (ACOs) são coisas cujo acesso queremos controlar (por exemplo, páginas web, bases de dados, recintos, etc).
  • Access Request Objects (AROs) são coisas que requisitam acesso (por exemplo, pessoas, computadores remotos, etc)
  • Árvores ARO definem uma hierarquia de Grupos e AROs. Grupos podem conter outros Grupos e AROs.
  • A política default 'pega-tudo' para a árvore ARO sempre é "DENY ALL".
  • Para definir uma política de acesso vá descendo a árvore e, quando necessário, assinale explicitamente as permissões para Grupos e AROs.

Controle de Acesso de granularidade fina

Xiiii, esquecemos que o Barrica não pode entrar na despensa. Como ele está no grupo Comando, ele acaba tendo acesso a todos os recintos. Peraí!

Princesa dos Mares
|
|- Grupo Comando [ALLOW: ALL]
|  |- Maremoto
|  |- Barrica   [DENY: Despensa]
|
|- Grupo Tripulação [ALLOW: Refeitório]
   |- Zé Arruela
   |- Zé do Boné
   |- Margarida
   |- Papagaio

Este é um exemplo do modo como se pode controlar a política de acesso usando a granularidade fina. Não é preciso colocar o Barrica num outro grupo, basta substituir a política de acesso num nível mais baixo.

Outro exemplo de controle de granularidade fina acontece quando o mar resolve encrespar: o capitão Maremoto precisa do Zé Arruela na casa das Máquinas e do seu Papagaio de estimação a seu lado, na cabine de comando:

Princesa dos Mares
|
|- Grupo Comando [ALLOW: ALL]
|  |- Maremoto
|  |- Barrica   [DENY: Despensa]
|
|- Grupo Tripulação [ALLOW: Refeitório]
   |- Zé Arruela [ALLOW: Máquinas]
   |- Zé do Boné
   |- Margarida
   |- Papagaio   [ALLOW: Comando]

Informações adicionais