Esta sección contiene las mejores prácticas para configurar una base de datos PostgreSQL de forma segura.
Para una configuración sencilla, se recomienda seguir las instrucciones predeterminadas de creación de base de datos PostgreSQL, que incluyen la creación del usuario 'zabbix' con privilegios completos en la base de datos Zabbix. Este usuario es el propietario de la base de datos y también tiene los privilegios necesarios para modificar la estructura de la base de datos al actualizar Zabbix.
Para mejorar la seguridad, se recomienda configurar un patrón de uso de esquema seguro, así como crear roles de base de datos adicionales y usuarios con privilegios mínimos. Estos roles y usuarios deben configurarse según el principio de privilegio mínimo, es decir, sólo deben tener privilegios que sean esenciales para realizar las funciones previstas.
Cree el usuario que será el propietario de la base de datos y cree la base de datos Zabbix; el propietario de la base de datos es el usuario especificado en la creación de la base de datos:
createuser -U postgres -h localhost --pwprompt usr_owner
createdb -U postgres -h localhost -O usr_owner -E Unicode -T template0 zabbix
El propietario de la base de datos debe realizar una instalación limpia o una actualización de la base de datos. Esto se debe a que el derecho a eliminar un objeto de base de datos o modificar su definición es un privilegio inherente al propietario de la base de datos y no se puede otorgar ni revocar.
Los siguientes comandos en esta página deben ejecutarse mientras la conexión a PostgreSQL se realiza específicamente a la base de datos zabbix
.
Cree el esquema zabbix
y configure el propietario de la base de datos (usr_owner
) para que sea el propietario de este esquema:
Configure un esquema de patrón de uso seguro:
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE zabbix FROM PUBLIC;
-- Nota: search_path debe apuntar al esquema "zabbix":
ALTER ROLE ALL IN DATABASE zabbix SET search_path = "zabbix";
Después de configurar la base de datos, proceda a crear los roles de usuario.
Cree los siguientes roles con los privilegios correspondientes:
CREATE ROLE zbx_srv;
GRANT CONNECT ON DATABASE zabbix TO zbx_srv;
GRANT USAGE ON SCHEMA zabbix TO zbx_srv;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT DELETE, INSERT, SELECT, UPDATE ON TABLES TO zbx_srv;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT, UPDATE, USAGE ON sequences TO zbx_srv;
CREATE ROLE zbx_web;
GRANT CONNECT ON DATABASE zabbix TO zbx_web;
GRANT USAGE ON SCHEMA zabbix TO zbx_web;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT DELETE, INSERT, SELECT, UPDATE ON TABLES TO zbx_web;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT, UPDATE, USAGE ON sequences TO zbx_web;
CREATE ROLE zbx_bckp;
GRANT CONNECT ON DATABASE zabbix TO zbx_bckp;
GRANT USAGE ON SCHEMA zabbix TO zbx_bckp;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT ON TABLES TO zbx_bckp;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT, UPDATE, USAGE ON sequences TO zbx_bckp;
La restauración de tablas sólo es posible por el propietario de la base de datos.
Después de crear los roles, se pueden asignar a los usuarios.
Para asignar los roles de usuario creados, cree usuarios y asígneles los roles relevantes. Reemplace <usuario>
, <rol>
y <contraseña>
según sea necesario.
Por ejemplo, para crear y asignar la función para ejecutar el servidor y el proxy Zabbix:
TimescaleDB facilita la partición de la base de datos. Para utilizar TimescaleDB, el servidor Zabbix requiere privilegios de propietario de la base de datos.
Si el esquema zabbix
de PostgreSQL ya se ha creado en la base de datos zabbix
, puede habilitar TimescaleDB con el siguiente comando: