2 Securitzant PostgreSQL/TimescaleDB

Vista general

Aquesta secció conté les bones pràctiques per securitzar una base de dades PostgreSQL.

::: notclassic Per a una configuració bàsica, veieu les instruccions de creació de bases de dades PostgreSQL, que inclouen la creació de l'usuari 'zabbix' amb privilegis complets a la base de dades Zabbix. Aquest usuari és el propietari de la base de dades que també té els privilegis necessaris per modificar l'estructura de la base de dades quan actualitza Zabbix.

Per millorar la seguretat, es recomana configurar un patró d'ús d'esquema segur, així com crear rols de base de dades addicionals i usuaris amb privilegis mínims. Aquests rols i usuaris s'han de configurar segons el principi del mínim privilegi, és a dir, només haurien de tindre privilegis essencials per a l'exercici de les funcions previstes.

Configuració de la base de dades

Creeu l'usuari que serà el propietari de la base de dades i creeu la base de dades Zabbix; el propietari de la base de dades és l'usuari que s'especifica en la creació de la base de dades:

createuser -U postgres -h localhost --pwprompt usr_owner
       creatb -U postgres -h host local -O propietari_usr -E Unicode -T template0 zabbix

El propietari de la base de dades ha de fer una instal·lació o actualització neta de la base de dades. Això es deu al fet que el dret d'eliminar un objecte de base de dades o modificar-ne la definició és un privilegi inherent al propietari de la base de dades i no es pot concedir ni revocar.

Les ordres següents d'aquesta pàgina s'han d'executar mentre la connexió a PostgreSQL es fa específicament a la base de dades zabbix.

Creeu l'esquema zabbix i configureu el propietari de la base de dades (usr_owner) perquè sigui el propietari d'aquest esquema:

CREATE SCHEMA zabbix AUTHORIZATION usr_owner;

Configureu un esquema segur patró d'ús:

REVOQUE CREATE ON SCHEMA public FROM PUBLIC;
       REVOKE ALL ON DATABASE zabbix FROM PUBLIC;
       -- Nota: search_path hauria d'apuntar a l'esquema "zabbix":
       ALTER ROLE ALL IN DATABASE zabbix SET search_path = "zabbix";

Després de configurar la base de dades, procediu a la creació de rols d'usuari.

Creació de rols d'usuari

Creeu els rols següents amb els privilegis corresponents:

  • zbx_srv - rol per executar el servidor i el proxy Zabbix:
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;
  • zbx_web - rol per executar la interfície i l'API de Zabbix:
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;
  • zbx_bckp - rol per a la còpia de seguretat de la taula:
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ó de la taula només és possible pel propietari de la base de dades.

Després de crear els rols, es poden assignar als usuaris.

Assignació de rols d'usuari

Per assignar els rols d'usuari creats, creeu usuaris i assigneu-los els rols rellevants. Substituïu <usuari>, <rol> i <contrasenya> segons sigui necessari.

CREATE USER <user> WITH ENCRYPTED password '<password>';
       GRANT <role> TO <user>;

Per exemple, per crear i assignar la funció per executar el servidor i el proxy Zabbix:

CREATE USER usr_srv WITH ENCRYPTED password 'password';
       GRANT zbx_srv TO usr_srv;

Particionament de bases de dades amb TimescaleDB

El particionament de la base de dades és proveït per TimescaleDB. Per emprar TimescaleDB, el servidor Zabbix requereix privilegis de propietari de la base de dades.

Si l'esquema zabbix de PostgreSQL ja s'ha creat a la base de dades zabbix, podeu habilitar TimescaleDB amb l'ordre següent:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb WITH SCHEMA zabbix CASCADE;" | sudo -u postgres psql zabbix