Joomla!® 1.6 y su sistema de control de acceso PDF Imprimir Correo
Lunes, 17 de Enero de 2011 17:44

Visión general.

El nuevo sistema de control de acceso (ACL) de la versión de Joomla! 1.6, cambia sensiblemente con respecto al de su antecesora, la versión 1.5.

Para quién está familiarizado con el manejo y configuración de este tipo de cosas, su comprensión y readptación a la nueva versión, le resultará muy simple; sin embargo, para usuarios noveles que estuvieran acostumbrados a manejarse solo en el sistema anterior, puede que a partir de ahora, necesiten de adentrarse en la comprensión de algunos conceptos nuevos para ellos.

Prestando atención y practicando un poco, podrán darse cuenta de que nada es tan complicado como parece.

Para el manejo ACL de Joomla! 1.6, es necesario comprender los conceptos o las acepciones de palabras tales como: usuarios, grupos, niveles de gestión, niveles de acceso, acciones, estado de las acciones, herencia, en un contexto donde además se aplicarán reglas y prioridades con recursividad.

 

Los usuarios.

Son todos aquellos que disponen de una cuenta de acceso a nuestro sitio web y se manejan desde el "Gestor de usuarios". Excepcionalmente, a todos aquellos que accedan a nuestro sitio sin identificarse, Joomla! los reune automáticamente dentro de un grupo que podremos determinar. Normalmente se llamará "Grupo público", pero el grupo se puede renombrar o se puede asignar a los "visitantes" a otro grupo determinado. En la siguiente imagen podrán ver en detalle, como se puede concretar el grupo para los invitados, desde el "Gestor de usuarios >> Icono "Opciones" >> pestaña "Componente":

Los usuarios, pueden pertenecer a uno o varios grupos.

Desde el Gestor de usuarios (pestaña "Usuarios"), podemos determinar a que grupos pertenece cada usuario, seleccionándolo desde la lista de grupos disponibles.

Los grupos.

Se manejan desde el "Gestor de usuarios"  >> pestaña "Grupos de usuario" y es, sobre los grupos, desde donde se puede determinar el estado de las acciones, permitiéndosenos así diferenciar tipos de usuario y sus privilegios de interacción con nuestro sitio, según su pertenencia un grupo o grupos determinados. El "Grupo público", y el de "Super usuarios", aunque se pueden renombrar, son los dos grupos imprencindibles para que Joomla! funcione en condiciones mínimas aceptables.

Podemos crear tantos grupos como deseemos, o editar y reconfigurar los existentes.

Los niveles de acceso.

Se manejan desde el "Gestor de usuarios"  >> pestaña "Niveles de acceso" y también nos permiten establecer relaciones con los grupos. Cada nivel de acceso, permite establecer relaciones con uno o más grupos. Por ejemplo, al crear un nuevo usuario,  podemos asignar su pertenencia al "Grupo registrados"(edición del usuario), y, por otra parte, podemos tener un nivel de acceso, llamado "Registrado"(edición del nivel de acceso), desde el que también podemos indicar a que grupo es necesario pertenecer, para obtener acceso a tal o cual contenido.

Por lo tanto, cuando editamos o creamos un contenido, en la lista de selección desplegable del parámetro "Acceso", podremos seleccionar entre los distintos niveles de acceso disponibles. Es decir, que lo que indicamos desde ahí, por medio del nivel de acceso, es el grupo al que tendrá que pertenecer un usuario, para poder acceder a ese contenido (quién dice contenido, dice artículo, menú, elemento del menú, módulo, etc; es decir, donde podamos determinar el parámetro "Acceso").

En el caso de nuestro ejemplo de más arriba, el nivel de acceso "Registrado", significa que los usuarios han de pertenecer al "Grupo registrados" (porque así lo hemos configurado -buscándole una relación lógica comprensible entre ambas cosas-).

Como podrán comprobar,  al instalarse Joomla!, se crea un nivel de acceso llamado "Especial". El cual establece su relación con el "Grupo gestores", el "Grupo autores", y el "Grupo super usuarios", por lo tanto, quienes tendrían acceso a ese contenido en esta ocasión (parámetro "Acceso" = Especial), serían los usuarios que pertenezcan al "Grupo gestores", o al "Grupo autores", o al "Grupo super usuarios". El nivel de acceso "Especial", se ha introducido por cuestiones de compatibilidad con Joomla! 1.5, pero también sirve de ejemplo sobre el modo en que se pueden resolver este tipo de planteamientos.

Por una parte los usuarios pertenecen a grupos determinados, y por otra, los niveles de acceso, nos permiten incluir grupos a los que se les concederá acceso.

Podemos crear tantos niveles de acceso como deseemos, o editar y reconfigurar los existentes.

Los niveles de gestión.

Son aquellas áreas en las que se nos va a permitir configurar los permisos. Siguiendo un orden y prioridad en la aplicación de los permisos descendente, la configuración global, cada componente, cada categoría y cada artículo, conforman los distintos niveles de gestión predeterminados desde donde se nos permitirá interactuar, en mayor o menor medida, con la configuración de los permisos.

Es sencillo localizar o identificar las distintos niveles de gestión.

El primer nivel de gestión, se encuentra en la "Configuración global >> pestaña "Permisos" y solo hay un nodo. Lo configurado ahí, tiene prioridad 4

El segundo nivel de gestión, se encuentra accediendo por medio del icono la barra de herramientas de cada componente y luego, pestaña "Permisos". Puede haber tantos nodos de segundo nivel como componentes. Lo configurado ahí tiene prioridad 3

El tercer nivel de gestión, se encuentra al editar/crear una categoría. Por medio del botón . Puede haber tantos nodos de tercer nivel como categorías. Lo configurado ahí, tiene prioridad 2

El cuarto nivel de gestión, se encuentra al editar/crear un artículo (botón "Asignar permisos"). Puede haber tantos nodos de cuarto nivel como artículos. Lo configurado ahí, tiene prioridad 1


Es decir y por ejemplo, desde la configuración global, podremos configurar más acciones de las que podremos configurar desde la edición de un artículo en concreto; sin embargo, a la hora de mostrarse ese artículo en concreto, tendrá más prioridad la configuración asignada desde el cuarto nivel de gestión, que es específica de ese artículo  y por su cercanía a él, que aquella que hubiéramos podido indicar en los niveles de gestión superiores al mismo.

Poder hacer las cosas de este modo, nos confiere una granularidad, cantidad de combinaciones, y un control mucho más amplio del que teníamos antes.

Es importante comprender que, dentro de los niveles de gestión, se aplicarán condiciones de prioridad, restricciones de configuración y habrá recursividad.

Las acciones

Son visibles desde los distintos niveles de gestión. Representan a aquellas operaciones relacionadas con las tareas, en las que es posible efectuar el control ACL. Hay nueve tipos de acciones predeteminadas. Estas son:

Acceso al sitio, acceso a la administración, super administrador, acceso al componente, crear, borrar, editar, editar estado, editar propios.

Según el nivel de gestión en el que nos encontremos, las acciones con las que predeterminadamente se permite interactuar son:

Primer nivel de gestión - Configuración global: Acceso al sitio, acceso a la administración, super administrador, acceso al componente, crear, borrar, editar, editar estado, editar propios.
Segundo nivel de gestión - Componentes: Acceso al componente, crear, borrar, editar, editar estado, editar propios.
Tecer nivel de gestión - Categorías: Crear, borrar, editar, editar estado, editar propios.
Cuarto nivel de gestión - Artículos: Borrar, editar, editar estado, editar propios.

Note que, solo los usuarios pertenecientes al "grupo super usuarios" (estado de la acción "super administrador" = Permitido), tienen acceso a la configuración global, y, por lo tanto, solo ellos pueden aplicar cambios en ese primer nivel de gestión.

La configuración global, es el nivel de gestión superior, y es a partir de esa configuración, con la que podremos establecer la configuración inicial de todo el sitio, para todas las acciones, y luego, en la medida que se nos permita, desde los otros niveles de gestión inferiores, como el de componentes, se nos permitirá interactuar con la configuración "componente a componente" (com_contact, com_users, com_content, etc), desde la edición de categorías se nos permitirá interactuar con la configuración "categoría por categoría" (extensible a categorías de articulos, categorías de enlaces web, categorías de contactos, etc), y, desde la edición de artículos se nos permitirá interactuar con la configuración "artículo por artículo".

La herencia de los permisos va bajando con recursividad por la estructura de los grupos, y por los cuatro niveles de gestión, siguiendo el orden.
El último nivel de gestión, es el que cobra mayor relevancia si cambiamos la configuración de permisos desde ahí; sin embargo, las acciones con las que podemos interactuar desde ahi, son las mínimas.

El estado de las acciones

Nos permite determinar, dentro de cada grupo, por cada acción, un estado. El estado de las acciones, dentro de nuestra estructura de grupos, se propaga y aplica con recursividad. Los valores posibles son: Sin asignar, heredado, permitido y denegado.

Sin asignar, solo se usa para el grupo público y desde la configuración global. En la estructura de los grupos, el grupo público equivale a la raíz, tras el cual, se podrán estructurar el resto de los grupos existentes o los nuevos que deseemos crear. Si el estado de una acción está "Sin asignar", será tratado como si estuviera asignado en "Denegado", pero con la diferencia que se podrá cambiar el estado desde los otros niveles de gestión o subgrupos (si el grupo tuviera subgrupos).

