Frage zu Sicherheit und MySQL

Frage zu Sicherheit und MySQL

am 25.06.2006 20:45:58 von Stefan Weber

Hallo,

heute nachmittag habe ich mich erfolglos damit herumgequält, einen
Datenbankuser einzurichten, um diesen mit limitierten Rechten zu versehen.
Muß vielleicht noch vervollständigen, auf dem Server meines Providers.

Hintergrund ist, dass ich mit php Daten aus der WebSite in die Datenbank
aufnehme und dies nicht unbedingt gerne mit den originären Datenbankuser
machen will, das alles darf. Außer einem Insert braucht der Dankenbankuser
nix zu können.

Auf Anfrage bei meinem Provider teilt mir dieser mit, dass ein Datembankuser
vom Confixx angelegt wird, basta! (will sagen, mehr gibts nicht).

Ich stelle mir vor, dass nicht nur ich dieses Problem habe. MySQL stellt
explizit sicherheitsrelevante Funktionen zum beschränkten Zugriff zur
Verfügung, die nicht genutzt werden können. Hab nur ich bei meinem Provider
das Problem oder übertreibe ich, wenn ich den Zugriff für die Datenbank
beschränken will? Wie macht Ihr das?

Re: Frage zu Sicherheit und MySQL

am 25.06.2006 23:01:42 von Dominik Echterbruch

Stefan Weber wrote:
>
> Hintergrund ist, dass ich mit php Daten aus der WebSite in die Datenbank
> aufnehme und dies nicht unbedingt gerne mit den originären Datenbankuser
> machen will, das alles darf. Außer einem Insert braucht der Dankenbankuser
> nix zu können.
> Auf Anfrage bei meinem Provider teilt mir dieser mit, dass ein Datembankuser
> vom Confixx angelegt wird, basta! (will sagen, mehr gibts nicht).

Zwei Gründe, den Provider (oder wenigstens das Produkt) zu wechseln in
nur einem Satz: "Confixx" und "basta!"

> Ich stelle mir vor, dass nicht nur ich dieses Problem habe. MySQL stellt
> explizit sicherheitsrelevante Funktionen zum beschränkten Zugriff zur
> Verfügung, die nicht genutzt werden können.

Sie werden doch genutzt: Jedem Kunden ein User, damit er nicht an den
Datenbanken der anderen Kunden rumbastelt.

> Hab nur ich bei meinem Provider
> das Problem oder übertreibe ich, wenn ich den Zugriff für die Datenbank
> beschränken will?

Grundsätzlich gibt es eigentlich keinen besonderen Grund, einen so stark
eingeschränkten User anzulegen, wenn man saubere Skripte schreibt (will
heißen: alles prüfen, prüfen, prüfen bevor es auf die DB losgelassen
wird). Andererseits kann ich dein Anliegen verstehen, weil auch der
beste Programmierer mal Fehler macht oder etwas vergisst.

> Wie macht Ihr das?

Unsereins hat dieses Problem nicht, weil er ein eigenes MySQL auf dem
Server laufen hat und keine Multiuserumgebung nutzt. Und genau das würde
ich dir auch empfehlen. Miete dir einen Root-Server oder ein paar
Höheneinheiten und betreibe deinen eigenen Server. Dann bist du
unabhängig von den Vorgaben des Providers und vor allem von den
Problemen, die die anderen Kunden verursachen.


Grüße,
Dominik
--
Norbert Melzer in d.c.d.mysql:
F: Wie verstehe ich diese FAQ am besten?
A: Studieren Sie Datanbank-Design und lesen Sie anschliessend alles nochmal

Re: Frage zu Sicherheit und MySQL

am 25.06.2006 23:19:10 von Matthias Esken

On Sun, 25 Jun 2006 20:45:58 +0200, Stefan Weber wrote:

> Ich stelle mir vor, dass nicht nur ich dieses Problem habe. MySQL stellt
> explizit sicherheitsrelevante Funktionen zum beschränkten Zugriff zur
> Verfügung, die nicht genutzt werden können. Hab nur ich bei meinem Provider
> das Problem oder übertreibe ich, wenn ich den Zugriff für die Datenbank
> beschränken will? Wie macht Ihr das?

Mit einem eigenen Rechner.

Bei deinem Problem lässt sich aber doch sicher locker durch die
Anwendungslogik feststellen, welcher Benutzer was darf. Schreibe deine
Webseiten so, dass die erlaubten Funktionen durch das Skript gesteuert
werden, acte darauf dass keine SQL-Injection möglich ist und du solltest
keine Probleme haben.

Gruß,
Matthias

Re: Frage zu Sicherheit und MySQL

am 26.06.2006 00:37:59 von Axel Schwenke

"Stefan Weber" wrote:
>
> heute nachmittag habe ich mich erfolglos damit herumgequält, einen
> Datenbankuser einzurichten, um diesen mit limitierten Rechten zu versehen.

Vernünftige Idee.

> Muß vielleicht noch vervollständigen, auf dem Server meines Providers.

*Was* für ein "Server"? Rootserver? Virtuell? Managed? Hast du Shell-
Zugriff?

> Hintergrund ist, dass ich mit php Daten aus der WebSite in die Datenbank
> aufnehme und dies nicht unbedingt gerne mit den originären Datenbankuser
> machen will, das alles darf.

Stellt sich die Frage, was du "originärer Datenbankuser" nennst. Aber
wenn der wirklich alles darf, bist du nur ein GRANT ... vom gewünschten
Ergebnis entfernt. Wahrscheinlich möchtest du hier weiterlesen:

http://dev.mysql.com/doc/refman/5.0/en/adding-users.html
http://dev.mysql.com/doc/refman/5.0/en/grant.html

> Auf Anfrage bei meinem Provider teilt mir dieser mit, dass ein Datembankuser
> vom Confixx angelegt wird, basta! (will sagen, mehr gibts nicht).

Scheint so als wäre es kein Rootserver. Dann wars das wohl. Das nächste
Mal nicht nur auf den Preis, sondern auf das Preis-Leistungs-Verhältnis
schauen.


XL

Re: Frage zu Sicherheit und MySQL

am 26.06.2006 11:27:48 von dev-null-use-reply-adress

Stefan Weber schrieb:
>
> heute nachmittag habe ich mich erfolglos damit herumgequält, einen
> Datenbankuser einzurichten, um diesen mit limitierten Rechten zu versehen.
> Muß vielleicht noch vervollständigen, auf dem Server meines Providers.
>
> Hintergrund ist, dass ich mit php Daten aus der WebSite in die Datenbank
> aufnehme und dies nicht unbedingt gerne mit den originären Datenbankuser
> machen will, das alles darf. Außer einem Insert braucht der Dankenbankuser
> nix zu können.
>
> Auf Anfrage bei meinem Provider teilt mir dieser mit, dass ein Datembankuser
> vom Confixx angelegt wird, basta! (will sagen, mehr gibts nicht).

Die User, die Confixx anlegt, haben standardmäßig GRANT-Rechte auf
ihrer Datenbank. Vielleicht reicht das ja?


Gruß
JPM

Re: Frage zu Sicherheit und MySQL

am 26.06.2006 11:41:20 von Frank Schenk

Hallo Stefan,

Stefan Weber wrote:
>
> heute nachmittag habe ich mich erfolglos damit herumgequält, einen
> Datenbankuser einzurichten, um diesen mit limitierten Rechten zu versehen.
> Muß vielleicht noch vervollständigen, auf dem Server meines Providers.

definiere rumgequält. Wie hast du versucht, die Userrechte zu setzen?

> Hintergrund ist, dass ich mit php Daten aus der WebSite in die Datenbank
> aufnehme und dies nicht unbedingt gerne mit den originären Datenbankuser
> machen will, das alles darf. Außer einem Insert braucht der Dankenbankuser
> nix zu können.

Standardmässig (bei Webhostern) darf der DB User nur von localhost auf
die Datenbank zugreifen, wenn deine Applikation entsprechend sicher sind
(SQL Injection, Administration geschützt) gibt es eigentlich keine Probleme.

> Auf Anfrage bei meinem Provider teilt mir dieser mit, dass ein Datembankuser
> vom Confixx angelegt wird, basta! (will sagen, mehr gibts nicht).

Was sagt denn "SHOW GRANTS;" oder "SHOW GRANTS FOR CURRENT_USER();" [¹]

> Ich stelle mir vor, dass nicht nur ich dieses Problem habe. MySQL stellt
> explizit sicherheitsrelevante Funktionen zum beschränkten Zugriff zur
> Verfügung, die nicht genutzt werden können. Hab nur ich bei meinem Provider
> das Problem oder übertreibe ich, wenn ich den Zugriff für die Datenbank
> beschränken will? Wie macht Ihr das?

Wie schon genannt - Root Server oder eigenen Server verwenden.


gruß, Frank

¹ http://dev.mysql.com/doc/refman/4.1/en/show-grants.html

Re: Frage zu Sicherheit und MySQL

am 26.06.2006 16:51:40 von Frank Schenk

Hallo Stefan,

Antworten bitte direkt in der NG ausser es ist ausdrücklich etwas
anderes gewünscht. Dann ist die Chance größer, daß du nicht in meinem
Spamfilter landest (wie mit dieser Mail geschehen).

> Ich habe mit create user versucht einen User anzulegen, mich
> stundenlange durch internetanleitungen gelesen und versucht umzusetzen
> was da vorgegeben wurde ...

Du suchst grant.

GRANT x PRIVILEGES on DB.TABLE to 'user'@'host' identified by 'PASSWORD';

Aber da du nicht mal "Show Grants" machen darfst wird das schlicht
ausgeschaltet sein.

gruß, Frank

X'Post Author+NG
F'up-To: NG

--

Frank Schenk

Senior Developer @ Ypsilon.Net AG

Vilbeler Landstrasse 203 | Tel: +49 (0) 6109 5050
---------------------------+-------------------------
DE 60388 Frankfurt / Main | Fax: +49 (0) 6109 50525

E-Mail: FS@ypsilon.net | http://www.openbc.com/hp/Frank_Schenk

Re: Frage zu Sicherheit und MySQL

am 26.06.2006 16:54:54 von Frank Schenk

Frank Schenk wrote:
> Hallo Stefan,
>
> Antworten bitte direkt in der NG ausser es ist ausdrücklich etwas
> anderes gewünscht. Dann ist die Chance größer, daß du nicht in meinem
> Spamfilter landest (wie mit dieser Mail geschehen).
....
> X'Post Author+NG

Ich mach mal die Ingrid: Ich meinte natürlich OP+NG

Frank