Tres ideas sobre como implementar la seguridad en Odoo

28 de mayo de 2025 por
Gustavo Orrillo
| Sin comentarios aún
 

Bueno, este post no va a describir como funcionan las listas de acceso, ni los grupos de usuarios ni las reglas de registro. Eso ya esta muy explicado en otros videos o documentación. Tampoco va a describir herramientas como two-factor-authentication El objetivo de este post es dar tres ideas para mejorar la implementación de la seguridad en una empresa que usa Odoo. 

Primero - todos los usuarios no deben tener problemas accediendo los diferenets modelos

Un problema recurrente con las listas de acceso es cuando los usuarios intentan acceder de manera no intencionada un registro de un modelo al que no tienen acceso. Por ejemplo; un vendedor intenta leer los datos de una transferencia al acceder un pedido de venta. 

Eso ocurre muchas veces porque en Odoo se usa mucho los campos computados y en los métodos de estos campos se intenta acceder a modelos para los cuales el usuario no tiene permiso. 

Una solución simple para este problema es darle acceso de lectura a todos los usuarios a todos los usuarios. Para ello se deben modificar las listas de acceso de todos los modelos. Para cada modelo se debe indicar que el grupo de usuarios internos tiene acceso de lectura al modelo.

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_credit_user,account.credit.user,model_credit,base.group_user,1,0,0,0

En el ejemplo anterior vemos como se asigna (en un modulo) los permisos de lectura del modelo credit al grupo de usuarios internos (al cual pertenecemos todos los usuarios  de backend de Odoo)

Que sucede con las acciones de borrado, creación y actualización de registros? Para ello se pueden definir listas de acceso adicionales para los grupos indicados. Ahí se puede indicar que el personal de ventas puede modificar un pedido de venta (por ejemplo).

Segundo - Restringir el acceso a diferentes menues

Cada menú necesita tener definido que grupos de usuarios pueden accederlo. De esta manera se puede restringir que datos maestros y transacciones pueden ver los usuarios. Se puede indicar que los usuarios de administración solo pueden ver el menú de Contabilidad. Y los usuarios de ventas no. Si los usuarios de venta desean acceder a las facturas de sus clientes, lo podrán hacer mediante smart-buttons en los formularios de clientes o en los pedidos de venta.

Para hacer más sencilla esta tarea hay módulos muy interesantes que permiten ocultar menúes a usuarios determinados (módulos que se pueden extender a los grupos). Esto lo pueden encontrar explicado en el blog de Cybrosys donde se indica como ocultar un menú a un usuario (por ejemplo, el menú de Contactos, muchas veces problemático).

Tercero - Implementar un módulo que indique en las transacciones que usuarios pueden leer la transacción

Bueno. Por una parte ya tenemos definidos que todos los usuarios pueden leer todos los modelos, que por grupos se pueden actualizar los registros y que por grupos y menúes se pueden acceder a los diferentes formularios y vistas que brinda el sistema. Ahora llega el momento de definir cuales datos pueden ver los usuarios (por ejemplo, un vendedor solo puede ver los pedidos creados por el). 

Para ello pensaba en una funcionalidad parecida a la lista de seguidores que uno tiene para los mensajes. Pero en realidad sería una lista de usuarios que van a poder leer el registro. Por ejemplo; un pedido de venta puede ser leído por su creador y por el gerente de ventas. 

Para ello podríamos definir (en un módulo) un nuevo modelo que implemente tales accesos. Probablemente por medio de un mixin. Y luego en las reglas de seguridad; implementaríamos una regla de seguridad en la cual indicamos que los usuarios pertenecientes a la lista del registro pueden acceder el registro en cuestión. 

Aún no implementé esta idea; pero me parece que de esa manera podríamos indicar de una forma mantenible (la seguridad tiene dos problemas; definirla y luego mantenerla) que usuarios pueden leer cuales registros. 

Bueno; estas fueron tres ideas. Si bien no son un enfoque completo de seguridad creo que dan un marco con el cual se puede trabajar en un entorno de seguridad que se pueda mantener. Espero que les hayan resultado de utilidad. 

Gustavo Orrillo 28 de mayo de 2025
Compartir
Categorías
Archivar
Identificarse dejar un comentario