# SSL Zertifikat für mysql datenbankzugriff



## Tallan (24. Aug 2009)

Hallo zusammen,

ich hoffe die Frage sprengt nicht den Rahmen,

gibt es eien möglichkeit in einem Javaprogramm ein Zertifikat zu hinterlegen um per ssl auf eine mysql Datenbank zuzugreifen?

Sinn des ganzen wäre das nur das Programm selbst mit der DB kommunizieren kann nicht aber der User selbst mit anderen Tools, sofern er die logindaten hat.


----------



## sparrow (24. Aug 2009)

Och, da gibbet sicher ein paar Möglichkeiten.
Löst aber das Problem mE nicht. Durch SSL wird ja die Verbindung verschlüsselt. Selbst wenn ausschließlich dein Programm einen Schlüssel hätte um mit der Datenbank zu kommunizieren gibt es noch immer die Möglichkeit diesesn zu extrahieren.
Mach sowas um die Verbindung zu verschlüsseln, aber um damit eine Zugangsberechtigung zu erlangen... halte ich für verfehlt.


----------



## Tallan (24. Aug 2009)

sparrow hat gesagt.:


> Och, da gibbet sicher ein paar Möglichkeiten.
> Löst aber das Problem mE nicht. Durch SSL wird ja die Verbindung verschlüsselt. Selbst wenn ausschließlich dein Programm einen Schlüssel hätte um mit der Datenbank zu kommunizieren gibt es noch immer die Möglichkeit diesesn zu extrahieren.
> Mach sowas um die Verbindung zu verschlüsseln, aber um damit eine Zugangsberechtigung zu erlangen... halte ich für verfehlt.



Die Zugangsberechtigung Plane ich bis jetzt wie folgt ( wobei ich da für verbesserungsvorschläge selbstverständlich offen bin ) :

An dem Programm müßen sich X personen mit jeweils anderen Zugriffsrechten anmelden können. 
Die Daten um die es geht liegen alle in einer Tabelle.
Nicht jeder User darf alle Daten der Tabelle abfragen können.

Im Programm würde ich einen Login mitgeben.
In einer extra Tabelle steht ein Berechtigungscode der vom Client gelesen und verarbeitet wird.
Je nach Berechtigungscode erhält der User optionen zum Bearbeiten der Daten, und erhält auch nur die entsprechenden Daten die für ihn bestimmt sind.

Um nun zu umgehen das der User mit einem anderen tool auf die Datenbank zugreift und somit (da ich die rechte für die tabelle nicht weiter spezifizieren kann) an daten rankommt die nicht für ihn bestimmt sind -> die idee mit dem ssl zertifikat, damit würden andere tools ausscheiden?!


Soviel zum jetzigen Plan,
alternativ habe ich mir überlegt :

- dem User nur einen Teil der Logindaten zu geben, also ein teil steht fest im programmcode der 2te teil wird von user eingetragen.

- ein programm auf der serverseite zu schreiben das die berechtigungen "umsetzt"

beide alternativen finde ich allerdings nicht besonders gut, wobei die zertifikatlösung sicherlich auch nicht das gelbe vom ei ist


----------



## sparrow (24. Aug 2009)

Wenn ich aber rauskriege wie ich an die Tabelle rankomme (denn die liest du ja mit einem SQL-Kommando aus), kann ich auch raus bekommen was ich dem Programm sagen muss damit ich die Rechte von jemand anderen bekomme.

Irgendwie ist das alles von hinten durchs Bein ins Auge geschossen.

Was spricht gegen eine Serverandwendung die die Zugriffsrechte für dich regelt und sich als Middleware zwischen die Applikation und die Datenbank setzt?
Wenn das nicht geht: Jede moderne Datenbank besitzt ein Benutzermanagment. Wenn der Benutzer sich eh am Client anmelden soll, warum dann nicht mit den Daten für die Datenbank?


----------



## Tallan (24. Aug 2009)

sparrow hat gesagt.:


> Jede moderne Datenbank besitzt ein Benutzermanagment. Wenn der Benutzer sich eh am Client anmelden soll, warum dann nicht mit den Daten für die Datenbank?



Weil alle nutze auf ein tabelle zugreifen müssen die u.a daten enthält die nicht für sie gedacht sind.

Als beispiel, jeder Datensatz hat ein Flag true oder false.
Benutzer x darf den Datensatz nur lesen wenn das/die? Flag auf true steht

Im Programm kann ich das leicht implementieren
Aber was wenn nun mit den selben Logindaten von einem anderen tool aus auf die DB zugegriffen wird? dann könnte der andere Anfragen formulieren und so an Daten rankommen die ihn nichts angehen... (ok in der realität wird das in dem fall nicht vorkommen... aber damit ist das problem ja nicht gelöst)

und von der db seite aus ist es wohl nicht möglich einem user nur teilweise rechte an datzensätzen die in einer tabelle stehen zu geben oder?
in der form das er z.b nur datensätze mit true abfragen darf


----------



## sparrow (24. Aug 2009)

Wie wärs dann mit verschiedenen Tabellen?

Das ist zwar auch Mist, aber wenn du schon keine Zwischenschicht einsetzen willst IMHO das einzige mögliche.


----------



## Tallan (24. Aug 2009)

sparrow hat gesagt.:


> Wie wärs dann mit verschiedenen Tabellen?
> 
> Das ist zwar auch Mist, aber wenn du schon keine Zwischenschicht einsetzen willst IMHO das einzige mögliche.



problem ist hierbei das sich die flags im lauf der zeit ändern, was heißen würde das die daten ständig von einer tabelle in die andere... 

daher wohl nicht das mittel der wahl...


----------

