USUARIOS Y SEGURIDAD EN ZOPE
La seguridad es uno de los pilares fundamentales
de las aplicaciones Web en la actualidad, por lo tanto nunca debe de ser
un añadido para proteger tu sistema, sino que debe ser un elemento
a tener en cuenta cuando se realiza el diseño de un sitio Web. En
general, debemos definir qué usuarios pueden acceder a nuestro sitio
y qué pueden hacer, cuando hablamos de usuarios no sólo nos
referimos a aquellos que visitan nuestro Web, sino también a las
personas que se encargarán de mantenerlo y de aumentar sus contenidos,
sabemos que la creación y mantenimiento de un sitio es complejo
y requiere la coordinación de un grupo de personas.
A continuación, se da una descripción
de cómo Zope gestiona la seguridad a través de usuarios,
roles, permisos y políticas de seguridad. Para una información
más detallada se referencia al Capítulo 6 del Zope Book,
cuyo contenido se ha resumido en este documento.
Introducción
Las funciones de seguridad que soporta Zope son autenticación
y autorización. Autenticación se refiere a saber quién
eres y autorización qué puedes hacer. Zope define objetos
del tipo carpetas de usuario ("User Folders") que sirven para crear
cuentas de usuario. Cuando accedes a un recurso protegido, Zope te pregunta
por tu usuario/palabra de paso, esto se corresponde con el proceso de autenticación.
Sólo se realiza un proceso de autenticación si se accede
a un recurso protegido, sino el objeto se considera de acceso público
y se asume que el usuario es "anonymous".
Una vez realizada la autenticación, Zope chequea
si puedes acceder o no al recurso. Para ello define roles y permisos. Los
usuarios tienen roles que describen que es lo que pueden hacer y los objetos
de Zope tienen permisos asociados que describen qué puede realizarse
con ellos. Las políticas de seguridad mapean roles a permisos, es
decir quién puede hacer y qué puede hacer. De esta forma
Zope gestiona el proceso de autorización.
Usuarios en Zope
Los usuarios en Zope son objetos que contienen información
sobre quienes pueden entrar en el sistema y realizar operaciones sobre
objetos Zope.
Crear usuarios en carpetas de usuario ("Users Folders")
Para crear usuarios en Zope se debe de añadir
objetos de tipo usuario en las carpetas de usuarios. Si queremos por ejemplo,
crear un usuario que colabore con nosotros en la gestión de nuestro
servidor Zope, seguiremos los siguientes pasos:
-
Nos situamos en la página de gestión de nuestro servidor
Zope http://localhost:8080/manage y hacemos click en la carpeta de usuarios,
cuyo identificador es acl_users.
Aparece una ventana como la siguiente:
Figura 1. Creación de un usuario

-
Los campos que nos piden son:
-
El campo Name, introducimos el
nombre del usuario, por ejemplo juan.
-
El campo Password y Confirm
son para introducir y confirmar la palabra de paso asociada al usuario
que estamos creando, por ejemplo, cambiame.
Un usuario puede cambiar su palabra de paso, de esta forma se lo recordamos
:-).
-
El campo Domains restringe los
dominios de Internet desde los cuales el usuario puede entrar al sistema,
es una forma de aumentar el nivel de seguridad. El dominio se puede especificar
con direcciones IP (163.117.139.*) o con nombres de dominio (it.uc3m.es).
En este ejemplo, no indicamos ningún dominio específico,
así que el usuario puede acceder desde cualquiera.
-
El campo Roles es una lista de
selección para indicar el rol que tiene el usuario. En general,
los usuarios que tienen que realizar tareas de gestión deben de
tener el rol Manager, como es el
caso del usuario que estamos creando. El rol Owner
es más especifico, típicamente un usuario es dueño
de un objeto Zope determinado, no de un conjunto de ellos de forma global.
Estos dos son los roles por defecto, pero pueden crearse más roles
en Zope para asignárselos a nuestros usuarios, veremos más
adelante cómo se crean. En este ejemplo, le asignamos el rol de
Manager.
-
Al pulsar el botón "Add"
confirmamos la creación de este nuevo usuario, aparecerá
de esta forma un nuevo usuario en la carpeta.
Figura 2. Carpeta de usuarios /acl_users
Editar usuarios
Para editar usuarios, simplemente hace falta pinchar
en ese usuario, dentro de la carpeta de usuarios donde se creó.
Aparece una pantalla muy similar a la de creación de usuarios, que
nos permitirá modificar los valores que tiene asociados menos su
nombre.
Figura 3. Edición de usuarios

