![]() |
Datenbank: FIreBird • Version: 2.1 • Zugriff über: IBX
FIrebird Benutzerrechte Update
Einen wunderschönen guten Morgen :-)
Ich Arbeite gerade der Überarbeitung unserer Benutzerverwaltung. Ich habe folgenden Tabellen aufbau:
Delphi-Quellcode:
in der Tabelle „Filesystem“ kann es innerhalb einer DateiNr viele Revisionen geben.
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; 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
Delphi-Quellcode:
auf die Tabelle "Fileliste" mache bekomme ich die Fehlermeldung das ich keine Berechtigung zum Lesen habe.
Update Fileliste set Revision = :NeuRevision where Id = :ID;
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 |
AW: FIrebird Benutzerrechte Update
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).
|
AW: FIrebird Benutzerrechte Update
Hallo Jens,
alt aber gut: :-D ![]() 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. |
AW: FIrebird Benutzerrechte Update
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 |
AW: FIrebird Benutzerrechte Update
Ja, etwas in der Form
Code:
Vielleicht solltest dann gleich noch mitandenken die Rechtevergabe auf Rollenebene zu machen, weil dann ersparst dir jedem einzelnen Benutzer die entsprechenden Berechtigungen einzuräumen.
grant select, update on filelists to procedure xyz;
grant execute on xyz to myuser; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz