Bei der Entwicklung eines Webportals stellt sich eher früher als später die Frage: Wer soll bzw. wird das Portal benutzen? In der Regel soll ein Webportal einer oder mehreren bestimmten Nutzergruppen zur Verfügung gestellt werden, die sich vor der Nutzung am Portal anmelden. Nur dann können Aktionen wie eine aufgegebene Bestellung oder das Abrufen von persönlichen Daten auch einem bestimmten Nutzer zugeordnet werden. Der nachfolgende Artikel beleuchtet die verschiedenen Aspekte des "Identity and Access Management" (IAM) inklusive der Integration eines IAM am Beispiel von Keycloak.
IAM FÜR NUTZERIDENTIFIKATION UND ZUGANGSKONTROLLE
Aus technischer Sicht muss ein Webportal hier mehrere Funktionen bereitstellen:
- Es muss die Möglichkeit geben, neue Nutzer hinzuzufügen.
- Nutzerdaten und Passwörter müssen sicher gespeichert werden.
- Nutzer müssen sich am Portal anmelden können.
- Zugriffe auf Ressourcen müssen auf eine Legitimierung hin geprüft werden.
- Nutzen mehrere Nutzergruppen das Webportal, müssen Rollen und Rechte konzipiert und gepflegt werden.
- Und das Ganze muss natürlich sicher sein!
Diese Punkte gilt es bei der Entwicklung des Webportals zu berücksichtigen. Nicht zuletzt müssen auch die Arbeitsressourcen für den Bereich IAM eingeplant werden.
EIGENENTWICKLUNG ODER EXTERNE LÖSUNG - AUCH EINE FRAGE DER SICHERHEIT
Ein Formular für die Nutzerregistrierung ist schnell erstellt – kein Thema. Die Nutzerdaten ans Backend senden, ein einfacher AJAX Request. Am besten per HTTPS. Aber wie speichert man das Passwort wirklich sicher? Ist der Verschlüsselungsalgorithmus noch aktuell oder inzwischen gehackt? Wie informiert man die anderen Systeme darüber, dass sich der Nutzer korrekt legitimiert hat, sodass diese einen Zugriff erlauben? Wie bildet man am besten eine Rechte- & Rollen-Matrix in der Anwendung ab, die im besten Fall auch noch nachträglich erweiterbar ist? Wie muss ein Login ablaufen, dass es wirklich sicher ist? Was sind potentielle Sicherheitslücken, die Angreifer ausnutzen könnten?
Dass jede der im ersten Abschnitt genannten Webportal-Funktionen von einem Softwareentwickler implementiert werden kann, steht außer Frage. Die wenigsten Softwareentwickler sind jedoch auch gleichzeitig Securtiy-Experten. (Fairerweise muss man sagen, dass dies auch nicht zu den Kernkompetenzen eines Softwareentwicklers gehört). Aber so ist die Wahrscheinlichkeit groß, dass bei der Entwicklung einige sicherheitskritische Aspekte allein schon aus Unwissenheit nicht berücksichtig werden. Einfach etwas Vorhandenes kopieren? Auch keine gute Idee! Jedes Webportal ist individuell. Für die nächste Anwendung, die eine Nutzerregistrierung und -anmeldung benötigt, müssen all diese Funktionen stets neu implementiert werden.
Das Thema Sicherheit ist zudem nicht mit der Entwicklung abgeschlossen. Sicherheitskritische Aspekte der Anwendung müssen ständig überwacht und gepflegt werden. Nur so können Sicherheitslücken geschlossen und das Risiko einer Kompromittierung minimiert werden. Der Bereich Security ist sehr komplex. Und nicht ohne Grund hat sich ein eigener, spezialisierter Berufszweig daraus gebildet.
Stellt sich nun die Frage: Wie kann ich ein sicheres Webportal entwickeln, ohne meine eigenen Entwickler zu Security-Experten umzuschulen oder mir Expertenwissen in Form von neuen Mitarbeitern oder externen Beratern ins Team zu holen? Und das am besten wiederverwendbar für nachfolgende Projekt? Die Antwort darauf ist der Einsatz einer bestehenden, externen IAM-Lösung.
WAS EXTERNE IAM-LÖSUNGEN LEISTEN
- Neue Portalnutzer müssen sich direkt am IAM registrieren.
- Nutzerdaten und Passwörter werden im IAM, getrennt von den Anwendungsdaten, gesichert und verwaltet.
- Das IAM stellt standardisierte Schnittstellen für einen sicheren Login bereit.
- Das IAM ist von Haus aus in der Lage, Security-Marker auszustellen, mit denen Nutzer ihre Legitimierung an den Ressourcen des Webportals ausweisen können.
- Das IAM bietet eine generische Lösung für Rechte und Rollen, die einfach eingesetzt werden kann.
Darüber hinaus beinhalten die meisten Lösungen auf dem Markt viele weitere Funktionen wie Single Sign On oder Multi Factor Authentication.
Vor allem aber ist es wichtig, dass eine externe IAM-Lösung von Sicherheitsexperten entwickelt und gewartet wird. Das IT-Team im Unternehmen muss sich also lediglich darum kümmern, seine Instanz zu administrieren und regelmäßige Updates zu installieren. Eine Aufgabe, die in der Regel von einer einzigen Person übernommen werden kann. Und die Entwickler des Webportals haben lediglich die Schnittstellen des IAM berücksichtigen. Sie müssen sich nicht mit Details der Security-Fragen auseinandersetzen.
DIE WICHTIGSTEN FUNKTIONEN, DIE EIN IAM MITBRINGEN SOLLTE
- Single Sign-On
Single Sign-On ermöglicht den Login an unterschiedlichen Anwendungen mit nur einem Nutzeraccount. Jeder Nutzer erstellt einmalig ein Account, der in der gesamten Anwendungslandschaft verwendet werden kann. Das bedeutet: keine erneute Anmeldung und nur ein Passwort.
- OpenID Connect, SAML
OpenID Connect und SAML sind aktuell die Standardprotokolle, wenn es um eine sichere Authentifizierung und Autorisierung geht. Beide Protokolle haben unterschiedliche Einsatzzwecke und sollten vom IAM unterstützt werden.
- Theming
Verwendet man OpenID Connect oder SAML, so wird der Nutzer beim Login zum IAM weitergeleitet. Die Loginmaske kommt also nicht vom eigenen Client, sondern vom IAM. Um für den Nutzer ein einheitliches Look & Feel zu gewährleisten, sollte diese Maske daher nach eigenen Wünschen individualisierbar sein.
- Administration
Das IAM sollte eine Möglichkeit bieten, von Administratoren verwaltet zu werden – ob per GUI oder CLI ist eine persönliche Frage. Wichtig ist, dass Administratoren ein gut nutzbares Tool sowie einen zentralen Punkt haben, um Nutzer zu verwalten, Rechte und Rollen zu bearbeiten oder auch einen neuen Identity Provider anzulegen.
- User Federation
Auch wenn ein IAM in der Regel eine eigene Nutzerverwaltung implementiert, sollte zudem die Option bestehen, eine externe Nutzerverwaltung wie ein LDAP anzubinden. Das erleichtert die Integration in eine bestehende Infrastruktur mit einer bestehenden Nutzerverwaltung.
- Password Policies &
Multi Factor Authentification
Es sollte möglich sein, die Stärke der zu verwendenden Passwörter zu konfigurieren und dies über einen Regelsatz durchzusetzen. Zudem sollten weitere Sicherheitsfaktoren wie Soft- und Hardwaretoken, physische Sicherheitsschlüssel (FIDO) oder auch Einweg-Codes per SMS verwendet werden können, um einen Account zusätzlich abzusichern. Moderne Systeme gehen sogar so weit, dass eine sogenannte „passwordless authentication“ möglich ist, ein Nutzer sich also ganz ohne Passwort authentifizieren kann.
- Logging
Das IAM muss ein aussagekräftiges Anwendungs- und Auditlog bereitstellen. Es handelt sich hier um einen zentralen Knoten in der Infrastruktur. Daher muss gewährleistet sein, dass dieser auch gut überwacht werden kann. Zudem sollten über ein Auditlog Nutzerinteraktionen überwacht werden können, um nicht legitimierte Aktionen und Sicherheitslücken frühzeitig zu erkennen und zu unterbinden.
WELCHE PRODUKTE GIBT ES?
Betrachtet man die auf dem Markt vorhandenen Lösungen, so kommt man an Okta und Auth0 nicht vorbei. Beide haben umfangreiche, kostenpflichtige IAM Lösungen im Angebot – wie bei vielen anderen Anbietern im Bereich des Identity and Access Management leider auch nur als Managed Services.
Der Kunde hat hier nur wenig bis keinen Einfluss darauf, wo die Nutzerdaten der eigenen Anwendung gespeichert werden. Dies kann ein Vorteil sein, da die personenbezogenen Nutzerdaten durch die Infrastruktur des Anbieters zusätzlich gesichert sind. Es kann aber auch zu rechtlichen Schwierigkeiten führen wie die datenschutzrechtliche Problematik bei der Verarbeitung und Speicherung von personenbezogenen Daten im EU Ausland.
Neben reinen Cloud Lösungen gibt es jedoch auch Produkte wie WSO2 oder CyberArk, die On-Premise einsetzbar sind sowie OpenSource Lösungen wie Open Identity Platform, Keycloak, Zitadel oder Ory.
IAM-INTEGRATION AM BEISPIEL VON KEYCLOAK
Das IAM sollte als eigenständiger Service in die Infrastruktur integriert werden. Im Falle von Keycloak kann hier einfach der passende Docker Container eingesetzt werden. Alle Services, die über das IAM abgesichert werden sollen, müssen dort als sogenannte Client registriert werden. Wichtig hierbei ist der Typ des Client und welches Protokoll verwendet werden soll.
Clients werden in 3 Typen unterschieden: „Confidential“, „Public“ und „Bearer-only“. Während Clients der Typen „Confidential“ und „Public“ selbst einen Login initiieren können, sind „Bearer-only“ Clients Services, die selbst nie einen Login iniitieren, sondern nur authentifizierte Anfragen verarbeitet. „Public“ Clients werden auch „Ressource Server“ genannt. Clients müssen konfiguriert werden.
Die Ressource Server müssen in der Lage sein, die Signatur der Tokens, die sie mit jedem Request erhalten, zu verifizieren. Dafür ist es notwendig, dass die Server die passenden Informationen vom IAM erhalten. Im Falle von Keycloak gibt es hierfür bereits Pakete, die lediglich als Abhängigkeit in das Projekt geholt werden müssen. Danach reichen ein paar Einträge in der Konfiguration wie z.B. der Connectionstring zu Keycloak aus, und der Ressource Server ist angebunden.
Clients vom Typ „Confidential“ und „Public“ müssen einen Redirect zum IAM machen sowie nach einem erfolgreichen Login die Sicherheitstoken, die vom IAM ausgestellt werden, abrufen und verarbeiten können. Auch diese Funktionen müssen nicht selbst implementiert werden. Das kann durch die Auswahl einer passenden Bibliothek, die das gewählte Protkoll implementiert, oder die Verwendung einer entsprechenden Integration von Keycloak erfolgen.
Im Falle eines Webclients wäre das z. B. „keycloak-js“. Auch hier kann über eine Konfiguration eine Verbindung zum IAM hergestellt und ein sicherer Login initiert werden. Die Versendung der Securitytoken nach jedem Request nach einem erfolgreichen Login erledigt die Bibliothek, ebenso die automatische Aktualisierung der Token.
Quelle: http://www.simpleorientedarchitecture.com/wp-content/uploads/2016/03/OAuth-Code-OIDC-Code-1-e1459362107241.png
FAZIT
Mit dem Einsatz eines IAM Tools wie Keycloak oder dem eines anderen Anbieters können auch ohne Security-Expertise sichere Softwarelösungen entwickelt werden. Eine einfache Integration ermöglicht dabei den Fokus der eigenen Entwickler auf die Businesslogik. Durch den großen Funktionsumfang der bestehenden IAM Lösungen kann der Großteil aller Usecases realisiert werden, ohne eine eigene Lösung zu entwickeln. Dabei sollte darauf geachtet werden, dass alle gängigen Standards wie z.B. ODIC unterstützt werden und das IAM vom Anbieter aktiv gewartet und supportet werden.
Manchmal ist der eigene Usecase jedoch doch so speziell, dass dieser nur mit einer individuellen Lösung umgesetzt werden kann. Dann ist es wichtig, dass auch das nötige Sicherheitswissen vorhanden ist. Kleine Fehler können hier zu kritischen Sicherheitslücken führen. Zudem sollte berücksichtigt werden, dass eine Individuallösung über den gesamtem Lebenszylus der Anwendung gewartet und aktualisiert werden muss. Um neue und potentielle Sicherheitslücken zu schließen, sollten gängige Standards eingehalten werden.
QUELLEN
– https://www.csoonline.com/article/2120384/what-is-iam-identity-and-access-management-explained.html
– https://www.yenlo.com/blogs/api-policies-pap-pdp-pep-and-pip-oh-my/
– https://www.keycloak.org/docs/6.0/authorization_services/
– https://www.microsoft.com/en-us/security/business/identity-access-management/mfa-multi-factor-authentication
– https://support.microsoft.com/en-us/topic/what-is-multifactor-authentication-e5e39437-121c-be60-d123-eda06bddf661
– https://net.cs.uni-bonn.de/fileadmin/user_upload/naiakshi/Naiakshina_Password_Study.pdf
– https://www.cyberark.com/
– https://wso2.com/
– https://www.openidentityplatform.org/
– https://www.keycloak.org/
– https://www.ory.sh/
– https://zitadel.ch/
– https://www.oauth.com/oauth2-servers/the-resource-server/
– http://www.simpleorientedarchitecture.com/wp-content/uploads/2016/03/OAuth-Code-OIDC-Code-1-e1459362107241.png
| OVFOKUS |
Webportal Entwicklung
Weitere Beiträge aus dieser Reihe:
Teil 1: Ein Überblick
Die Beiträge in dieser OVFOKUS Reihe widmen sich dem Thema Webportal Entwicklung: Was muss ich beachten? Welche Aspekte sind wichtig? Dieser erste Teil liefert einen Überblick – von Hosting über Zugang bis zu Sicherheit und Intergration.
Teil 2: Barrierefreiheit von Webportalen
Barrierefreiheit macht Webanwendungen für jedermann nutzbar. Aber was bedeutet barrierefrei? Warum sollte ich mich überhaupt mit dem Thema beschäftigen? Wie erreiche ich das? Hier erfahren Sie mehr!
Teil 3: Webportal-Hosting
Cloud oder On-Premises? Virtual Machines, Container oder Bare Metal? Cluster oder Single Node? Welche Hosting-Option passt zu mir? Antworten auf diese Fragen finden Sie hier.
Teil 4: Usability
Effektivität, Effizienz, Zufriedenheit – daran wird Usability gemessen. Aber wie wird mein Webportal „gebrauchstauglich“? Hier erfahren Sie mehr zu Standards, Methoden und Tests.
Teil 5: Prozesse – Analyse und Optimierung
Prozesse analysieren und optimieren, das ist der Weg zu einem effizienten, prozessbasierten Webportal. Aber – Anwendernutzen nicht vergessen! Mehr dazu in diesem Beitrag.
SUchen Sie die Für Ihr Unternehmen passende PORTALLösung?
In einem Teilbereich oder als Ganzes?
Wie können wir Sie unterstützen? Sprechen Sie uns an – ganz unverbindlich!