Neuigkeiten von trion.
Immer gut informiert.

Artikel in der Kategorie 'security'

JWK zu PEM konvertieren in der Shell 2 Apr

Geschrieben von Thomas Kruse am 2. April 2025
Kubernetes

Im Rahmen eines Integrationsprojekts von Kubernetes und Vault (bzw. OpenBao ) sollten Secrets aus Vault in Kubernetes bereitgestellt werden. Dabei sollten die verschiedenen direkten Vault Integrationen durch Infrastruktur in Kubernetes abgelöst werden, und die Vault Secrets als Kubernetes Secrets im Cluster verfügbar gemacht werden, um diese dann als Volume oder Umgebungsvariablen bereitzustellen. Damit soll zum einen das Token-Zero-Problem addressiert werden, also wenn Vault zur Verwaltung von Geheimnissen dient, wie werden die Anwendungen mit einem Geheimnis zur Authentifizierung am Vault versorgt, als auch die individuelle Vault Anbindung der verschiedenen Programmiersprachen und Frameworks.

Vault bietet mit dem Vault Secrets Operator auch direkt eine Integration an, die auf unterschiedliche Weise die Authentifizierung gegenüber Vault umsetzt, als auch für das Mapping der Vault Secrets. Ziel war jedoch nicht nur, ein entsprechendes Setup zu implementieren, sondern eine automatisierte Testbarkeit herzustellen. Dazu wird ein stabiles, reproduzierbares Setup benötigt, um die Kubernetes-Vault-Integration jederzeit in der CI Umgebung frisch herzustellen.

In dem Zuge wurde ein Verfahren benötigt, JWK (JSON Web Keys) im PEM Format bereitzustellen - und das am besten automatisiert durch ein einfaches Shell Script z.B. mit der Bash. Eine Umsetzung auf Basis von Kubernetes OIDC JWKS in PEM formatiertes Material zu erhalten wird im folgenden beschrieben.

Anbindung von Active Directory testen - Einfache Lösung im Docker Container 12 Mär

Geschrieben von Stefan Reuter am 12. März 2025

Häufig befinden sich die Nutzerdaten (Benutzernamen, Passwörter und Gruppenzugehörigkeiten) von Unternehmen in Active Directory Servern.

Entwickelt man eigene Anwendungen, die diese Benutzerdaten nutzen sollen oder plant man den Einsatz einer Single-Sign-On-Lösung wie Keycloak, so muss man das Active Directory anbinden. Prinzipiell verhält sich ein Active-Directory-Server (AD) wie ein "normaler" LDAP-Server. Man könnte also zur Entwicklung statt eines AD auch einen OpenLDAP-Server oder ein ähnliches leichtgewichtiges Produkt nutzen, das sich einfach als Container in Docker oder Kubernetes betreiben lässt.

Leider hat AD im Gegensatz zu anderen LDAP-Servern ein paar Eigenheiten, die berücksichtigt werden möchten - insbesondere bei der der Durchführung von Entwickler- oder Integrationstests.

Default TLS Zertifikat in Kubernetes 24 Feb

Geschrieben von Thomas Kruse am 24. Februar 2025
Kubernetes

Die Absicherung von HTTP Zugriffen mittels TLS (früher SSL) ist spätestens seit den Enthüllungen von Edward Snowden auch für Anwendungen außerhalb von Banken und Medizin zum Standard geworden. Vor allem Dank des kostenlos nutzbaren Let’s Encrypt sind auch die - früher teils horrenden - Kosten kein Grund mehr, auf TLS zu verzichten.
Die meisten Zertifikatanbieter, die das durch Let’s Encrypt eingeführte ACME Protokoll unterstützen, bieten bei Verwendung der DNS Challenge auch Wildcard Zertifikate an. Wird für einen Kubernetes Cluster primär mit Hostnamen in einer Domain oder Subdomain gearbeitet, so bietet sich ein Wildcard Zertifikat entsprechend an. Damit kann unter Umständen sogar der Einsatz des häufig zusätzlich zur Ingress Implementierung betriebenen Cert Manager entfallen: Dazu würde das Wildcard-Zertifikat als Default TLS Zertifikat im Ingress Controller konfiguriert werden/

Wie das funktioniert, wird im folgenden Beitrag beschrieben.

Gefahren durch gestohlene Access-Tokens 17 Feb

Geschrieben von Stefan Reuter am 17. Februar 2025
Access-Token wird gestohlen

In modernen Authentifizierungs- und Autorisierungsmechanismen spielen Access-Tokens eine zentrale Rolle. Sie ermöglichen es Clients, im Namen eines Benutzers auf geschützte Ressourcen zuzugreifen, ohne eine Session zu benötigen oder ständig Zugangsdaten übertragen zu müssen.

Doch was passiert, wenn ein Access-Token in die falschen Hände gerät? Die Konsequenzen können verheerend sein: Identitätsdiebstahl, Datenexfiltration und unautorisierter Zugriff auf sensible Systeme.

OAuth 2.0 Login: Keycloak Rollen auf Spring Security Authorities mappen 23 Okt

Geschrieben von Leonard Wagner am 23. Oktober 2024
Spring Boot

In einem vorherigen Artikel haben wir uns damit befasst, wie man Keycloak Rollen als Spring Security Authorities verfügbar macht, wenn Spring Boot als Resource Server agiert. In diesem Folgebeitrag betrachten wir nun den Fall, in dem unsere Spring Boot Anwendung die Rolle eines OAuth 2.0 Client einnimmt und einen OAuth 2.0 Login mit Keycloak implementiert. Auch hier wollen wir die Rollen aus Keycloak korrekt mappen.

Container Images absichern mit cosign 3 Okt

Geschrieben von Thomas Kruse am 3. Oktober 2024
Kubernetes

Supply Chain Security spielt auch im Container Umfeld eine immer wichtigere Rolle. Es gilt dabei die Sicherheit im Sinne von Echtheit und Integrität der (Docker) Images abzusichern.
Typische Supply Chain Angriffsszenarien bei Kubernetes, Docker...

OAuth 2.0 Resource Server: Keycloak Rollen auf Spring Security Authorities mappen 15 Jul

Geschrieben von Leonard Wagner am 15. Juli 2024
Spring Boot

In vielen modernen Anwendungen nutzen wir Keycloak zur Authentifizierung für den Zugriff auf Spring Boot Anwendungen. Dabei werden Benutzer und ihre Rollen in Keycloak gespeichert bzw. von Keycloak bereitgestellt. In einer Spring-Anwendung möchten wir diese Rollen nun nutzen, um den Zugriff auf Ressourcen zu autorisieren. In einem weiteren Blogpost betrachten wir Fall in dem unsere Anwendung als OAuth 2.0 Client agiert und einen OAuth 2.0 Login implementiert.

Java Magazin Schwerpunkt: Event-Sourcing, MQTT, Kubernetes und Angular 12 Jul

Geschrieben von Thomas Kruse am 12. Juli 2024
Java Magazin 5/2024: Gemeinsam stark: Java, Angular und Kubernetes - Fullstack in modern

Fullstack in modern - von Offlinefähigkeit bis hin zu Echtzeitanwendungen. Gemeinsam mit dem Java Magazin haben wir einen Artikelschwerpunkt entwickelt, in dem wir im Rahmen einer Beispielanwendung einige der Technologien vorstellen, mit denen wir auch in Kundenprojekten Architekturanforderungen umsetzen.

Dabei nutzen wir für die Beispielanwendung MQTT als Messagingsystem um Events bis in das browserbasierte Frontend auf Basis von Angular als ein Kommunikationsweg nutzen.

Als Sonderdruck ist der Schwerpunkt im PDF Format als Download am Ende von diesem Beitrag zu finden.

Method Security in Spring: User für asynchrone und zeitgesteuerte Aufgaben 8 Jul

Geschrieben von Thomas Kruse am 8. Juli 2024
Spring Boot

Mit Spring Security können unter anderem Webanwendungen (Spring WebMVC) auf einfache und flexible Weise abgesichert werden. Dabei ist der typische Weg über Security-Filter-Chains die Webschicht von Spring WebMVC mit Spring Security abzusichern. Doch reicht das aus?
Diese rhetorische Frage lässt sich mit vielleicht beantworten: Gibt es keine Programmierfehler oder Logikfehler, so kann das bereits ausreichen. Denn erreicht kein Request unberechtigt die Controller-Schicht, dann kann nichts passieren.

Doch in Zeiten zunehmender Cyberbedrohungen sollte keine Anwendung lediglich durch eine Schicht gesichert werden. Verteidigung in der Tiefe kann dank Spring Security leichtgewichtig mit Method Security umsetzen. Eine deutliche Verbesserung.

