MTES-MCT / asgard-postgresql

ASGARD. Système de gestion des droits pour PostgreSQL.
https://snum.scenari-community.org/Asgard/Documentation/co/SiteReference.html
Other
2 stars 3 forks source link

Simplification de l'accès aux objets d'Asgard #5

Closed alhyss closed 2 years ago

alhyss commented 2 years ago

Pour une extension censée simplifier la gestion des droits, Asgard est paradoxalement assez contraignant quand il s'agit de ses propres objets. Il pose aujourd'hui les conditions suivantes :

Ces règles n'auraient plus lieu d'être si nous nous autorisions à donner au pseudo-rôle public un accès en lecture aux vues du schéma z_asgard et des privilèges d'édition sur les vues z_asgard.gestion_schema_usr et z_asgard.gestion_schema_etr.


GRANT USAGE ON SCHEMA z_asgard TO public ;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE z_asgard.gestion_schema_usr TO public ;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE z_asgard.gestion_schema_etr TO public ;
GRANT SELECT ON TABLE z_asgard.asgardmenu_metadata TO public ;
GRANT SELECT ON TABLE z_asgard.asgardmanager_metadata TO public ;
GRANT SELECT ON TABLE z_asgard.gestion_schema_read_only TO public ;

Ceci ne nécessite même pas d'ajouter des contrôles par ailleurs, car - le lecteur et l'éditeur de z_asgard n'étant pas connus a priori - tout est déjà en place. Les privilèges d'édition sur les vues z_asgard.gestion_schema_usr et z_asgard.gestion_schema_etr sont notamment contre-balancés par le fait que ces vues ne montrent à un rôle que les schémas sur lesquels il est habilité à agir^ref-1 (restriction pour UPDATE et DELETE) et par le déclencheur asgard_on_modify_gestion_schema_before sur la table z_asgard_admin.gestion_schema. Le tout premier test réalisé par la fonction z_asgard_admin.asgard_on_modify_gestion_schema_before() appelée par ce déclencheur consiste en effet à interdire l'ajout d'enregistrements par un rôle qui n'aurait pas le privilège CREATE sur la base (restriction sur INSERT, les modifications des vues z_asgard.gestion_schema_usr et z_asgard.gestion_schema_etr étant transférées sur z_asgard_admin.gestion_schema).

Outre l'ajout des permissions susmentionnées et beaucoup de simplifications dans la documentation, les seules modifications à faire dans l'extension PostgreSQL seraient :

Côté AsgardManager, la case à cocher Gestions des schémas ne servirait plus qu'à conférer CREATE sur la base.

Cette évolution permettrait aussi de recentrer g_consult sur sa fonction d'accès aux données, tandis que public sera plus pertinent pour conférer un accès universel aux objets techniques qui le justifient. Le cumul de ces deux fonctions par g_consult pouvait également poser problème dans quelques cas particuliers^ref-4.