Die Anwendungssicherheitsinfrastrukturen

01.04.2006 von Martin Kuppinger
Auch wenn inzwischen mehr über Anwendungssicherheitsinfrastrukturen gesprochen wird, scheinen sie für viele Entwickler und Administratoren doch noch weitgehend Neuland zu sein. Bei den Application Security Infrastructures geht es darum, für Anwendungen die Infrastruktur bereitzustellen, mit der diese möglichst alle sicherheitsrelevanten Informationen externalisieren können.

Da der Authorization Manager in solchen Infrastrukturen eine wichtige Rolle spielt, müssen sich Entwickler und Administratoren im Windows-Umfeld mit diesem intensiv beschäftigt haben, um mit den Anwendungssicherheitsinfrastrukturen arbeiten zu können. Dies ist meist nicht der Fall.

Was sind Anwendungssicherheitsinfrastrukturen?

Anwendungssicherheitsinfrastrukturen bezeichnen die Dienste, die von Anwendungen für die Erreichung eines definierten Maßes an Sicherheit verwendet werden. Das bekannteste Beispiel sind Verzeichnisdienste, in denen Informationen über Benutzer abgelegt werden. Das Spektrum ist aber insgesamt deutlich breiter, da es um alle Themen im Zusammenhang mit der Sicherheit geht, also insbesondere

Wenn man sich den Status der Anwendungsentwicklung heute betrachtet, so wird deutlich, dass in vielen Fällen noch nicht mit einem solchen durchgängigen Sicherheitsmodell gearbeitet wird. Anwendungen, die selbst Benutzer verwalten und entsprechend auch die Authentifizierung durchführen......

Selbst bei Anwendungen, die auf einen Verzeichnisdienst zugreifen, ist aber die differenzierte Steuerung von Zugriffsberechtigungen nur in wenigen Fällen externalisiert. Für eine zentrale Administration entsprechend definierter Richtlinien und ein anwendungsübergreifendes Auditing davon, wer was in welchen Systemen darf, ist das aber problematisch. Wenn Rollen und Berechtigungen codiert sind, lässt sich die Sicherheit von Anwendungen nicht von außen steuern.

Vor allem der steigenden Compliance-Druck hat dazu geführt, dass vermehrt darüber nachgedacht wird, welche Komponenten von Anwendungen zentral bereitgestellt werden müssen. Es macht keinen Sinn, die Sicherheit immer wieder in jeder Anwendung neu zu erfinden. Stattdessen sollte so viel wie möglich mit Standardfunktionen gearbeitet werden.

Die wichtigsten Komponenten

Eine Anwendungssicherheitsinfrastruktur besteht aus einer Reihe von Komponenten, mit denen die Sicherheitsdienste für Anwendungen bereitgestellt werden (Bild 1). Die wichtigsten Komponenten sind:

Bild 1: Ein Grundmodell für eine Anwendungssicherheitsinfrastruktur.

Microsoft stellt in allen diesen Bereichen auf seinen Windows-Plattformen Dienste bereit. Viele davon sind auch geeignet, um eine Anwendungssicherheitsinfrastruktur aufzubauen, während es in anderen Bereichen wie dem Auditing noch Schwächen gibt.

Bei den Verzeichnisdiensten hat man mit dem Active Directory und ADAM zwei Optionen, die einerseits für das zentrale Verzeichnis und andererseits für spezifische Anwendungsverzeichnisse genutzt werden können.

Im Bereich der Authentifizierung lassen sich unterschiedliche Verfahren flexibel einbinden. Sowohl Kerberos als auch X.509 werden weitgehend unterstützt. Mechanismen für die starke Authentifizierung werden über Standardschnittstellen unterstützt.

Etwas anders sieht es bei der Autorisierung aus. Im Bereich des externen Zugriffsschutzes zeichnen sich mit den SSO-Funktionen der ADFS (Active Directory Federation Services) im Windows Server 2003 R2 erste Lösungsansätze ab. Für Anwendungen steht zudem ab dem Windows Server 2003 auch der so genannte Authorization Manager (azman) zur Verfügung, mit dem sich Konzepte der rollenbasierenden Zugriffskontrolle umsetzen lassen. Administratoren können extern steuern, welche Benutzer zu welcher Rolle einer Anwendung zugeordnet werden. Bedauerlicherweise hat dieser Ansatz aber noch keine große Verbreitung gefunden.

Bei den Verschlüsselungsfunktionen gibt es mit der Crypto API eine Standardschnittstelle, die genutzt werden kann. Darüber hinaus werden mit den Zertifikatsdiensten auch die Grundfunktionen für die Ausgabe von digitalen Zertifikaten und damit verbunden von privaten und öffentlichen Schlüsseln unterstützt. Für den Aufbau von PKIs sind allerdings Lösungen von Drittherstellern beispielsweise für das Smartcard-Management praktisch unverzichtbar.

Auch der Schutz von Code ist für Microsoft schon lange ein Thema. Code kann signiert werden. Die Betriebssysteme wiederum beinhalten differenzierte Funktionen, mit denen man steuert, welcher Code ausgeführt werden darf und welcher nicht.

Ein Schwachpunkt ist sicherlich noch das Auditing. Zwar können alle Anwendungen über die definierten Schnittstellen Ereignisse in das Ereignisprotokoll schreiben und dort sogar eigene Protokolle verwalten. Wichtige Funktionen wie die Signatur von Protokolleinträgen fehlen aber noch.

Dennoch lassen sich in reinen Windows-Umgebungen Anwendungssicherheitsinfrastrukturen relativ gut umsetzen, da alle wichtigen Voraussetzungen dafür gegeben sind.

Der Schritt zur Anwendungssicherheitsinfrastruktur

Die größte Herausforderung bei der Definition und Implementierung einer Anwendungssicherheitsinfrastruktur liegt darin, dass zwei unterschiedliche Bereiche einbezogen werden müssen: Administratoren und Anwendungsentwickler. Schon das kann zu Problemen führen, die noch dadurch verstärkt werden, dass sich Entwickler zwangsläufig umstellen müssen, wenn sie für alle sicherheitsrelevanten Funktionen nur noch einen definierten Satz von Diensten nutzen dürfen.

Bild 2: Der Autorisierungs-Manager (azman) ist eine der zentralen Komponenten für den Aufbau einer Anwendungssicherheitsinfrastruktur.

Zudem bedeutet die Umstellung auf Anwendungssicherheitsinfrastrukturen oft auch Investitionen in diese Infrastruktur, beispielsweise für den Ausbau der Zertifikatsdienste oder die Integration von Informationen in verschiedenen Verzeichnisdiensten. Dennoch ist der Schritt unumgänglich, um ein hohes Maß an Anwendungssicherheit im Unternehmen zu erreichen.

Die Definition einer solchen Infrastruktur setzt voraus, dass die für die Anwendungssicherheit erforderlichen Dienste definiert und entsprechend durch Infrastrukturkomponenten abgedeckt werden. Dieser Prozess lässt sich in homogenen Umgebungen einfacher durchführen als im komplexen, heterogenen Umfeld, aber in jedem Fall nimmt er einige Zeit in Anspruch.

Es bietet sich an, hier auch schrittweise vorzugehen und nicht zu versuchen, die perfekte Lösung für alle Arten von Anwendungen zu erstellen. Der erste Schritt muss aber in jedem Fall sein, die strategischen Plattformen für die Anwendungsentwicklung festzulegen, also beispielsweise die Verwendung des Microsoft .NET Framework ab der Version 2.0 und andererseits einer definierten J2EE Application Server-Plattform.

Anschließend müssen die zu verwendenden Verzeichnisdienste, Authentifizierungsmechanismen und Konzepte für die Autorisierung definiert werden. Neue Anforderungen wie die Umsetzung von Geschäftsprozessen auch über die Unternehmensgrenzen hinweg und damit beispielsweise die Notwendigkeit, auch Federation-Technologien zu nutzen, müssen unbedingt einbezogen werden.

Nachdem die Dienste definiert sind, muss die Infrastruktur entsprechend aufgebaut werden. Das kann relativ aufwändig werden, wenn beispielsweise ADAM-Infrastrukturen aufgebaut, Identitätsdaten aus verschiedenen Verzeichnissen integriert, Zertifikatsdienste flächendeckend aufgebaut oder Rollenkonzepte auf anwendungsübergreifender Ebene definiert werden müssen. Insofern ist die Definition und Umsetzung einer Anwendungssicherheitsinfrastruktur auch ein Prozess, der längere Zeit in Anspruch nimmt. Außerdem wird man sich immer auf Neuanwendungen konzentrieren müssen, da die Umstellung von bestehenden Anwendungen in den meisten Fällen zu aufwändig ist. Der Weg muss hier aber das Ziel sein – denn ohne definierte Anwendungssicherheitsinfrastruktur besteht bei jeder Investition in neue Anwendungen und die Änderung bestehender Anwendungen ein erhebliches Risiko der Fehlinvestition, weil diese den steigenden Sicherheitsanforderungen nicht genügen wird, wenn sie sich nicht in zentrale Sicherheitskonzepte integrieren lässt.

Die Kostenkomponente

Die Frage, wie sich die Kosten, die durch den Aufbau einer Anwendungsinfrastruktur entstehen, rechtfertigen lassen, stellt sich praktisch immer. Für den Aufbau beispielsweise von Zertifikatsdiensten, ADAM-Verzeichnissen und ihre Integration mit den MIIS 2003 ist ein beachtlicher Aufwand erforderlich. Gerade bei Anwendungsinfrastrukturen lassen sich solche Kosten aber relativ gut begründen, weil man den potenziell geringeren Administrationsaufwand, vor allem aber die niedrigeren Entwicklungskosten ins Feld führen kann. Zwar ist die Quantifizierung auch hier problematisch - es gibt aber nachvollziehbare Posten, bei denen Einsparungspotenzial besteht.