Re: Apache vs PostgreSQL

From: Enrico Weigelt <weigelt(at)metux(dot)de>
To: postgres-liste <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Apache vs PostgreSQL
Date: 2008-04-03 07:10:51
Message-ID: 20080403071051.GA14034@nibiru.local
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

* Olaf Radicke <olaf_rad(at)gmx(dot)de> schrieb:

Hi,

> - Es gibt keine strikten Trennungen der Domains in Apache. Hast du eine
> gehackt - hast du alle gehackt.
>
> - Es gibt gibt keine Rollen, Gruppen, oder User in Apache. Alles wird vom
> selben Daemon ausgeführt. Rechtebeschränkung von Skripten ist deshalb sehr
> schwierig.

Nicht, wenn man metuxmpm benutzt ;-P
(okay, das wird schon seit Jahren nicht mehr weiterentwickelt)

Allerdings läuft der Postmaster auch auf einer UID.

> - Eine PostgreSQL hat ein klares ACL.

Hat der Apache auch ;-P

Allerdings kann das durch Scripte prima ausgehebelt werden.
Ausweg: jeden vhost unter seiner eigenen UID laufen lassen und das
drunterliegende OS die Zugriffssteuerung erledigen lassen.

Ich würde evtl. (wenn ich die Zeit dazu hätt ;-O) sogar noch weiter
gehen und die Script-Engines in einem eigenem VFS arbeiten lassen, das
via 9P (im Userland) gemounted wird - jeder einzelne Worker bekommt dann
sein Jail (*kein* Zugriff auf das Host-FS!). Allerdings müßte da
allerhand auf dieses VFS portiert werden :(

> - Die Datenbanken innerhalb des Cluster sind sauber getrennt. Wenn eine
> gehackt wurde, kommt man nicht so ohne weiteres in de nächste.

Es sei denn, der Postmaster ist direkt kompromittiert (ist das schonmal
vorgekommen ?)

> - Man kann erzwingen, das der Client sich nur mit ssl und md5 anmeldet und
> jeder weitere Kommunikation abgeschirmt ist.

Geht beim Apachen auch ;-P

> - Die möglichen Interaktionen des Benutzer mit der Datenbank sind überschaubar
> und fein granuliert ein zu stellen. Was sich bis zum einzelnen Befehl
> herunterbrechen lässt.

Geht beim Apachen auch, bis runter zu den atomaren Requests.
(okay, Content-Validierung wird da schwierig).

> - Wenn man tigger und prozedurale Sprachen verbietet, ist es für den User sehr
> schwer das System aus zu tricksen.

Ist eigentlich garnicht nötig. Vorrausgesetzt, die Sprache ist wirklich "trusted"
(nicht nur als solche deklariert ;-)), bekommt man damit auch nur auf genau die
Daten, die erlaubt sind. Okay, man könnte in speziellen Situationen vielleicht
einen unsauberen Trigger für DOS mißbrauchen, aber dazu braucht man eigentlich
keine Trigger.

> Zum Schluss noch eine provokante Polemik:
>
> Oft hört man, das nur der Apache direkt Datenbank Zugriffe dürfe, um ihn vor
> dem Böse Internet zu schützen. Ich behaupte mal, ein Apache von dem die
> Datenbank ausgeht, das von ihr keine Angriffe kommen, ist gefährlicher, als
> das Internet selber.

Ja, wenn der Apache-Prozeß sich in der DB einloggen kann - damit kann man dann
natürlich mehr anstellen, als der pure Postmaster, für den man keinen Zugang hat.

Der Punkt ist eigentlich ein ganz anderer: man sollte *generell* nur solche
Zugänge öffnen, die wirklich benötigt werden. Wenn die Clients direkt SQL
sprechen wollen, ist das nötig - bei einer reinen Web-Anwendung nicht (da sprechen
die Clients nur HTTP).

cu
--
---------------------------------------------------------------------
Enrico Weigelt == metux IT service - http://www.metux.de/
---------------------------------------------------------------------
Please visit the OpenSource QM Taskforce:
http://wiki.metux.de/public/OpenSource_QM_Taskforce
Patches / Fixes for a lot dozens of packages in dozens of versions:
http://patches.metux.de/
---------------------------------------------------------------------

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Enrico Weigelt 2008-04-03 07:40:24 Re: Re: [pgsql-de-allgemein] viele kleine queries vs wenige große queries
Previous Message Thomas Markus 2008-04-03 06:18:14 Re: Trigger für DDL Änderungen