3 Zabezpieczanie Oracle

Przegląd

Ta sekcja zawiera najlepsze praktyki dotyczące zabezpieczania bazy danych Oracle.

W przypadku podstawowej konfiguracji zobacz domyślne instrukcje tworzenia bazy danych Oracle, które obejmują utworzenie użytkownika 'zabbix' z pełnymi uprawnieniami do bazy danych Zabbix. Ten użytkownik jest właścicielem bazy danych i ma również niezbędne uprawnienia do modyfikowania struktury bazy danych podczas aktualizacji Zabbix.

Aby zwiększyć bezpieczeństwo, zaleca się tworzenie dodatkowych użytkowników bazy danych z minimalnymi uprawnieniami. Użytkownicy ci powinni być skonfigurowani zgodnie z zasadą najmniejszych uprawnień, to znaczy powinni mieć tylko te uprawnienia, które są niezbędne do wykonywania zamierzonych funkcji.

Obsługa Oracle DB jest przestarzała od Zabbix 7.0.

Tworzenie użytkowników

Zakładając, że właścicielem pluggable database (PDB) jest usr_owner, zaleca się utworzenie dwóch dodatkowych użytkowników z odpowiednimi uprawnieniami (do codziennych operacji):

  • usr_srv - użytkownik do uruchamiania serwera Zabbix;
  • usr_web - użytkownik do uruchamiania frontend Zabbix i API.

Użytkownicy ci muszą zostać utworzeni przez właściciela PDB (usr_owner) przy użyciu następujących poleceń:

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;

Przywracanie i aktualizacja tabel powinny być wykonywane przez właściciela bazy danych.

Po utworzeniu użytkowników przejdź do tworzenia synonimów.

Generowanie synonimów

Poniższy skrypt tworzy synonimy, dzięki czemu usr_srv i usr_web mogą uzyskiwać dostęp do tabel w schemacie usr_owner bez konieczności jawnego podawania schematu.

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

Ten skrypt należy uruchamiać za każdym razem po utworzeniu lub zmianie struktury bazy danych Zabbix (na przykład po aktualizacji Zabbix, jeśli niektóre tabele zostały utworzone lub zmienione nazwy).