Permisos usuario Backup + Pilaga 1.13

Buenas

En UNGS tenemos implementado un proceso de backup automático sobre la base Pilaga y Toba.

Los permisos se le asignaron al usuario “backup” mediante esta función:

CREATE OR REPLACE FUNCTION manage_backup_privileges(p_user text, p_schema text, action boolean)
RETURNS void AS $BODY$ DECLARE objeto text;
BEGIN
FOR objeto IN
SELECT tablename FROM pg_tables WHERE schemaname = p_schema
UNION
SELECT relname FROM pg_statio_all_sequences WHERE schemaname = p_schema
LOOP
IF action = true THEN
RAISE NOTICE ‘Asignando todos los privilegios a % sobre %.%’, p_user,p_schema, objeto;
EXECUTE 'GRANT ALL PRIVILEGES ON ’ || p_schema || ‘.’ || objeto || ’ TO ’ || p_user ;
ELSE
RAISE NOTICE ‘Quitando todos los privilegios a % sobre %.%’, p_user,p_schema, objeto;
EXECUTE 'REVOKE ALL PRIVILEGES ON ’ || p_schema || ‘.’ || objeto || ’ FROM ’ || p_user ;
END IF;
END LOOP;
END;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE;

Para asignar los permisos, la ejecutamos de la siguiente manera:

select manage_backup_privileges(‘usuario’,‘schema’, true);

Funcionaba bien, hasta que migramos a la versión 1.13.
Luego de la migración, el proceso de backup dejó de realizarse, debido a errores de permisos, del usuario “backup” sobre la base Pilaga y Toba.

Volvimos a asignar los permisos sobre el schema public y auditoría, de la base pilagá, sin problema; pero cuando queremos asignarle permisos sobre el schema wichi, no obtenemos resultado.
La única forma de poder realizar el backup de la base, con el usuario “backup”, fue cambiarle el propietario al schema wichi (se lo cambiamos de “postgres” a al usuario “backup”).

No sabemos si este cambio nos traerá otros problemas futuros; por eso consultamos respecto a cuál sería la forma correcta de solucionar este inconveniente.

Lo mismo nos ha ocurrido con la base toba, pero sobre ella no hemos modificado propietarios esperando respuesta.

Saludos

Javier Salazar

Hola Javier,

Por lo general no se aconseja usar el usuario postgres para nada. Esto debido a que es el superusuario, y cualquier problema de seguridad dejaría expuesto/s lo/s cluster/s. En Pilagá no estamos muy acostumbrados por que al instalar todo a mano solemos usar el usuario postgres como propietario de las bases, pero si te fijas en algún proyecto que use el instalador web (Diaguita, Mapuche, etc), vas a ver que uno de los pasos de instalación te genera un usuario propio. En definitiva creo que tener un usuario separado para los backups, no tiene mucho sentido cuando el propietario sigue siendo postgres.

Yo creo que lo conveniente en cuanto a seguridad y practicidad es que crees un usuario “pilaga” (o como sea) y que el mismo este encargado de los backups.

Saludos, Esteban.

Esteban

Desde que implementamos Pilagá, tenemos un usuario creado para poder realizar los resguardos (usuario “backup”), al cual se le asignaron los permisos mediante las función que posteamos arriba.

El problema que tenemos, es que desde la actualización a la versión 1.13, con esta función no pudimos asignarle permisos al usuario “backup” sobre el schema wichi de la base pilagá, ni sobre la base toba; por ende, el dump que se realiza desde Redes, conectándose con el usuario “backup”, no se puede realizar.

Para resolver esta situación, y poder realizar los resguardos diarios, tuvimos que cambiar el owner del schema wichi y asignárselo al usuario “backup”.

La consulta es si este cambio, en el propietario del schema, nos puede traer aparejado problemas posteriores.

Saludos

Javier Salazar