In unserem letzten Spring Security Training kam die Frage auf, wie sich dies mit periodischen Aufgaben innerhalb der Spring Anwendung kombinieren lässt. Das soll als Anlass dienen, sowohl periodische als auch asynchrone Ausführung, z.B. durch Message-Queue Nachrichten in Kombination mit Method Security darzustellen.

Layer eines Container Image bestimmen 28 Jun

Geschrieben von Thomas Kruse am 28. Juni 2024
Container Image Layer Grafik

Container Image sind dank OCI Standard und Verbreitung von Docker und Kubernetes zu dem Mittel der Wahl geworden, um Anwendungen zu verteilen. Dabei verwenden Container Runtimes wie Docker ein geschicktes Verfahren zur Deduplizierung von Daten: Ein Container Image ist in Layer aufgeteilt und diese können unabhängig voneinander verteilt und gespeichert werden.
Da die Layer selbst nicht veränderlich sind, können Layer wiederverwendet werden.

Typischerweise finden sich auch viele Gemeinsamkeiten: Die verwendete Basisdistribution, Laufzeitumgebungen wie Python oder Java und ggf. auch firmenspezifische Konfigurationen wie TLS Zertifikate.

Dabei muss ein Tradeoff beachtet werden: Je mehr Layer, desto mehr Overhead entsteht durch sie. Gleichzeitig ist es um so wahrscheinlicher, dass bei feingranularen Image Layern eine gute Wiederverwendbarkeit ermöglicht wird.

Bei der Auswahl von Base-Images, auf die eigene Anwendungsimages aufgebaut werden sollen, gilt es also darauf zu achten, dass diese möglichst geschickt augeteilt sind und nicht nur aus einem Layer bestehen, der stets vollständig neu geladen und gespeichert werden muss, wenn es Aktualisierungen gibt, aber auch nicht aus zehn oder mehr Layern.

Zur Bestimmung der Anzahl der Layer gibt es verschiedene Ansätze. Am Beispiel eines Java Basisimages, openjdk, werden diese im folgenden betrachtet.

CSP Nonce Header für Angular Anwendungen mit nginx Container 20 Jun

Geschrieben von Karsten Sitterberg am 20. Juni 2024
Angular

Durch CSP Header (Content Security Policy) lassen sich verschiedene Funktionen des Webbrowsers konfigurieren, um das Verhalten von Nachladen und auch Ausführen zusätzlicher oder dynamischer Inhalte zu beeinflussen. Damit lassen sich typische Einfallstore für Angriffe wie Cross-Site-Scripting (XSS) wirksam abstellen.
Ist die Webanwendung jedoch eine Single Page Anwendung (SPA) und auf dynamische Erzeugung von Inhalten angewiesen, führt eine globale Deaktivierung der Dynamik dazu, dass die Anwendung nicht mehr funktioniert. Es stellt sich daher die Frage, wie zwischen guten und potentiell schädlichen externen und dynamischen Inhalten unterschieden werden kann.

Dazu ist in allen Browsern inzwischen ein Verfahren implementiert, mit dem Entwickler solche Inhalte, die erwünscht sind, expliziert markieren können: sogenannte "Nonce" Markierungen. Aktuelle Frameworks, so auch Angular, bringen dazu auch speziellen Support mit.
Die Implementierung wird in diesem Beitrag anhand von nginx gezeigt.

Container Image Signing 15 Jun

Geschrieben von Thomas Kruse am 15. Juni 2024
Kubernetes

Container Images sind inzwischen etabliert, um darüber Anwendungen bereitzustellen. Durch das standardisierte Format, einheitliche Schnittstellen und das insgesamt bestehende Ökosystem wird es sehr einfach, Artefakte zu konsumieren und auch bereitzustellen. Jedoch hat das auch Konsequenzen: Die Verantwortung für Patchmanagement, Fehlerbehebungen und Security-Updates verschiebt sich zum Anbieter der jeweiligen Images, da diese mehr, als lediglich die Anwendung selbst beinhalten. Gleichzeitig obligt es dem Konsumenten bzw. Nutzer der Images, sicherzustellen, dass diese aus einer vertrauenswürdigen Quelle stammen und auch nicht zwischendurch verändert wurden.
Diese Aspekte der "Supply-Chain-Security", einem Unterbereich der IT-Sicherheit im Kontext von Containeranwendungen wollen wir uns in diesem und folgenden Artikel widmen.

Los geht's!

Bitte teilen Sie uns mit, wie wir Sie am besten erreichen können.