PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 04/10/2022 09:26:31

Samsam4477
Membre

Procédures et délégation de droits sur les tables

Bonjour,

Il existe 2 schémas sur notre base, en plus du schéma PUBLIC :
SCH_TEST : qui ne contient que des tables temporaires
SCH_CENTRAL : qui contient les données du référentiel

Je crée une procédure p_load_data sur le schéma PUBLIC qui alimente les tables de SCH_TOTO à partir des tables du schéma SCH_CENTRAL.
Je crée un user usr_test :
- ayant tous les droits sur le schéma SCH_TEST
- n’ayant aucun droit sur le schéma SCH_CENTRAL
- ayant les droits d’exécution sur p_load_data()

L’objectif étant que usr_test puisse utiliser les données de SCH_CENTRAL sans avoir de droits sur ce schéma sensible SCH_CENTRAL.
Sauf que : à partir d’une session usr_test, lorsque p_load_data() est exécutée, on obtient un message d’erreur : «  droit refusé pour schéma CENTRAL »

Je ne comprends pas ce message d’erreur. En Oracle, quand on donne les droits d’exécution d’un procédure à un utilisateur, il n’a pas besoin des droits sur les tables utilisées par la procédure, tout est délégué.
Sauf qu’on a besoin d’un fonctionnement comme ça pour sécuriser les accès aux tables, il est hors de question de donner les droits à usr_test sur les tables du schéma SCH_CENTRAL.
Comment fait-on ? il faut absolument garder le principe de tables temporaires sur SCH_TEST, c’est donc la session courante usr_test qui doit les alimenter.

Merci pour votre expertise.

Hors ligne

#2 04/10/2022 09:29:51

rjuju
Administrateur

Re : Procédures et délégation de droits sur les tables

Bonjour,


À priori ce que vous voulez c'est une fonction définie comme "SECURITY DEFINER", c'est-à-dire s'exécutant avec les droits de l'utilisateur ayant créé la fonction plutôt que les droits de l'utilisateur utilisant la fonction.  Je ne sais pas comment cela marche sur oracle mais sur postgres les 2 fonctionnements sont possibles, et le fonctionnement par défaut est "SECURITY INVOKER", donc l'inverse de ce que vous voulez.

Hors ligne

#3 04/10/2022 10:43:06

Samsam4477
Membre

Re : Procédures et délégation de droits sur les tables

Bonjour,

Oui c'est exactement ça.
Merci beaucoup on va tester smile

Hors ligne

Pied de page des forums