Mittwoch, 29. Oktober 2008

Daten allüberall

Das zweite Jahr dieses Blogs will ich mit einem Thema beginnen, daß in den letzten Wochen heiß diskutiert wurde. Immer wieder tauchenDaten an Stellen auf, wo sie eigentlich nicht hin gelangen sollten. Gründe gibt es dafür eine ganze Menge. Heute will ich ein paar Aspekte behandeln, die mit der Architektur der beteiligten Systeme zusammenhängen.

Verteilte Systeme

Als ich vor gut 20 Jahren damit anfing, Geld mit IT zu verdienen, ging gerade die große Zeit der Mainframes zu Ende. Auf einem Mainframe war die Sache im Prinzip noch einfach. Es gab eine große Datenbank und alle speicherten sämtliche Daten in diese Datenbank. Man wußte immer genau oder Daten sind.

Dann kam die Idee auf, daß Systeme billiger und flexibler gebaut werden könnten, wenn man sie auf mehrere kleinere Rechner verteilt.

Diese Idee ist noch recht harmlos, wenn nur die Anwendung verteilt werden, die Daten aber immer noch in einer einzigen großen Datenbank liegen, auf die alle Zugriff haben. Aber meist halten die einzelne Anwendung ihre eigenen Daten. Da sich aber die Bedürfnisse der einzelnen Anwendungen bezüglich Daten überlappen, befinden sich plötzlich dieselben Daten auf verschiedenen Rechnern.

Mit zunehmender Anzahl von Speicherorten wird die Angriffsflächegrößer. In den meisten Fällen dürften auch die Zugriffsrechte in den verschiedenen Anwendungen voneinander abweichen. Wenn ich an die gesuchten Daten in einer Anwendung nicht herankomme, kann ich es ja mit einer anderen versuchen.

Service orientierte Architekturen

In den letzten Jahren ist dieser Ansatz einen Schritt weiter getrieben worden. Anstelle von Anwendungen werden nun Services verteilt, die erst anschließend zur Anwendung zusammengebracht werden. Jetzt hat man Schnittstellen, über die man die interessantesten Dinge erreichen kann. Häufig wird - entsprechend den Versprechungen der Industrie - bei dem Entwurf der Services der Schwerpunkt auf Wiederverwendbarkeit gelegt. Das führt dann dazu, daß die Services die Vereinigungsmenge aller Daten liefern, die alle denkbaren Nutzer brauchen könnten. Die logische Folge ist, daß die meisten Nutzer mehr Daten erhalten, als sie eigentlich benötigen würden.

Das zweite Problem sind die Zugriffsrechte auf die Services. Üblicherweise wird nur pauschal überprüft, ob die Anwendung, die diesen Service nutzt, dazu berechtigt ist. Eine weitere Differenzierung findet nicht statt. Die Anwendung hat aber wahrscheinlich unterschiedliche Typen von Nutzern. Einige sind berechtigt mehr zu sehen, andere weniger. Für alle liefert der Service aber die gleichen Daten, nämlich die, die der Benutzer mit den meisten Rechten sehen darf.

Caching

Um die Performance des Systems zu erhöhen, wird gerne Caching eingesetzt. Hierbei entstehen weitere Orte, an denen sich Daten aufhalten, deren Verbleib nicht so genau überwacht wird.

Systemweites Rollenkonzept

Viele Probleme in Griff zu bekommen, ist es meines Erachtens notwendig, ein systemweites Rollenkonzept zu haben. Dies bedeutet, daß das System allen Benutzer eine oder mehrere Rollen zuweist, die von allen beteiligten Komponenten ausgewertet werden können. Bei allen zuübertragenen Daten, muß definiert sein, welche Rollen Zugriff darauf gestatten. Um das zu erreichen, ist es notwendig, daß das System nicht nur über eine zentrale Authentifizierungskomponente verfügt (Single Sign On), sondern auch über eine zentrale Autorisierungskomponente, die die Rollen vergibt.