3 Securitzant Oracle

Vista general

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

Per a una configuració bàsica, veieu les instruccions de creació de bases de dades Oracle, 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 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.

El suport d'Oracle DB és obsolet des de Zabbix 7.0.

Creació d'usuaris

Suposant que el propietari de la base de dades connectable (PDB) és usr_owner, es recomana crear dos usuaris addicionals amb els privilegis corresponents (per a les operacions diàries):

  • usr_srv - usuari per executar el servidor Zabbix;
  • usr_web - usuari per executar la interfície i l'API de Zabbix.

Aquests usuaris han de ser creats pel propietari de la PDB (usr_owner) mitjançant les ordres següents:

CREATE USER usr_srv IDENTIFIED BY "usr_srv" DEFAULT TABLESPACE "usr_owner" TEMPORARY TABLESPACE temp;
       CREATE USER usr_web IDENTIFIED BY "usr_web" DEFAULT TABLESPACE "usr_owner" TEMPORARY TABLESPACE temp;
       
       GRANT CREATE SESSION, DELETE ANY TABLE, INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE, SELECT ANY SEQUENCE TO usr_srv;
       GRANT CREATE SESSION, DELETE ANY TABLE, INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE, SELECT ANY SEQUENCE TO usr_web;

La restauració i l'actualització de la taula l'ha de fer el propietari de la base de dades.

Després de crear els usuaris, procediu a crear sinònims.

Generació de sinònims

L'script següent crea sinònims , de manera que usr_srv i usr_web puguin accedir a les taules de l'esquema usr_owner sense especificar l'esquema explícitament.

BEGIN
       FOR x IN (SELECT owner, table_name FROM all_tables WHERE owner ='usr_owner')
       LOOP
       EXECUTE IMMEDIATE 'CREATE OR REPLACE SYNONYM usr_srv.'|| x.table_name ||' FOR '||x.owner||'.'|| x.table_name;
       EXECUTE IMMEDIATE 'CREATE OR REPLACE SYNONYM usr_web.'|| x.table_name ||' FOR '||x.owner||'.'|| x.table_name;
       BULE FINAL;
       FINAL;
       /

::: nota important Aquest script s'hauria d'executar cada cop després de crear o canviar l'estructura de la base de dades Zabbix (per exemple, després d'actualitzar Zabbix, si es van crear o canviar el nom d'algunes taules).