3 Sécurisation d'Oracle
Aperçu
Cette section contient les bonnes pratiques pour sécuriser une base de données Oracle.
Pour une configuration de base, consultez les instructions par défaut de création de base de données Oracle, qui incluent la création de l'utilisateur 'zabbix' avec tous les privilèges sur la base de données Zabbix. Cet utilisateur est le propriétaire de la base de données et dispose également des privilèges nécessaires pour modifier la structure de la base de données lors de la mise à niveau de Zabbix.
Pour améliorer la sécurité, il est recommandé de créer des utilisateurs de base de données supplémentaires avec des privilèges minimaux. Ces utilisateurs doivent être configurés selon le principe du moindre privilège, c'est-à-dire qu'ils ne doivent disposer que des privilèges essentiels à l'exécution des fonctions prévues.
La prise en charge de Oracle DB est obsolète depuis Zabbix 7.0.
Création des utilisateurs
En supposant que le propriétaire de la base de données pluggable (PDB) est usr_owner, il est recommandé de créer deux utilisateurs supplémentaires avec les privilèges correspondants (pour les opérations quotidiennes) :
- usr_srv - utilisateur pour l'exécution du serveur Zabbix ;
- usr_web - utilisateur pour l'exécution de l'interface Zabbix et de l'API.
Ces utilisateurs doivent être créés par le propriétaire de la PDB (usr_owner) à l'aide des commandes suivantes :
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 restauration et la mise à niveau des tables doivent être effectuées par le propriétaire de la base de données.
Après avoir créé les utilisateurs, passez à la création des synonymes.
Génération de synonymes
Le script ci-dessous crée des synonymes, afin que usr_srv et usr_web puissent accéder aux tables du schéma usr_owner sans spécifier explicitement le schéma.
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;
/
Ce script doit être exécuté à chaque fois après la création ou la modification de la structure de la base de données Zabbix (par exemple, après une mise à niveau de Zabbix, si certaines tables ont été créées ou renommées).