banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Mon 04 April 2022 10:11

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 249

PostgreSQL/Postgis : rendre visible les vues mais PAS les tables ?

Bonjour,

Je travaille avec Postgresql 13, Postgis et qgis.

J'importe des fichiers shapefile dans des tables au sein d'une  base de données unique, dans différents schemas. Lors de chaque import de shp, une nouvelle table est générée : chaque fichier shp importé génère une nouvelle création de table. On peut dire que c'est l'approche d'import la plus simple qu'on pourrait appeler, import "entrepot de données".

A partir de c'est tables, j'aimerais créer des vues afin de restructurer la donnée, filtrer les champs utiles. Dans un but de mettre à disposition ces vues aux utilisateurs via qgis.

Pour valider cette stratégie, il y a un point dur à résoudre. C'est que in fine je souhaite que les utilisateurs, sous qgis, voient uniquement les vues. Je ne souhaite PAS qu'ils voient les tables.

Sauriez vous si il est possible, au sein d'une même BDD, au sein de plusieurs schemas, de rendre par defaut visible les vues aux utilisateurs. Et de rendre les tables NON visibles ?

Un grand merci pour votre aide.

Hors ligne

 

#2 Mon 04 April 2022 10:30

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1542

Re: PostgreSQL/Postgis : rendre visible les vues mais PAS les tables ?

Bonjour,

Oui, c'est tout a fait possible, il faut créer un role ou un groupe ayant les droits sur la vue (droit usage sur le schéma aussi), mais pas sur la table:
https://www.postgresql.org/docs/14/sql-grant.html

Nicolas

Hors ligne

 

#3 Mon 04 April 2022 10:42

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 249

Re: PostgreSQL/Postgis : rendre visible les vues mais PAS les tables ?

Merci pour votre réponse. ;-)
Le petit souci c'est que je souhaite rendre par defaut toutes les tables de ma BDD non visibles. Et par defaut toutes mes vues de ma BDD visibles.

Et si je fais un :

Code:

GRANT USAGE ON SCHEMA "SCHEMA" TO "USER";

ALTER DEFAULT PRIVILEGES IN SCHEMA "SCHEMA" GRANT SELECT ON TABLES TO "USER";

le probleme c'est qu'il y a pas de différenciation entre les tables et les vues. Elles seront toutes visibles.

Si mon objectif est de tout centraliser au sein de la meme BDD, celà signie t il que je suis obligé de dédier des schemas pour les tables et des schemas dédiés aux vues? Par exemple :

Code:

GRANT USAGE ON SCHEMA "SCHEMA_FOR_VIEWS" TO "USER";

ALTER DEFAULT PRIVILEGES IN SCHEMA "SCHEMA_FOR_VIEWS" GRANT SELECT ON TABLES TO "USER";

Merci.

Dernière modification par image95 (Mon 04 April 2022 10:43)

Hors ligne

 

#4 Thu 03 August 2023 16:27

sandy
Juste Inscrit !
Lieu: NANTES
Date d'inscription: 26 Jul 2010
Messages: 6

Re: PostgreSQL/Postgis : rendre visible les vues mais PAS les tables ?

Bonjour,

Effectivement si un utilisateur n'a pas les droits sur  une table dans Postgres, elle n'apparait pas dans l'Explorateur de QGIS. Toutefois le modèle de données apparait quand même dans le "gestionnaire de base de données". 

En revanche, l'ensemble des schémas s'affichent (sans aucune table visible) dans QGIS, même si l'utilisateur n'a aucun droit dessus.
Y a t-il un moyen de les masquer ?

L'idée est de ne pas afficher une multitude de schémas à un utilisateur qui n'aurait accès qu'à quelques uns.

Dernière modification par sandy (Thu 03 August 2023 16:30)

Hors ligne

 

Pied de page des forums

Powered by FluxBB