Informática Numaboa - Tutoriais e Programação
Controle de acesso no Joomla 1.5
Dom 4 Mai 2008 20:40 |
- Detalhes
- Categoria: Joomla
- Atualização: Segunda, 02 Julho 2012 19:39
- Autor: vovó Vicki
- Acessos: 18507
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]