3 Oracle

Descripción general

Esta sección contiene las mejores prácticas para configurar una base de datos Oracle de forma segura.

Para una configuración típica, se recomienda seguir las instrucciones predeterminadas de creación de base de datos Oracle, que incluyen la creación del usuario 'zabbix' con privilegios completos en la base de datos Zabbix. Este usuario es el propietario de la base de datos y también tiene los privilegios necesarios para modificar la estructura de la base de datos al actualizar Zabbix.

Para mejorar la seguridad, se recomienda crear usuarios de bases de datos adicionales con privilegios mínimos. Estos usuarios deben configurarse según el principio de privilegio mínimo, es decir, sólo deben tener privilegios que sean esenciales para realizar las funciones previstas.

El soporte para Oracle DB está obsoleto desde Zabbix 7.0.

Crear usuarios

Suponiendo que el propietario de la base de datos conectable (PDB) es usr_owner, se recomienda crear dos usuarios adicionales con los privilegios correspondientes (para operaciones diarias):

  • usr_srv - usuario para ejecutar el servidor Zabbix;
  • usr_web: usuario para ejecutar la interfaz y la API de Zabbix.

Estos usuarios deben ser creados por el propietario de PDB (usr_owner) usando los siguientes comandos:

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ón y actualización de tablas debe ser realizada por el propietario de la base de datos.

Después de crear los usuarios, proceda a crear los sinónimos.

Generar sinónimos

El siguiente script crea sinónimos , de modo que usr_srv y usr_web puedan acceder a las tablas en el esquema usr_owner sin especificar el esquema explícitamente.

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

Este script debe ejecutarse cada vez que se crea o cambia la estructura de la base de datos de Zabbix (por ejemplo, después de actualizar Zabbix, si se crearon o cambiaron de nombre algunas tablas).