Quid du schéma public
?
ASGARD interdit le référencement[1] de certains schémas, les excluant de fait de ses mécanismes de gestion des droits :
les schémas système de PostgreSQL –
pg_catalog
et les schémaspg_toast[...]
,pg_temp[...]
;le schéma d'information
information_schema
;le schéma
topology
de l'extension PostGIS Topology ;le schéma
public
.
Les droits alloués sur les trois premiers n'ayant pas vocation à être modifiés sauf situation exceptionnelle, leur exclusion est transparente pour les administrateurs.
Il en va autrement du schéma public
, dans lequel certains utilisateurs ont l'habitude de travailler et pour lequel se posent donc des questions de droits sur les données. C'est par exemple dans le schéma public
que QGIS crée la table layer_styles
qui permet le stockage en base des paramètres de style des couches. Pour que les styles par défaut s'affichent à l'ouverture des couches, il est nécessaire que l'utilisateur dispose du privilège SELECT
sur ladite table layer_styles
.
Réglementaire : Principe⚓
Pour l'heure, ASGARD ne prend pas en charge la gestion des droits dans le schéma public, qui devra être réalisée manuellement avec les commandes ordinaires (GRANT
, REVOKE
, ALTER DEFAULT PRIVILEGES
...).
Pour le cas spécifique de layer_styles
, ASGARD met à disposition une fonction, asgard_layer_styles, qui facilite la définition de droits en lecture et en écriture adaptés à différentes organisations.
Remarque :
S'il n'est plus pris en compte par la suite, l'installation d'ASGARD a un effet direct sur le schéma public
: la suppression du privilège CREATE
alloué par défaut au pseudo-rôle public
pour ce schéma, qui autorisait tout utilisateur à y créer des objets. Un tel privilège représenterait en effet une faille de sécurité majeure dans un système qui prévoit l'existence d'un rôle de connexion anonyme ouvert à tous tel que consult.defaut
.
Complément : Pourquoi certains utilisateurs de QGIS 3.10 ne peuvent-ils pas enregistrer de styles ?⚓
Même si on leur a alloué tous les privilèges d'édition nécessaires sur la table layer_styles
, la plupart des utilisateurs des versions de QGIS antérieures à la 3.14 se verront retourner des messages d'erreur lorsqu'ils tenteront d'enregistrer un style dans la base de données.
La raison est que, dans ces versions, QGIS fait précéder toutes les commandes de modification de layer_styles
de l'instruction CREATE TABLE IF NOT EXISTS layer_style [...]. L'intention est bonne - il s'agit de créer la table si elle n'existe pas avant de tenter d'agir sur son contenu - mais cette instruction provoquera systématiquement une erreur si l'utilisateur n'est pas habilité à créer des objets dans le schéma public. L'erreur se produit même si layer_styles
existe déjà et que la modification demandée aurait donc bien pu être effectuée si elle n'avait pas été précédée de cette instruction inutile. Or, comme évoqué précédemment, ASGARD s'assure justement que tous les rôles n'aient pas nativement la possibilité de créer des objets dans public
...
Il n'y a pas de bonne solution à ce problème, heureusement corrigé à partir de la version 3.14 de QGIS. Donner le privilège CREATE sur public - GRANT CREATE ON SCHEMA public TO editeurs_layer_styles ; - aux rôles susceptibles d'éditer les styles est objectivement la seule option et elle n'est guère satisfaisante.