Heredado, quiere decir que las acciones de los grupos pueden heredar un estado de "permitido" o de "denegado", que determinará su estado, tomándose en cuenta lo que haya asignado desde los otros niveles de gestión superiores, o desde los grupos de más arriba al que pertenezca el grupo.

Permitido quiere decir que a la acción del grupo al que usted le cambie el estado a "Permitido" desde alguno de los niveles de gestión, podrá realizar esa acción a partir del lugar desde donde lo indique (incluyendo, recursivamente, a todos sus subgrupos, si tuviera); pero, si esta configuración entra en conflicto con lo asignado desde más arriba, el cambio que usted aplique, no tendrá efecto, y el conflicto será indicado con un "No permitido (bloqueado)" bajo el estado de configuración calculada. Si no se dan conflictos, la recursividad en lo asignado, hará efecto hasta que, desde otro nivel de gestión inferior (o subgrupos, si tuviera) se esté indicando otra cosa (y así sucesivamente).

Denegado quiere decir que a la acción del grupo al que usted le cambie el estado  a "Denegado" (denegar explícitamente) desde alguno de los niveles de gestión, no se podrá realizar esa acción a partir del lugar desde donde lo indique (incluyendo, recursivamente, a todos sus subgrupos, si tuviera). Denegado (explícito), tiene prioridad cuando se dan conflictos con lo que pueda haber asignado en los niveles de gestión o subgrupos de más abajo.

Otras consideraciones a tener en cuenta.

En el desempeño de esta tarea, desde el CMS Joomla! se intentará ayudarle en todo momento, por medio de la breve información que aparece en las pantallas de configuración ACL, o por medio de los tooltips emergentes que aparecen al mover el puntero del ratón sobre la mayoría de los parámetros configurables.
La iconografía usada, es muy intuitiva. Incluso para distinguir cuando un estado calculado de la acción está heredadamente permitido o denegado, se usa una tonalidad de colores más suave, para diferenciar con claridad lo heredado de lo explícito.
Establecer una configuración en el primer nivel de gestión (en la configuración global), sin aplicar otros cambios en ninguno de los otros niveles de gestión inferiores, hará que lo configurado sobre la configuración global, se propague recursivamente por el resto de los niveles de gestión. En el momento que usted empiece a aplicar cambios desde los niveles de gestión inferiores, los cálculos de las configuraciones resultantes podrían empezar a ser distintos, desde ahí donde usted aplique el cambio, y hacia abajo.
No todos los componentes dispondrán de cuatro niveles de gestión. Por ejemplo, el componente de anuncios, solo tiene tres. Es decir, podemos llegar ha gestionar los privilegios de acceso de sus categorías (tercer nivel de gestión); pero, si editamos un anuncio, podremos ver que no es posible asignar los privilegios "anuncio por anuncio".
Joomla! hace que sea fácil integrar los niveles de gestión en las extensiones de terceros, y puede que algunas de ellas, añadan acciones nuevas. En todo caso, se ha estado revisando lo que nos trae Joomla! de serie.
En caso de que se produzcan situaciones del tipo "No permitido (bloqueado)" en la asignación del estado de los permisos, tenga en cuenta de que normalmente se deberá a que usted está entrando en contradicción con el modelo permitido. Posiblemente, debido a que desde un nivel de gestión inferior, está permitiendo lo que desde un nivel de gestión superior se está denegado explicítamente, o, porque desde un subgrupo, está permitiendo alguna acción que desde el grupo principal, se está denegando explícitamente.
Haciendo un buen uso de "Sin asignar" desde la configuración global y grupo público (que se pasará en herencia al resto de grupos de la estructura como "Denegado al que se le puede cambiar el estado"), para luego, "heredar, permitir o denegar" los estados de las acciones, sobre una estructura de grupos y subgrupos coherente, y siguiendo un razonamiento lógico y ajustado al modelo permitido, se podrá evitar provocar este tipo de situaciones.
Los datos de ejemplo incluidos e instalables junto con la instalación de  Joomla!, además de la información visible desde el sitio, proporcionan una excelente referencia al "como están configuradas todas las cosas", incluyendo lo relacionado con el tema del ACL. Sí hace un buen uso de los datos de ejemplo, le pueden resultar de gran ayuda; sin embargo, comprenda que son eso, solo ejemplos, y que por lo tanto, los requisitos de su sitio en cuanto a estructuración de grupos, niveles de acceso, y asignación de permisos podrían ser otros.

Ahora es su turno... esperamos que con la información que le facilitamos por medio de este artículo, le resulte más sencillo animarse y practicar con estas cosas.