3 Oracle absichern

Übersicht

Dieser Abschnitt enthält Best Practices zum Absichern einer Oracle-Datenbank.

Für eine grundlegende Einrichtung siehe die Standardanweisungen zur Erstellung der Oracle-Datenbank, die das Anlegen des Benutzers 'zabbix' mit vollständigen Berechtigungen für die Zabbix-Datenbank umfassen. Dieser Benutzer ist der Datenbankbesitzer und verfügt außerdem über die erforderlichen Berechtigungen zum Ändern der Datenbankstruktur beim Upgrade von Zabbix.

Um die Sicherheit zu verbessern, wird empfohlen, zusätzliche Datenbankbenutzer mit minimalen Berechtigungen anzulegen. Diese Benutzer sollten auf Grundlage des Prinzips der geringsten Privilegien konfiguriert werden, das heißt, sie sollten nur über Berechtigungen verfügen, die für die Ausführung der vorgesehenen Funktionen unbedingt erforderlich sind.

Die Unterstützung für Oracle DB ist seit Zabbix 7.0 veraltet.

Erstellen von Benutzern

Unter der Annahme, dass der Besitzer der pluggable database (PDB) usr_owner ist, wird empfohlen, zwei zusätzliche Benutzer mit den entsprechenden Berechtigungen für den täglichen Betrieb zu erstellen:

  • usr_srv - Benutzer zum Ausführen des Zabbix Server;
  • usr_web - Benutzer zum Ausführen des Zabbix Frontend und der API.

Diese Benutzer müssen vom PDB-Besitzer (usr_owner) mit den folgenden Befehlen erstellt werden:

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;

Die Wiederherstellung und das Upgrade der Tabellen sollten vom Datenbankbesitzer durchgeführt werden.

Nach dem Erstellen der Benutzer fahren Sie mit dem Erstellen von Synonymen fort.

Generieren von Synonymen

Das folgende Skript erstellt Synonyme, sodass usr_srv und usr_web auf Tabellen im Schema usr_owner zugreifen können, ohne das Schema explizit anzugeben.

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

Dieses Skript sollte jedes Mal ausgeführt werden, nachdem die Zabbix-Datenbankstruktur erstellt oder geändert wurde (zum Beispiel nach einem Upgrade von Zabbix, wenn einige Tabellen erstellt oder umbenannt wurden).