Niko Köbler Freiberufler

Verteilte Anwendungen und Microservices bedürfen einer erweiterten Absicherung hinsichtlich Authentifizierung und Autorisierung als es einfache Anwendungen in der Vergangenheit getan haben.

Anwender sicher zu authentifizieren und zu autorisieren, ist gerade in Microservices-Architekturen oder verteilten Anwendungen keine leichte Aufgabe. Vor allem, weil hier ein Securityknackpunkt liegt. Das Konzept Single Sign-on soll möglichst viel Sicherheit mit möglichst viel Bequemlichkeit für die Anwender verbinden. Verschiedene Technologien versuchen, das unter einen Hut zu bekommen.

Durch den anhaltenden Trend zu mehr verteilten Systemen und die in vielen Bereichen etablierten Microservices-Architekturen steigt mittlerweile – zum Glück – wieder das Interesse an Sicherheit in diesen Umgebungen. Anwendungssicherheit ist ein weites Feld mit unterschiedlichen Teilgebieten, am bekanntesten sind sicherlich die OWASP-Top-10-Angriffsszenarien. Um alle möglichen Angriffe auf eine Applikation abzuwehren, sind unterschiedliche Mechanismen und Vorgehensweisen notwendig, die teils dezentral in allen Anwendungen oder Microservices selbst implementiert oder gelöst werden müssen, teils aber auch zentral abgebildet werden können oder sogar müssen. Das Teilgebiet der Sicherheit hinsichtlich Authentifizierung und Autorisierung ist meines Erachtens ein Thema, das nur zentral gelöst werden kann. Denn auf der einen Seite möchte man nicht in jeden Microservice oder in jede Anwendung im Unternehmensumfeld den gleichen Mechanismus einbauen und schlimmstenfalls per Copy and Paste Fehler weiterverbreiten, und andererseits reduziert man durch eine zentrale Lösung mögliche Angriffs- oder Datenabgriffspunkte. Schnell sind wir so also bei einer Single-Sign-on-(SSO-)Lösung, bei der ein Anwender seine Credentials nur an einer zentralen Stelle eingeben muss. SSO bedeutet nämlich nicht unbedingt, dass der User sich nur ein einziges Mal authentifizieren muss, um mit allen Anwendungen und Services zu arbeiten – präziser heißt SSO, dass der User sich nur an einer einzigen Stelle authentifizieren darf. Dabei muss natürlich sichergestellt werden, dass Mechanismen zur Verteilung und Weitergabe der Identität und weitere so genannte Assertions oder Claims an die beteiligten Anwendungen existieren. Diese Vorgaben und Mechanismen sind identisch sowohl für verteilte Microservices als auch für mehrere monolithische Anwendungen im Unternehmensumfeld.

Authentifizieren oder autorisieren?

Ein Exkurs in die Begriffserklärung, da die jeweilige Bedeutung vielen immer noch nicht klar ist:

  • Authentifizierung: Der Anwender muss sich identifizieren, um sicherzustellen, dass er derjenige ist, für den er sich ausgibt. Am einfachsten geschieht das mit einem Benutzernamen und einem Geheimnis, das nur er kennt (z. B. Passwort). Danach weiß die Anwendung oder das System, wer der aktuelle Benutzer ist.
  • Autorisierung: Mit der Autorisierung werden dem zuvor authentifizierten Anwender Rechte eingeräumt, bzw. wird der Durchführung einer oder mehrerer bestimmter Operationen zugestimmt. Man weiß also, wer der Benutzer ist und was er tun darf.

Einfach sicher

Immer wieder begegnen mir Aussagen und Anforderungen wie „Das muss so sicher wie möglich und gleichzeitig so einfach wie möglich sein“. Sicherheit und Einfachheit, oder sagen wir besser Bequemlichkeit, schließen sich insofern aus, als es keine Möglichkeit gibt, die hundertprozentige Sicherheit bei hundertprozentiger Bequemlichkeit bietet. Entweder das eine oder das andere, oder eben ein Kompromiss aus beidem. Letzteres ist auch meist im Einsatz, die Gewichtung geht aber zu Gunsten der Sicherheit. Dieses Sicherheitsbewusstsein muss zum einen in die Köpfe von uns Entwicklern einsickern, aber auch in die der Anwender. Es ist heutzutage einfacher denn je, in schlecht abgesicherte Anwendungen einzudringen oder Daten von Benutzerkonten abzugreifen und zu missbrauchen. Ein Passwort namens „Passwort“ ist keine Sicherheit. Sonderzeichen und Zahlen als Ersatz oder zusätzlich zu Buchstaben ist für leistungsfähige Algorithmen ebenfalls keine Hürde mehr. Der einzige Weg, um es diesen Angreifern zu erschweren, unbefugt ins System einzudringen, sind ausreichend lange Passwörter, gerne auch ganze Sätze. Diese sind technisch schwer zu erraten und zu knacken, aber für uns Menschen relativ leicht zu merken. Aber zurück zum Thema: Versuchen wir, einen möglich guten Kompromiss aus Sicherheit und Einfachheit zu finden.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 2.17 - "Mehr geht immer"

Alle Infos zum Heft
579757467Single Sign-on: Sicher und unkompliziert
X
- Gib Deinen Standort ein -
- or -