Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   In Verzeichnis schreiben mit anderen Benutzerrechten (https://www.delphipraxis.net/199326-verzeichnis-schreiben-mit-anderen-benutzerrechten.html)

jobo 16. Jan 2019 10:28

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Statt mit lokalen oder Domainen Userrechten rumzufrickeln hätte ich auch sowas wie DB server vorgeschlagen. Hier hat man tatsächlich dann viel Overhead.
Aber es gibt ja auch andere Server mit separater Authentifizierung und Autorisierung:
Webserver (die sehr gut Bilder hosten können).

Ggf kann sowas auch gleich mit "fertigen" Komponenten wie nextcloud o.ä. gelöst werden.

Die (versteckten) Windows Freigaben setzen wohl einen separaten Server voraus, da Mehrfachanmeldung (2. User mit anderen Rechten) am gleichen nicht geht.
Die "Unsichtbarkeit" einer Freigabe finde ich jetzt nicht so sicher.

Delphi.Narium 16. Jan 2019 10:51

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Wenn man die Daten per Webserver anzeigen lässt, kann man sie auch per Webserver schreiben lassen, das ist jetzt auch nicht soviel Unterschied (Download und Upload sind ja jetzt auch nicht so überaus exotische Vorgänge ;-))

Versteckte Freigaben sind nicht wirklich die sicherste Alternative, unbestritten. Aber dass unterschiedliche Nutzer mit unterschiedlichen Rechten benötigt werden, ist hier ja nicht gegeben. Es gibt wohl eine Anwendung, die zwar von n Leuten genutzt wird, aber nur die Anwendung muss mit einem einzigen Benutzer (ggfls. von n Arbeitsplätzen) auf die Freigabe zugreifen können.

Und der Rechtekonflikt zwischen mehreren Nutzen mit unterschiedlichen Rechten auf eine Freigabe besteht nur dann, wenn man diese von "einem" Windowsrechner aus einrichten will, dann gibts Probleme. Aber eine Freigabe kann durchaus von unterschiedliche Nutzer mit unterschiedlichen Rechten genutzt werden. Nur eben nicht zeitgleich von "einem" Rechner aus.

Prinipiell kann man aber eine Freigabe einrichten und allen Nutzern, die diese benötigen, eigene Rechte geben, also denen die nur schreiben dürfen ausschließlich Schreibrechte und denen, die auch Bilder anzeigen lassen dürfen, Lese- und Schreibrechte. Und diese Rechte kann mann ggfls. auch auf Dateiebene vergeben.

Man könnte also durchaus durch das Programm selbst den Nutzern, die Bilder speichern dürfen, ausschließlich für diese Bilder das Leserecht einräumen. Sie müssen nicht zwangsläufig dann auch ein Leserecht auf alle Dateien erhalten.

Die Frage die sich stellt: Wieviel Aufwand ist man bereit zu treiben, um eine anforderungskonforme Rechteverwaltung aufzusetzen.

Das wesentliche Problem ist hier erstmal: Was will man genau?
Wenn das klar ist, kann man das mit Sicherheit umsetzen. Fraglich ist halt nur, mit welchem Aufwand und ist man bereit den zu betreiben.

jobo 16. Jan 2019 11:28

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1423389)
Wenn man die Daten per Webserver anzeigen lässt, kann man sie auch per Webserver schreiben lassen,

Natürlich, ich hoffe ich habe nichts anderes gesagt.

Zitat:

Zitat von Delphi.Narium (Beitrag 1423389)
Aber dass unterschiedliche Nutzer mit unterschiedlichen Rechten benötigt werden, ist hier ja nicht gegeben.

Also ich bin einfach davon ausgegangen, dass es eine bestehende Domäne mit einem Fileserver gibt, auf den die User bereits zugreifen. Das dürfte relativ klassisch sein, wenn man eine Windows Domäne betreibt.
In diesem Szenario ist es dann m.E. nicht möglich.

Zitat:

Zitat von Delphi.Narium (Beitrag 1423389)
Man könnte also durchaus durch das Programm selbst den Nutzern, die Bilder speichern dürfen, ausschließlich für diese Bilder das Leserecht einräumen. Sie müssen nicht zwangsläufig dann auch ein Leserecht auf alle Dateien erhalten.

Die Frage die sich stellt: Wieviel Aufwand ist man bereit zu treiben, um eine anforderungskonforme Rechteverwaltung aufzusetzen.

Das wesentliche Problem ist hier erstmal: Was will man genau?

Rechteverwaltung über ein Programm stinkt doch etwas finde ich.
Der Aufwand den man treiben will, dürfte sich mit dem Einsatz bestehender Technologien (http(s) Fileserver, samba, ..) in Grenzen halten, man muss nur die Anbindung machen.

Wenn man natürlich möglichst viel proprietär aus der eigenen Anwendung heraus machen will/muss, ist es etwas anderes.

p80286 16. Jan 2019 11:28

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Zitat:

Zitat von Kostas (Beitrag 1423383)
Diese Bilder dürfen Sie von der Anwendung aus anschauen und ausdrucken aber nicht löschen oder verändern. Die Anwendung muss also die Bilder zu einem Vorgang anzeigen können. Über den Explorer darf jedoch der Anwender nicht in diesen Ordner eingreifen können auch nicht lesend. Über die Anwendung wird nämlich protokolliert wann ein Bild eingestellt wurde, wann es von welchem User angesehen, gedruckt, exportiert u.s.w wurde.

Bei solchen Anforderungen bietet sich eine DB an, weil dort auch die Zugriffsrechte dementsprechend gestaltet werden können. Sollte die Datenmenge zu groß sein, wofür eigentlich zu groß, klingt das für mich sehr nach "wasch mich aber mach mich nicht naß".

Gruß
K-H

P.S.
Zitat:

Zitat von Delphi.Narium (Beitrag 1423389)
Das wesentliche Problem ist hier erstmal: Was will man genau?
Wenn das klar ist, kann man das mit Sicherheit umsetzen. Fraglich ist halt nur, mit welchem Aufwand und ist man bereit den zu betreiben.

Schade daß solche Selbstverständlichkeiten immer wieder erwähnt werden müssen

Delphi.Narium 16. Jan 2019 12:03

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Zitat:

Zitat von jobo (Beitrag 1423393)
Zitat:

Zitat von Delphi.Narium (Beitrag 1423389)
Wenn man die Daten per Webserver anzeigen lässt, kann man sie auch per Webserver schreiben lassen,

Natürlich, ich hoffe ich habe nichts anderes gesagt.

Zitat:

Zitat von Delphi.Narium (Beitrag 1423389)
Aber dass unterschiedliche Nutzer mit unterschiedlichen Rechten benötigt werden, ist hier ja nicht gegeben.

Also ich bin einfach davon ausgegangen, dass es eine bestehende Domäne mit einem Fileserver gibt, auf den die User bereits zugreifen. Das dürfte relativ klassisch sein, wenn man eine Windows Domäne betreibt.
In diesem Szenario ist es dann m.E. nicht möglich.

Zitat:

Zitat von Delphi.Narium (Beitrag 1423389)
Man könnte also durchaus durch das Programm selbst den Nutzern, die Bilder speichern dürfen, ausschließlich für diese Bilder das Leserecht einräumen. Sie müssen nicht zwangsläufig dann auch ein Leserecht auf alle Dateien erhalten.

Die Frage die sich stellt: Wieviel Aufwand ist man bereit zu treiben, um eine anforderungskonforme Rechteverwaltung aufzusetzen.

Das wesentliche Problem ist hier erstmal: Was will man genau?

Rechteverwaltung über ein Programm stinkt doch etwas finde ich.
Der Aufwand den man treiben will, dürfte sich mit dem Einsatz bestehender Technologien (http(s) Fileserver, samba, ..) in Grenzen halten, man muss nur die Anbindung machen.

Wenn man natürlich möglichst viel proprietär aus der eigenen Anwendung heraus machen will/muss, ist es etwas anderes.

Prinzipiell hast Du mit allem Recht, es wird hier nach einer Lösung gesucht, deren Problem (für meine Begriffe) noch nicht ausreichend spezifiziert ist, um es sinnvoll und kontextgerecht lösen zu können.

Server X und Freigabe Mitarbeiterverzeichnis_B für Nutzer B
Server X und Freigabe Programmdateiablage für Nutzer B
Server X und Freigabe Programme für alle Nutzer

mit jeweils unterschiedlichen Rechten sollte gehen.

Server X und Freigabe Mitarbeiterverzeichnis_B für Nutzer B
Server X und Freigabe Programmdateiablage für Programm
Server X und Freigabe Programme für alle Nutzer

mit jeweils unterschiedlichen Rechten sollte gehen.

Server X und Freigabe Mitarbeiterverzeichnis_B für Nutzer B
Server X und Freigabe Programmdateiablage für Nutzer B
Server X und Freigabe Programmdateiablage für Programm
Server X und Freigabe Programme für alle Nutzer

wird scheitern.

Server X und Freigabe Rootverzeichnis für Alle
Server X und Freigabe Rootverzeichnis\Programmdateiablage für Programm mit anderen Rechten

wird scheitern.

Eine allgemeine Freigabe auf "alles auf dem Server" und eine spezielle Freigabe mit anderen Rechten auf ein Verzeichnis unterhalb von "alles auf dem Server" wird eher nicht funktionieren.

Eine allgemeine Freigabe eines Verzeichnisses auf einem Server schließt eine eingeschränkte Freigabe eines anderen Verzeichnisses auf dem gleichen Server nicht aus.

Was nicht geht ist: Einen Server allgemein freigeben und dann unterhalb dieser allgemeinen Freigabe eine programmspezifische, eingeschränkte Freigabe einrichten.

Ausgehend vom Eingangspost gibt es aber wohl Verzeichnisse, auf die Nutzer zugreifen können und Verzeichnisse, auf die sie nicht zugreifen können. Es gibt also keine allgemeine Freigabe auf den gesamten Server.
Hiermit sollte es möglich sein, dass das Programm sich mit einem nur ihm bekannten Nutzer einen Zugang zu diesem explizit angegebene Verzeichnis verschafft.

Und auch bei 'ner Datenbank muss man sich um die Rechte kümmern. Darf ein Nutzer nur Inserts machen oder darf er auch per select Daten lesen und wenn ja welche.

Desgleichen gilt auch für 'nen Webserver: Wer darf Daten per Upload "hinschicken" und wer darf (egal ob per Webinterface oder Download) Daten einsehen.

Man muss sich in allen Fällen 'nen Kopp darüber machen, was man will und dafür sorgen, dass dann nur die, die was dürfen, das dürfen, was sie dürfen sollen ;-)

Das grundlegende Rechteproblem bleibt also bei allen Lösungsvorschlägen erhalten, nur die Art, wie es gelöst werden kann, wird sich unterscheiden.

Schokohase 16. Jan 2019 12:27

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Die einfachste Rechteverwaltung gelingt per Webserver.

Hier kann man jedem Anwender die Möglichkeit geben beliebige Dateien abzulegen und die eigenen auch anzusehen.
Bestimmte Anwender (mit der Rolle Geschäftsleitung) dürfen die Dateien von allen ansehen.

Löschen darf keiner.

Das wäre ein Mini-Webserver mit drei Methoden
Code:
GET documents      : Alle Dokumente (eigene oder alle nach Rolle)
GET documents/{id} : Ein Dokument
POST documents     : Dokument erzeugen

Kostas 16. Jan 2019 12:53

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Hallo Zusammen,

die beste Variante wäre wie schon erwähnt allen in einer DB zu schreiben. Damit hätte ich die volle Kontrolle über die Anwendung und fertig. Es sind mehrere tausend Dateien insgesamt derzeit 12 TB und steigt im Jahr ca. 750 GB. Die Bilder sind in unterschiedlichen Größen, Es sind CAD Zeichnungen, Es sind voll fette Ausschreibungen 500 Seiten gescannt und als PDF abgelegt u.s.w. Das alles in einer DB zu schreiben wollte ich einfach nicht. Zum nächsten, kommt es drei bis vier mal im Jahr indem die Archive von der Geschäftsleitung über den Explorer durchsucht werden. Alle Anwender dürfen über den Explorer nicht in das Archiv sondern immer nur über die Anwendung damit der Vorgang protokolliert wird! Nur die Geschäftsleitung, Systemkonto und BackupKonto darf auf das Archiv zugreifen. Auch dem Admin ist es nicht gestattet. Er hat zwar ein Hintertürchen aber das muss die GL nicht wissen. :-) Könnte sogar ein Kündigungsgrund sein.

Über die Rechtevergabe im ADDS kann ich das Problem nicht lösen. Alle User können zwar ein NUR Schreibrecht bekommen. Damit habe ich 80% der Anforderung erledigt- das anlegen. Die Anwendung braucht jedoch volle Rechte um die Bilder anzeigen zu können, Dokumente verändern und löschen zu können. Wie gesagt, deshalb aus der Anwendung heraus damit der Vorgang protokolliert wird. Jede der ein Bild anschauen, wird in der Datenbank dokumentiert.


Im laufe diesen Thread wurde mir bereits ein Vorschlag gemacht wie aus der Anwendung heraus in ein Ordnen zugegriffen wird mir anderen Rechten. Ich hatte noch keine Zeit das zu testen und vor allem welche Seiteneffekte dabei auftreten. Ich würde mit weniger Seiteneffekte rechnen wenn die Anwendung selbst mit mehr Rechte ausgeführt wird. Ich müsste auch nicht in mehreren Stellen im Programm den Speicherort mit andere Rechte öffnen und wieder schliessen. Deshalb die Idee die komplette Anwendung mit mehr Rechte ausführen zu können.

Gruß Kostas

jobo 16. Jan 2019 13:18

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
DB Variante
Wenn die DB etwas programmiert werden kann und es "zuviel" für die DB selbst ist:
Wir machen das u.U. so, dass zwar eine Datei mit einer DB Funktion hochgeladen wird, aber wenn es in der DB ankommt, wird die Datei ins Filesystem geschrieben und in der DB nur der Pfad gespeichert, ziemlich simpel.

Wie bereits nun mehrfach vorgeschlagen:
über Webserver

Wenn das beides nicht in Frage kommt:
könnte man es über einen EXE machen, die als Dienst mit einem anderen Account läuft und damit andere Rechte hat.
Dann muss das Programm die Dateien immer über diesen Dienst lesen/schreiben.

Delphi.Narium 16. Jan 2019 13:27

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Also mal so hingedaddelt:

Die Verwaltung, was wo liegt und wer womit was machen darf kann soll muss, legst Du in die Datenbank. Da sagst Du ja, dass Du das hinbekommst.

Die Dateien kommen nicht in ein Blob in der DB, sondern in die DB wird nur geschrieben, wo die zugehörige Datei abgelegt wurde.

Damit benötigst Du keine Rechte mehr für "irgendwelche Normalbenutzer".

Und die Geschäftsleitung durchsucht die Dateien gefälligst nicht mehr mit dem Explorer, sondern eben auf mit dem Programm oder bekommt notfalls ein eigenes Programm, dass die Datenbankinhalte explorerähnlich darstellt und bekommt dann von dem Programm ggfls. die Dateien zur Ansicht geliefert. (Und die Suche nach Inhalten in diesen Größenordnungen könnte durch gezielte Auswahl per Select * from wasauchimmer where wiebitte = suchmirdas dürfte da eventuell deutlich effektiver werden.) Die Geschäftsleitung könnte dadurch also durchaus auch profitieren. (Und keiner von denen kann mehr irgendwas versehentlich per Explorer verschieben, löschen ...) Eine ggfls. erforderliche Revisionssichertheit könnte dadurch steigen.

Pflapsig formuliert: Die umständliche Rechtevergabe auf Dateiebene lagerst Du aus in eine Rechtevergabe auf Datenbankebene.

Damit benötigst Du (vermutlich) nur noch einen Datenbankbenutzer. Wer wann was zu sehen bekommt oder schreiben darf, ergibt sich aus der im Programm implementierten Geschäftslogik.

Wenn das Programm schon über ein sinnvolles Berechtigungssystem verfügt (muss man sich beim Programmstart dort irgendwie Anmelden oder eher Doppelklick zum Programmstart und man darf loslegen?), so dürfte der Aufwand vertretbar und überschaubar sein.

Möglichkeiten, wie das Programm die Daten an die in der Datenbank vermerkten Stelle bekommt, wurde schon beschrieben. Das Programm macht das eben nicht selbst, sondern bittet eine andere Software, dies zu übernehmen. Nur diese Software (Webserver, Dienst ...) benötigt dann Rechte im Filesystem.

Kostas 16. Jan 2019 14:57

AW: In Verzeichnis schreiben mit anderen Benutzerrechten
 
Aktuell habe ich den Zustand dass die Anwendung die Berechtigung der User wehr was darf verwaltet. Auch in der DB steht der relative Link zu den Dateien und das protokollieren ist umgesetzt. Das alles funktioniert schon seit vielen Jahren. Das Projekt ist noch ein Delphi 5 Projekt und kann nicht einmal hochgezogen werden wegen Fremdkomponenten. :-( Ich verwende auch die versteckteFreigabe$. Der normale sterbliche Anwender kommt sicherlich nicht drauf. Ein etwas erfahrener, sagen wir mal Poweruser würde irgendwann mal schon drauf kommen. Aktuell läuft es schon seit mehreren Jahren so. Es gab in derzeit zwei Anwender die aufgeflogen sind weil Sie solche geheime Informationen an Mitbewerber weitergegeben haben. Durch die Logs hat man den Zeitraum eingegrenzt und die Dokumenten gefunden die das Haus verlassen haben.
Die Sache mit dem Netzlaufwerk verbinden funktioniert schon. Ist auf jeden Fall besser als die $-Freigabe. Ich werde das jetzt mal einbauen und schauen was passiert und wie zuverlässig es funktioniert. Ob es vorkommt dass ich mitten drin doch keine Schreibrecht habe u.s.w.

Herzlichen Dank und eine schöne Zeit an alle.
Gruß Kostas


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.
Seite 2 von 3     12 3      

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