Die Anwendungssicherheitsinfrastrukturen

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

  • die Speicherung von Identitätsdaten (Benutzer, Gruppen, Rollen etc.,

  • die Authentifizierung;

  • die Autorisierung von Zugriffen, gegebenenfalls auch unter Verwendung von Rollenkonzepten;

  • die Verschlüsselung und Signatur von Informationen bis hin zur Sicherung von digitalen Informationen im Sinne des DRM (Digital Rights Managements);

  • den Schutz von Code vor Manipulation;

  • die Auditing-Funktionen.

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.
Bild 1: Ein Grundmodell für eine Anwendungssicherheitsinfrastruktur.

  • Verzeichnisdienste: Anwendungen müssen Informationen zu Benutzern und Gruppen, teilweise aber auch zu Geräten und anderen Objekten speichern. Dafür sind Verzeichnisdienste erforderlich. Die Tendenz geht heute dahin, neben einem zentralen Verzeichnisdienst mit den Basisinformationen zu Benutzern und Gruppen noch Anwendungsverzeichnisse zu unterstützen, in denen anwendungsspezifische Daten gespeichert werden können.

  • Authentifizierungsdienste: Authentifizierungsdienste werden in der Regel von den Verzeichnisdiensten angeboten. Zusätzlich sind aber auch Standards für die starke Authentifizierung erforderlich. Außerdem muss geklärt werden, welches oder welche Modelle für die Authentifizierung von Anwendungen genutzt werden können. So sind beispielsweise Kerberos und X.509 Ansätze, die im heterogenen Umfeld eingesetzt werden können, wobei beide Vor- und Nachteile haben.

  • Autorisierungsdienste: Autorisierungsdienste übernehmen die Steuerung der Zugriffe auf Anwendungen. Wichtig sind dabei Funktionen, die eine Definition von Rollen und eine flexible Zuordnung von Benutzern und Tasks zu diesen Rollen erlauben. Zu den Autorisierungsdiensten zählen aber auch externe Access Management-Lösungen beispielsweise für Webzugriffe.

  • Verschlüsselungsfunktionen: Die Funktionen für die Verschlüsselung und digitale Signatur von Informationen sind ebenfalls ein zentrales Element in Anwendungssicherheitsinfrastrukturen. Neben den Grundfunktionen gehören dazu auch erweiterte Dienste wie das Digital Rights Management, also der Schutz von digitalen Informationen.

  • PKI/Zertifikatsdienste: Ein Basisdienst für die Verschlüsselung, aber auch für andere Funktionsbereiche wie den Schutz von Code und die Verwendung von digitalen Zertifikaten bei der Authentifizierung.

  • Codesicherheit: Codesicherheit ist ein grundlegender Bereich, bei dem es darum geht, die Unverfälschtheit von Code und die Vertrauenswürdigkeit von Herausgebern des Codes sicherzustellen. Dazu wird mit digitalen Signaturen gearbeitet.

  • Auditingdiensten: Schließlich muss es noch Funktionen geben, mit denen sich sowohl die Administration als auch die Nutzung von Anwendungen und Informationen überwachen lassen – und zwar in möglichst einheitlicher, anwendungsübergreifender Form, und nicht mehr nur auf der Ebene einzelner Anwendungen.

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.