Closed alhyss closed 1 month ago
Pour mémoire, le problème a été identifié parce qu'un service utilisateur qui se trouvait avoir référencé le schéma public
de sa base dans la table de gestion d'Asgard a pour cette raison constaté des erreurs (heureusement bénignes) à la restauration de sa base, et AsgardManager ne fonctionnait plus non plus sur cette base.
La contrainte sur gestion_schema
et le contrôle dans z_asgard_admin.asgard_on_modify_gestion_schema_before()
ont tous deux été implémentés dans la v1.4.1.
La documentation indique que les "schémas système" - en pratique les schémas
pg_catalog
,pg_temp(...)
,pg_toast(...)
,public
,information_schema
ettopology
- ne peuvent pas être référencés par Asgard. C'est un principe important pour Asgard, car il assure que son système de gestion des droits n'interfèrera pas avec les mécanismes mis en place automatiquement par PostgreSQL et la plupart des extensions (sauf celles qui créent des schémas spécifiques non inclus dans la liste).En pratique, cela se manifeste par le fait que :
z_asgard_admin.asgard_initialisation_gestion_schema
ne considère pas ces schémas lorsqu'elle boucle sur tous les schémas de la base pour les référencer.z_asgard.asgard_initialise_schema
émet une erreur si l'utilisateur tente de l'appliquer sur un de ces schémas.z_asgard.asgard_initialise_obj
etz_asgard.asgard_deplace_obj
émettent une erreur lorsqu'on les applique à un objet appartenant à l'un de ces schémas.Autrement dit, toutes les fonctions utilitaires s'assurent de ne pas référencer ou interférer avec les schémas système.
Par contre, il reste aujourd'hui possible de forcer manuellement le référencement d'un de ces schémas :
Messages renvoyés :
Il serait souhaitable d'interdire strictement cette opération :
z_asgard_admin.gestion_schema
.z_asgard_admin.asgard_on_modify_gestion_schema_before()
émette une erreur lorsque cette contrainte n'est pas respectée, comme elle le fait déjà pour les autres contraintes.