Privilèges et cohabitation avec Asgard⚓
Privilèges⚓
Les données du schéma z_plume
alimentent le plugin QGIS Plume et doivent dès lors être accessibles à tous ses utilisateurs. Pour simplifier la gestion des droits, le pseudo rôle public
reçoit automatiquement les privilèges suivants lorsque PlumePg est installée sur une base :
USAGE
sur le schémaz_plume
;SELECT
sur toutes les tables et vues de ce schéma.
Des droits étendus sont par ailleurs conférés à public
sur la table z_plume.stamp_timestamp
(privilèges SELECT
, INSERT
, UPDATE
, DELETE
), combinés à un contrôle d'accès opéré par un déclencheur. L'ensemble permet au propriétaire d’une table et à lui seul de modifier manuellement les dates enregistrées pour cette table.
Complément : Note sur le contrôle d'accès sur stamp_timestamp
⚓
Le contrôle d’accès sur la table z_plume.stamp_timestamp
est réalisé par un déclencheur et non des politiques de sécurité niveau ligne, car l’usage de ces dernières par les extensions provoque actuellement des erreurs en cas de sauvegarde/restauration.
Hormis pour la table z_plume.stamp_timestamp
, les données de PlumePg ne peuvent donc nativement être éditées que par le rôle propriétaire des objets de l'extension. L'administrateur du serveur devra manuellement conférer des privilèges supplémentaires sur ces objets s'il estime que d'autres rôles doivent, par exemple, être habilités à définir des modèles personnalisés.
Cohabitation avec Asgard⚓
Il n’y a pas de lien fonctionnel direct entre PlumePg et l’extension Asgard, outil créé dans le cadre du GT PostGIS pour faciliter la gestion des droits.
Si l’extension PlumePg est installée sur une base disposant déjà d'Asgard dans une version supérieure ou égale à la 1.3.2, g_admin
sera automatiquement désigné comme producteur du schéma z_plume
et public
en sera fait lecteur. Il s’agit seulement de faciliter le travail de l’administrateur, cette opération ne crée aucune adhérence durable. Il est ensuite tout à fait possible, sans que cela ne pose de problème particulier, y compris lors des futures montées de version de PlumePg :
De choisir d’autres rôles comme producteur, éditeur et lecteur de
z_plume
, en veillant toutefois à ce que tous les rôles de connexion des utilisateurs de Plume soit membres directement ou par héritage de l'un au moins de ces rôles.De déréférencer le schéma
z_plume
pour gérer ses droits hors d”Asgard.De désinstaller Asgard.
Attention :
Avec les versions d'Asgard strictement antérieures à la 1.4.1, des précautions doivent être prises pour assurer la bonne restauration d'une base sur laquelle :
les extensions Asgard et PlumePg sont activées simultanément ;
le schéma
z_plume
de PlumePg est référencé dans la table de gestion d'Asgard.
À défaut, le contenu de la table de gestion d'Asgard est susceptible d'être perdu au cours de la restauration, ce qui équivaut au déréférencement brutal de tous les schémas de la base, qui ne seront dès lors plus considérés par les mécanismes automatisés d'Asgard. Il reste possible de les référencer de nouveau, mais certaines informations devront alors être ressaisies manuellement (éditeur, lecteur, etc.).
Il est possible d'éviter ce problème en appliquant l'une des trois méthodes suivantes :
(recommandé) Mettre à jour Asgard en version 1.4.1 ou supérieur.
Ne pas référencer le schéma
z_plume
dans la table de gestion d'Asgard.À noter que ce schéma est automatiquement référencé à l'installation de PlumePg si Asgard était déjà active sur la base. Il est également référencé à chaque restauration de la base, même s'il ne l'était pas initialement.
Il faudra donc le déréférencer avec la fonction d'Asgard prévue à cet effet,
z_asgard_admin.asgard_sortie_gestion_schema
:
12SELECT z_asgard_admin.asgard_sortie_gestion_schema('z_plume') ;
Procéder à une restauration par étape de la base :
Restaurer d'abord la structure seule avec l'option -s / --schema-only de
pg_restore
.Exécuter la commande ci-dessous sur la base en cours de restauration.
12SELECT z_asgard_admin.asgard_sortie_gestion_schema('z_plume') ;
Restaurer les données seules avec l'option -a / --data-only de
pg_restore
.
Plus de précisions dans l'issue #17 du GitHub d'Asgard.