Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2010, 15h24   #1
Membre habitué
 
Inscription : mai 2007
Messages : 691
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : mai 2007
Messages : 691
Points : 146
Points : 146
Par défaut grant sur trigger

bonjour,

Lorsque l'on "grant" un trigger sur une table comme ceci:
Code :
1
2
 
GRANT INSERT ON IBE$LOG_FIELDS TO TRIGGER IBE$CMDCLI_AD;
Est ce que cela revient à dire implicitement qu'un utilisateur qui a les droits sur la table qui appelle le trigger (CMDCLI) a les droits sur la table IBE$LOG_FIELDS

pour info le trigger est:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
CREATE TRIGGER IBE$CMDCLI_AD FOR CMDCLI
ACTIVE AFTER DELETE POSITION 32767
AS
declare variable tid integer;
begin
  tid = gen_id(ibe$log_tables_gen,1);
 
  INSERT INTO ibe$log_tables (id, table_name, operation, date_time, user_name)
         VALUES (:tid, 'CMDCLI', 'D', 'NOW', user);
 
  INSERT INTO ibe$log_keys (log_tables_id, key_field, key_value)
         VALUES (:tid, 'CF', old.cf);
 
  INSERT INTO ibe$log_fields (log_tables_id, field_name, old_value, new_value)
         VALUES (:tid, 'CF', old.cf, NULL);
 
  INSERT INTO ibe$log_fields (log_tables_id, field_name, old_value, new_value)
         VALUES (:tid, 'LIB', old.lib, NULL);
 
 
end

cordialement
looping est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 21h20   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Non, cela ne donne pas plus de droit à l'utilisateur qu'il n'en avait avant le grant du trigger.

En d'autre terme si l'utilisateur a les droits de suppression sur CMDCLI mais n'a aucun droit sur la table IBE$LOG_FIELDS, celui ci ne pourra pas faire d'insert, update, delete ni même consulter la table IBE$LOG_FIELDS.

Sans grant explicite sur le trigger IBE$CMDCLI_AD, votre utilisateur ne pourra pas effacer des éléments de CMDCLI. En effet le trigger hérite des droits de l'utilisateur. Et donc l'insert dans la table IBE$LOG_FIELDS lancé dans le trigger lèvera une exception indiquant que l'utilisateur n'a pas le droit d'insérer dans la table IBE$LOG_FIELDS.

Par contre si vous donnez les droits d'insertion à votre trigger IBE$CMDCLI_AD. L'utilisateur pourra effacer des éléments de CMDCLI, le trigger IBE$CMDCLI_AD ayant les droits d'insertion, pourra ajouter les données dans la table IBE$LOG_FIELDS. Mais l'utilisateur ne pourra pas pour autant accéder ou insérer directement à la table IBE$LOG_FIELDS. Les droits de l'utilisateur n'ont pas changé.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h53.


 
 
 
 
Partenaires

Hébergement Web