3 Обеспечение безопасности Oracle
Обзор
В этом разделе приведены рекомендации по обеспечению безопасности базы данных Oracle.
Для базовой настройки см. стандартные инструкции по созданию базы данных Oracle, которые включают создание пользователя 'zabbix' с полными привилегиями в базе данных Zabbix. Этот пользователь является владельцем базы данных и также имеет необходимые привилегии для изменения структуры базы данных при обновлении Zabbix.
Для повышения безопасности рекомендуется создавать дополнительных пользователей базы данных с минимальными привилегиями. Таких пользователей следует настраивать в соответствии с принципом наименьших привилегий, то есть они должны иметь только те привилегии, которые необходимы для выполнения предназначенных функций.
Поддержка Oracle DB устарела начиная с Zabbix 7.0.
Создание пользователей
Предполагается, что владельцем подключаемой базы данных (PDB) является usr_owner. Рекомендуется создать двух дополнительных пользователей с соответствующими привилегиями для повседневной работы:
- usr_srv - пользователь для запуска сервера Zabbix;
- usr_web - пользователь для запуска веб-интерфейса Zabbix и API.
Эти пользователи должны быть созданы владельцем PDB (usr_owner) с помощью следующих команд:
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;
Восстановление и обновление таблиц должны выполняться владельцем базы данных.
После создания пользователей перейдите к созданию синонимов.
Создание синонимов
Приведенный ниже скрипт создает синонимы, чтобы usr_srv и usr_web могли получать доступ к таблицам в схеме usr_owner без явного указания схемы.
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;
/
Этот скрипт следует запускать каждый раз после создания или изменения структуры базы данных Zabbix (например, после обновления Zabbix, если были созданы или переименованы какие-либо таблицы).