AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FIrebird Benutzerrechte Update

FIrebird Benutzerrechte Update

Ein Thema von Pro_RJ · begonnen am 13. Okt 2011 · letzter Beitrag vom 13. Okt 2011
Antwort Antwort
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#1

FIrebird Benutzerrechte Update

  Alt 13. Okt 2011, 09:48
Datenbank: FIreBird • Version: 2.1 • Zugriff über: IBX
Einen wunderschönen guten Morgen

Ich Arbeite gerade der Überarbeitung unserer Benutzerverwaltung.
Ich habe folgenden Tabellen aufbau:

Delphi-Quellcode:
Tabelle Filesystem -->
ID,
DateiNr,
Revision,
Dateiname,
Benutzername.....


View VW_Filesystem
Select * from Filesystem where Benutzername = Current_User;



Tabelle FilesList -->
ID,
DateiNr,
Revision,
Dateiname,
Benutzername


View VW_FileList
Select * from FilesList where Benutzername = Current_User;
in der Tabelle „Filesystem“ kann es innerhalb einer DateiNr viele Revisionen geben.
DateiNr Revision
1 1
1 2
1 3
1 4
2 1
2 2
...
Die View „VW_Filesystem“ soll nur die Daten anzeigen, die der User sehen darf.

In der Tabelle „FileListe“ steht lediglich zu Einer DateiNr die Letzte Revision
DateiNr Revision
1 4
2 2
Die View „VW_FileList“ soll nur die Daten anzeigen, die der User sehen darf.

Der Benutzer soll nur diese Rechte haben:
Filesystem --> nur einfügen
Vw_Filesystem --> Nur Lesen

Filelist --> einfügen, Update
Vw_FileList --> Nur Lesen

Der Hintergrund ist, das der Benutzer ausschließliche seine Daten sehen soll. und garkeines falls die eines anderen Benutzers.
Das ist soweit auch alles kein Problem in funktioniert auch alles.

Jetzt tritt nur ein Problem auf.
Wenn ein Benutzer einen Datensatz in die Tabelle "Filesystem" einfügt soll automatisch
a) ein Datensatz in die Tabelle "FileListe" eingefügt werden wenn dieser noch nicht vorhanden ist
oder
b) die neue RevisionsNr in den vorhandenen Datensatz in der Tabelle "Fileliste" geändert werden.

Das einfügen in die Tabelle "Fileliste" klappt problemlos.
Wenn ich jetzt aber ein
Update Fileliste set Revision = :NeuRevision where Id = :ID; auf die Tabelle "Fileliste" mache bekomme ich die Fehlermeldung das ich keine Berechtigung zum Lesen habe.
Der Benutzer soll ja auch gar nicht in der Tabelle lesen er soll ja nur schreiben.
Ich habe es auch schon probiert ein Update auf die View zu machen aber hier wird ein Voll-Zugriff auf die Tabelle "Fileliste" benötigt

Gibt es eine Möglichkeit die Tabelle "FileListe" zu ändern OHNE das ich dem Benutzer leserechte geben muss?



mfg
Jens
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FIrebird Benutzerrechte Update

  Alt 13. Okt 2011, 10:03
Ohne jetzt lange nachgedacht zu haben: könnte man das Update/Insert nicht in eine SP verlagern? Der User bekommt dann Ausführungsrechte auf die SP und diese wiederum die benötigten Rechte auf die Tabelle(n). Das Ganze könnte man dann noch aus einem Einfüge-Trigger aufrufen (sofern das geht, weiß ich gerade nicht mit Sicherheit).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#3

AW: FIrebird Benutzerrechte Update

  Alt 13. Okt 2011, 10:21
Hallo Jens,

alt aber gut:
http://tracker.firebirdsql.org/browse/CORE-136

durch die WHERE Klausel im Update braucht er auch Rechte zum Lesen. Wie DeddyH beschrieben hat, kannst das in eine Stored Procedure auslagern. Der Stored Procedure gibst dann die benötigten Rechte auf die Tabelle und der Benutzer hat Ausführungsrechte für die Procedure.
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#4

AW: FIrebird Benutzerrechte Update

  Alt 13. Okt 2011, 10:40
Ahh ok,
das man einer Procedure/Trigger auch Rechte geben kann wusste Ich nicht.
Ok dann mache ich den gesamten Vorgang in einer SP und mein Problem ist gelöst.
Vielen vielen Dank
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#5

AW: FIrebird Benutzerrechte Update

  Alt 13. Okt 2011, 12:02
Ja, etwas in der Form

Code:
grant select, update on filelists to procedure xyz;
grant execute on xyz to myuser;
Vielleicht solltest dann gleich noch mitandenken die Rechtevergabe auf Rollenebene zu machen, weil dann ersparst dir jedem einzelnen Benutzer die entsprechenden Berechtigungen einzuräumen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz