Datenbank vor einer Kopie schützen

Probleme und Fragen zum Thema Trigger und Funktionen.

Datenbank vor einer Kopie schützen

Beitragvon CenText » So 29. Jul 2007, 16:39

Hallo Leute,

und zwar beschäftigt mich das Thema, meine Datenbank vor einer Kopier zu schützen.

Es gibt bei einige User, die Lese zugriff auf meine Datenbank haben. Nur will ich nicht, dass sie diese kopieren können, sondern nur ein paar Datenauslesen können.

Ich hab mich gerade mal ein wenig mit Funktionen/Trigger beschäftigt, nur sehe ich dort keine Möglichkeit - evt. kann mich hier jemand korrigieren??

Eine Möglichkeit sehe ich darin, dass ich die Anfrage modifiziere, indem ich einem SELECT Anfrage ein Limit setze.

Aus .. wird
SELECT * FROM tb => SELECT * FROM tb LIMIT 0,100

NUr mit was kann ich das realisieren, bzw. ist das Möglich?

Für Ideen oder sonstiges wäre ich sehr dankbar :)
CenText
Erfahrener Benutzer
 
Beiträge: 222
Registriert: So 29. Jul 2007, 13:41

Beitragvon ads » So 29. Jul 2007, 16:43

Nicht möglich.

Wenn jemand lesenden Zugriff auf deine Daten hat, kann er über kurz oder lang alle Daten auslesen und bei sich ablegen.

Was ist so wichtig, das du es schützen möchtest, aber trotzdem lesenden Zugriff vergibst?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon akretschmer » So 29. Jul 2007, 16:56

CenText hat geschrieben:Hallo Leute,

und zwar beschäftigt mich das Thema, meine Datenbank vor einer Kopier zu schützen.

Es gibt bei einige User, die Lese zugriff auf meine Datenbank haben. Nur will ich nicht, dass sie diese kopieren können, sondern nur ein paar Datenauslesen können.


Vermutlich willst Du doch eher, daß die User nur die Daten zu sehen bekommen und auch verändern können, die ihnen gehören. Ob der User dann mit einem Schlag alle 100 Datensätze auslesen kann oder dazu 50 selects mit je 2 Sätzen macht ist doch in Zeiten, wo man sowas programmieren kann, völlig egal.

Die User haben eigene Logins? Du kannst mit den Usern und auch Gruppen hantieren. Z.B. pro Tablerecord ein extra Feld mit dem Usernamen. Dann den Zugriff auf die Tabelle selbst den Usern verbieten und statt dessen ein VIEW erzeugen, der nur das anzeigt, wo oben genannte Extra-Spalte gleich dem CURRENT_USER ist.

Ich hab mich gerade mal ein wenig mit Funktionen/Trigger beschäftigt, nur sehe ich dort keine Möglichkeit - evt. kann mich hier jemand korrigieren??


Nicht wirklich falsch die Idee. Mit den Trigger beim INSERT die extra Spalte mit dem Usernamen befüllen. Eine Funktion, security auf definer stellen, die Daten einfügen darf. Details dazu hier:
PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: CREATE FUNCTION

Eine Möglichkeit sehe ich darin, dass ich die Anfrage modifiziere, indem ich einem SELECT Anfrage ein Limit setze.

Aus .. wird
SELECT * FROM tb => SELECT * FROM tb LIMIT 0,100


Ich muß Dir jetzt nicht erklären, daß das Bullshit ist, oder?


Andreas
Welcome Tamara!
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon CenText » So 29. Jul 2007, 17:26

Ich habe Eine datenbank, die aus 1.000.0000 Daten von objekte bestehen. Ein Query sieht dann so aus:

SELECT * FROM table WHERE name="bla" or "blaa"

Ich will nur solche Anfragen zulassen, selects ohne where klausel sind zum kopiren sehr gut :)
und ich könnte so den kopiervorgang verkompliziertern.

akretschmer hat geschrieben:Nicht wirklich falsch die Idee. Mit den Trigger beim INSERT die extra Spalte mit dem Usernamen befüllen. Eine Funktion, security auf definer stellen, die Daten einfügen darf. Details dazu hier:
PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: CREATE FUNCTION



Ich muß Dir jetzt nicht erklären, daß das Bullshit ist, oder?


Andreas
Welcome Tamara!


Interessant :)
CenText
Erfahrener Benutzer
 
Beiträge: 222
Registriert: So 29. Jul 2007, 13:41

Beitragvon ads » So 29. Jul 2007, 17:30

CenText hat geschrieben:Ich will nur solche Anfragen zulassen, selects ohne where klausel sind zum kopiren sehr gut :)
und ich könnte so den kopiervorgang verkompliziertern.


Bullshit, sorry.

Das hält mich ungefähr eine foreach Schleife länger in meinem Programm auf.


Noch mal im Klartext: wenn jemand Zugriff auf alle Daten hat, kann er auch alle Daten kopieren.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon CenText » So 29. Jul 2007, 18:13

ads hat geschrieben:Bullshit, sorry.

Das hält mich ungefähr eine foreach Schleife länger in meinem Programm auf.


Noch mal im Klartext: wenn jemand Zugriff auf alle Daten hat, kann er auch alle Daten kopieren.



Also wenn ich nur where klauseln zulasse mit name="bla" und nur zugriff auf eine view (ohne id) habe, bin ich der Meinung, dass es fast nicht möglich ist diese zu kopieren.
Darüber hinaus ein Query limit ....
CenText
Erfahrener Benutzer
 
Beiträge: 222
Registriert: So 29. Jul 2007, 13:41

Beitragvon ads » So 29. Jul 2007, 18:19

Nur: wie möchtest du verhindern, das jemand andere Anfragen an deine Datenbank stellt?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon CenText » So 29. Jul 2007, 18:51

ads hat geschrieben:Nur: wie möchtest du verhindern, das jemand andere Anfragen an deine Datenbank stellt?


Das ist die Frage die sich stellt. Kann man nicht ein Funktion schreiben, die nur 5 Queries erlaubt, und dies dann in der Funktion abändern?
CenText
Erfahrener Benutzer
 
Beiträge: 222
Registriert: So 29. Jul 2007, 13:41

Beitragvon ads » So 29. Jul 2007, 19:08

*seufz* und wie rufst du diese Funktion auf, ohne die "ganzen anderen" normalen Möglichkeiten wie SELECT, INSERT, UPDATE?

Langsam habe ich genug von dieser Diskussion, dein Ansatz bringt imho nichts. Wenn du Daten sicher aufbewahren möchtest, darfst du keinen allgemeinen Zugriff darauf gewähren.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon CenText » So 29. Jul 2007, 20:22

ads hat geschrieben:*seufz* und wie rufst du diese Funktion auf, ohne die "ganzen anderen" normalen Möglichkeiten wie SELECT, INSERT, UPDATE?

Langsam habe ich genug von dieser Diskussion, dein Ansatz bringt imho nichts. Wenn du Daten sicher aufbewahren möchtest, darfst du keinen allgemeinen Zugriff darauf gewähren.


Ok evt. hab ich mich nicht richtig ausgedrückt. Ich will im Prinzip nur eine Select Anfrage erlauben.

Darüber hinaus, sind mir alle Querys bekannt, die angefragt werden (sind ca. 5-7 verschiedene).
Kann ich diese Querys, dessen definition ich genau kenne nicht abfangen?
CenText
Erfahrener Benutzer
 
Beiträge: 222
Registriert: So 29. Jul 2007, 13:41

Nächste

Zurück zu Trigger und Funktionen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste