3 Oracle drošības nodrošināšana

Pārskats

Šajā sadaļā ir aprakstīta labākā prakse Oracle datubāzes drošības nodrošināšanai.

Pamata iestatīšanai skatiet noklusējuma Oracle datubāzes izveides instrukcijas, kas ietver 'zabbix' lietotāja izveidi ar pilnām privilēģijām Zabbix datubāzē. Šis lietotājs ir datubāzes īpašnieks, kuram ir arī nepieciešamās privilēģijas datubāzes struktūras modificēšanai, veicot Zabbix jaunināšanu.

Lai uzlabotu drošību, ir ieteicams izveidot papildu datubāzes lietotājus ar minimālām privilēģijām. Šie lietotāji jākonfigurē, pamatojoties uz mazāko privilēģiju principu, tas ir, tiem jābūt tikai tādām privilēģijām, kas ir būtiskas paredzēto funkciju veikšanai.

Oracle DB atbalsts ir novecojis kopš Zabbix 7.0.

Lietotāju izveide

Pieņemot, ka pluggable database (PDB) īpašnieks ir usr_owner, ieteicams izveidot divus papildu lietotājus ar atbilstošām privilēģijām (ikdienas darbībām):

  • usr_srv - lietotājs Zabbix serveris palaišanai;
  • usr_web - lietotājs Zabbix lietotāja saskarne un API palaišanai.

Šie lietotāji ir jāizveido PDB īpašniekam (usr_owner), izmantojot šādas komandas:

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;

Tabulu atjaunošana un jaunināšana jāveic datubāzes īpašniekam.

Pēc lietotāju izveides turpiniet ar sinonīmu izveidi.

Sinonīmu ģenerēšana

Tālāk redzamais skripts izveido sinonīmus, lai usr_srv un usr_web varētu piekļūt tabulām usr_owner shēmā, skaidri nenorādot shēmu.

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;
END LOOP;
END;
/

Šis skripts jāpalaiž katru reizi pēc tam, kad ir izveidota vai mainīta Zabbix datubāzes struktūra (piemēram, pēc Zabbix atjaunināšanas, ja dažas tabulas ir izveidotas vai pārdēvētas).