2 Обезбеђивање PostgreSQL/TimescaleDB

Преглед

Овај одељак садржи најбоље праксе за обезбеђење PostgreSQL базе података.

За основно подешавање, погледајте подразумевана упутства PostgreSQL креирање базе података, која укључују креирање 'zabbix' корисника са пуним привилегијама на Zabbix бази података. Овај корисник је власник базе података који такође има потребне привилегије за измену структуре базе података приликом надоградње Zabbix-а.

Да бисте побољшали безбедност, препоручује се конфигурисање обрасца коришћења безбедне шеме, као и креирање додатних улога базе података и корисника са минималним привилегијама. Ове улоге и кориснике треба конфигурисати на основу принципа најмањих привилегија, односно треба да имају само привилегије које су неопходне за обављање предвиђених функција.

Подешавање базе података

Креирајте корисника који ће бити власник базе података и креирајте Zabbix базу података; власник базе података је корисник који је наведен при креирању базе података:

createuser -U postgres -h localhost --pwprompt usr_owner
       createdb -U postgres -h localhost -O usr_owner -E Unicode -T template0 zabbix

Чисту инсталацију или надоградњу базе података мора извршити власник базе података. То је зато што је право на брисање објекта базе података или измену његове дефиниције привилегија која је својствена власнику базе података и не може се доделити или опозвати.

Следеће команде на овој страници морају се извршити док се веза са PostgreSQL-ом успоставља посебно са zabbix базом података.

Креирајте шему zabbix и поставите власника базе података (usr_owner) да буде власник ове шеме:

CREATE SCHEMA zabbix AUTHORIZATION usr_owner;

Конфигуришите безбедну шему usage pattern:

REVOKE CREATE ON SCHEMA public FROM PUBLIC;
       REVOKE ALL ON DATABASE zabbix FROM PUBLIC;
       -- Напомена: search_path треба да показује на шему "zabbix":
       ALTER ROLE ALL IN DATABASE zabbix SET search_path = "zabbix";

Након подешавања базе података, наставите са креирањем корисничких улога.

Креирање корисничких улога

Креирајте следеће улоге са одговарајућим привилегијама:

  • zbx_srv - улога за покретање 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 - улога за покретање Zabbix фронтенда и API-ја:
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 - улога за резервну копију табеле:
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;

Рестаурација табеле је могућа само од стране власника базе података.

Након креирања улога, оне се могу доделити корисницима.

Додељивање корисничких улога

Да бисте доделили креиране корисничке улоге, креирајте кориснике и доделите им релевантне улоге. Замените <user>, <role> и <password> по потреби.

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

На пример, да бисте креирали и доделили улогу за покретање Zabbix сервера и проксија:

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

Партиционисање базе података помоћу TimescaleDB-а

Партиционисање базе података је олакшано помоћу TimescaleDB-а. Да би се користио TimescaleDB, Zabbix серверу су потребна права власника базе података.

Ако је PostgreSQL zabbix шема већ креирана у zabbix бази података, можете омогућити TimescaleDB следећом командом:

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