Pages: 1
- Sujet précédent - PostgreSQL/Postgis : rendre visible les vues mais PAS les tables ? - Sujet suivant
#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
Pages: 1
- Sujet précédent - PostgreSQL/Postgis : rendre visible les vues mais PAS les tables ? - Sujet suivant