Como todos los objetos Zope, el cambio en los valores
de un usuario está protegido por una política de seguridad
asociada. Un usuario sólo puede cambiar su password si tiene permisos
de Manager, es decir, tiene asociado
el rol de Manager.
Un usuario con el rol de Manager en una carpeta de usuarios, puede editar
y modificar los valores de todos los usuarios definidos en esa carpeta,
esto puede parecer correcto o no, pero este problema, si se considera como
tal, se puede solucionar. Observemos, que aunque se pueda modificar la
palabra de paso, ésta no puede ser leida desde el interfaz de Zope
(aparece con asteriscos).
En general, las carpetas de usuarios son como las
carpetas ("folders") de Zope; puedes crear, editar y borrar objetos
contenidos en la carpeta, que en este caso son de tipo usuario. Pero no
se pueden cortar ni pegar usuarios ni de una de carpeta de usuarios a otra,
ni en la misma carpeta.
Localización de usuarios
Zope puede contener múltiples carpetas de
usuarios en diferentes localizaciones de su jerarquía de objetos.
Un usuario puede acceder a los recursos que están en la carpeta
en la que se encuentra la carpeta de usuarios en la que está definido.
Por ejemplo, el usuario que hemos creado en la carpeta de usuarios acl_users
que se encuentra en la carpeta de "root",
puede acceder a todos los objetos definidos dentro de esa carpeta. Pero
si definimos un usuario dentro de un acl_users
de un carpeta /Ejemplo, este usuario
sólo podrá acceder a los objetos contenidos en /Ejemplo.
Cuando se construye un web en Zope típicamente
los recursos relacionados entre sí se almacenan en la misma carpeta
y se aplica la misma política de seguridad a todos ellos, de forma
que los usarios definidos dentro de la carpeta acl_users
dentro de esa carpeta, contiene usuarios que pueden realizar operaciones
sobre ese conjunto de objetos.
Gestión de seguridad
Para la gestión de la seguridad, Zope emplea tres conceptos: roles,
permisos y políticas de seguridad. Los roles son una forma de agrupar
usuarios según los que pueden hacer. Los permisos están asociados
a los objetos e indican qué se puede hacer con ellos. Las políticas
de seguridad asocian roles a permisos y por lo tanto, indican quién
y qué se puede hacer con un determinado objeto Zope.
En Zope se pueden construir políticas de seguridad adaptadas
a los requisitos que precise la construcción del sitio web que estemos
realizando, definiendo nuevos roles y nuevos permisos. Las políticas
de seguridad también son aplicables a nivel de usuario, es decir,
puedes restringir los permisos que tiene un usuario concreto sobre determinados
objetos Zope, independientemente del rol al que pertenezca.
Roles
Zope define un conjunto de roles que definen qué tipos de acciones
pueden realizarse. Los roles definen grupos de usuarios como
Manager
y Anonymous. Los roles en Zope son similares a los grupos de usuarios
en UNIX y con en UNIX un usuario puede tener varios roles (grupos). Los
roles permiten gestionar la seguridad de manera más sencilla porque
permiten definir la seguridad a nivel global a un conjunto de usuarios
y no a cada uno de manera particular.
Por defecto, Zope define tres roles de usuarios:
-
Manager, es el rol asociado a usuarios que realizan tareas de gestión
y que pueden crear y editar objetos Zope.
-
Anonymous, es el rol asociado al usuario anonymous de Zope, permite visualizar
objetos públicos de Zope y en general, este rol nunca debe permitir
modificar objetos Zope.
-
Owner, este rol es asociado automáticamente a los usuarios que crean
un objeto Zope.
Para crear sitios web sencillos, con los roles de Manager y Anonymous es
suficiente para gestionar la seguridad (sólo las personas que gestionen
el web deben de tener un usuario perteneciente al rol Manager, los demás
visualizaran contenidos como usuarios Anonymous).
Creación de roles
Para crear un nuevo rol es necesario ir al
tab de seguridad (
Security),
en la que se ven de forma gráfica las políticas de seguridad
existentes, es decir qué permisos están asociados a cada
rol definido. Al final de esta página se puede añadir un
nuevo rol indicando su nombre en el campo "
User
defined role" y pulsando el botón "
Add
Role".
Se puede comprobar que el nuevo rol ha sido creado, viendo que en el
tab
de seguridad aparece una nueva columna con el nuevo rol. Los roles creados
pueden eliminarse seleccionando el que queremos borrar y pulsando el botón
"
Delete Role" (los roles que por
defecto tiene Zope no pueden eliminarse).
Recordar, que como todo objeto Zope, los roles existen en el nivel
de jerarquía de carpetas en la que ha sido creado, así si
queremos tener un rol válido para todas las aplicaciones creadas
en nuestro servidor Zope, este rol debe de ser creado en la carpeta "root".
Permisos
Los permisos definen qué acciones pueden realizarse sobre objetos
Zope. Por ejemplo, los métodos DTML y los documentos DTML pueden
visualizarse, por lo tanto existe un permiso que es
View ("vista")
asociado a estos objetos.
Algunos permisos definidos sólo son relevantes para unos tipos
de objetos, por ejemplo el permiso
Change DTML Methods ("modificar
métodos DTML") sólo protege objetos Zope del tipo método
DTML. Para ver los permisos que tiene un determinado objeto, es necesario
seleccionar ese objeto (pinchando en él) y yendo al
tab de
seguridad, en el que se visualizarán los permisos que tiene y a
qué roles están asociados cada uno de ellos.
Figura 4. Política de seguridad asociada a un método
DTML
Creación de políticas de seguridad
Las políticas de seguridad en Zope asocian permisos de objetos a
roles de usuarios, y por lo tanto, nos dicen quién puede hacer y
qué puede hacer. Las políticas de seguridad se pueden definir
para cada objeto Zope, para ello, se selecciona el objeto correspondiente
(pinchando en él), se va al
tab de seguridad, y se van marcando
los permisos que tiene cada uno de los roles para ese objeto.
Vemos en la figura siguiente las políticas de seguridad definidas
a nivel de "root".
Figura 5. Políticas de seguridad globales
Adquisición de políticas de seguridad
A la hora de gestionar la seguridad en Zope, es importante tener en cuenta
como se adquieren políticas de seguridad de padres a hijos en la
jerarquía de objetos de Zope. La adquisición es un mecanismo
en Zope por el cual se comparte información contenida en un carpeta
a todas los objetos dentro en ella. En el caso de seguridad, los objetos
contenidos en una carpeta, por defecto, adquieren la política de
seguridad de esa carpeta.
La adquisición de políticas de seguridad puede desactivarse:
podemos ver yendo al
tab de seguridad de una carpeta, como existe
una columna a la izquierda en la que al lado de cada uno de los permisos
definidos se puede activar o desactivar la opción
Acquire permission
settings
.Por defecto, siempre se encuentra activada y por lo tanto,
la política de seguridad se comparte según la jerarquía
de objetos Zope establecida (los hijos heredan automáticamente todos
las políticas de seguridad de los padres).
Por ejemplo, si queremos hacer que el contenido de una carpeta sea
totalmente privado y sólo determinados usuarios puedan ver el contenido
de la carpeta (y no por defecto cualquiera, a través del usuario
anonymous),
no sólo es necesario quitar el permiso
View
al rol
Anonymous en la carpeta
correspondiente, sino que además debe eliminarse la adquisición
de ese permiso, en el caso de que sus carpetas padres lo tengan activado
o adquirido.
Reglas de uso para la gestión de la seguridad en Zope
La combinación de usuarios, roles y permisos nos permite crear complejas
estructuras de seguridad en los sitios web creados a través de Zope.
Es importante tener en cuenta las siguientes reglas para establecer la
política de seguridad que queremos aplicar:
-
Definir usuarios a niveles inferiores.
-
Los objetos que deben de ser gestionados por el mismo grupo de usuarios
deben de estar almacenados en la misma carpeta ("folder").
-
Buscar jerarquías simples.
-
Crear roles para agrupar usuarios con permisos comunes.
-
Emplear la adquisición de políticas de seguridad, definiendo
políticas a niveles superiores.