本节包含以安全方式设置 Oracle 数据库的最佳实践。
对于典型设置,建议遵循默认的 Oracle 创建数据库说明, 其中包括创建对 Zabbix 数据库具有完全权限的“zabbix“用户。此用户是数据库所有者, 在升级Zabbix 时还具有修改数据库结构所需的权限。
为了提高安全性,建议创建具有最小权限的其他数据库用户。 这些用户应根据最小权限原则进行配置,即他们应仅具有执行预期功能所必需的权限。
自 Zabbix 7.0 起,对 Oracle DB 的支持已弃用。
假设数据库 (PDB) 所有者是usr_owner
,建议创建两个具有相应权限的额外用户(用于日常操作):
usr_owner
这些用户必须由 PDB 所有者 ( ) 使用以下命令创建:
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 升级后创建或重命名某些表)。