gemSpec_ZETA_V1.3.0


Telematikinfrastruktur 2.0





Spezifikation

Zero Trust Access (ZETA)


Version1.3.0
Revision1573785
Stand17.04.2026
Statusfreigegeben
Klassifizierungöffentlich
ReferenzierunggemSpec_ZETA


Dokumentinformationen

Änderungen zur Vorversion

Anpassungen des vorliegenden Dokumentes im Vergleich zur Vorversion können Sie der nachfolgenden Tabelle entnehmen.

Dokumentenhistorie

Version
Stand
Kap./ Seite
Grund der Änderung, besondere Hinweise
Bearbeitung
1.0.0 28.02.2025 initiale Erstellung gematik
1.1.0 06.08.2025 Einarbeitung ZETA_25_2 gematik
1.2.0 05.12.2025 Einarbeitung ZETA_25_3 gematik
1.3.0 17.04.2026 Einarbeitung ZETA_26_1  gematik

Inhaltsverzeichnis

1 Einordnung des Dokuments

Dieses Dokument stellt eine übergreifende Spezifikation dar, ohne einen konkreten Bezug zu einem Produkttypen herzustellen. Anforderungen dieses Dokuments werden Produkttypen, Schnittstellen, Komponenten oder Diensten von konkreten Use Cases bzw. von Fachanwendungen zugewiesen.

Die in diesem Dokument beschriebenen Konzepte, Abläufe und Informationsmodelle dienen der Umsetzung der Paradigmen des Zero Trust in der "Telematikinfrastruktur 2.0".

Das Zero Trust-Modell ist ein Sicherheitskonzept, das auf dem Prinzip strenger Zugriffskontrollen und dem grundsätzlichen Misstrauen (kein implizites Vertrauen) gegenüber jedem Kommunikationsteilnehmer beruht, selbst denen, die sich bereits innerhalb eines Netzwerkperimeters befinden. Es handelt sich um ein Sicherheitsrahmenwerk, das erfordert, dass alle Nutzer und deren Clients (Gerät und App), sowohl innerhalb als auch außerhalb der Netzwerkperimeter, authentifiziert, autorisiert und kontinuierlich auf ihre Sicherheitskonfiguration und Sicherheitsnachweise überprüft werden, bevor ihnen Zugriff auf Anwendungen und Daten gewährt oder dieser aufrechterhalten wird. Motiviert durch den „Assume Breach“-Ansatz basiert dieses Architekturdesign-Paradigma im Kern auf dem Prinzip der minimalen Rechte aller Entitäten in der Gesamtinfrastruktur.

1.1 Zielsetzung

Ziel des Dokuments ist die Sammlung der technischen, betrieblichen und testrelevanten Anforderungen an Clients, Komponenten und Dienste, die Zero Trust-Aspekte beinhalten oder nutzen.

Das Ziel des Zero Trust-Ansatzes besteht darin, die IT-Sicherheitslandschaft grundlegend zu transformieren, um den Schutz von Daten, Anwendungen und Systemen vor modernen Bedrohungen und Angreifern zu gewährleisten. Im Gegensatz zu traditionellen Sicherheitsmodellen, die auf dem Konzept eines sicheren Perimeters basieren, setzt Zero Trust auf die Annahme, dass keine Nutzer oder Systeme, unabhängig von ihrem Standort innerhalb oder außerhalb des Netzwerks, von Natur aus vertrauenswürdig sind.

1.2 Zielgruppe

Dieses Dokument richtet sich an Architekten und Entwickler von Komponenten, Diensten, Produkttypen, Schnittstellen und Clients für den Datenaustausch im deutschen Gesundheitswesen.

1.3 Abgrenzungen

Diesem Dokument ist kein Produkt- oder Anbietertyp zuzuordnen. Anforderungen in diesem Dokument finden Anwendung in Produkt- und Anbietertypen von konkreten Fachanwendungen bzw. Use Cases.

1.4 Methodik

1.4.1 Anforderungen

Anforderungen als Ausdruck normativer Festlegungen werden durch eine eindeutige ID sowie die dem [RFC2119] entsprechenden, in Großbuchstaben geschriebenen deutschen Schlüsselworten MUSS, DARF NICHT, SOLL, SOLL NICHT, KANN gekennzeichnet.

Da in dem Beispielsatz „Eine leere Liste DARF NICHT ein Element besitzen.“ die Phrase „DARF NICHT“ semantisch irreführend wäre (wenn nicht ein, dann vielleicht zwei?), wird in diesem Dokument stattdessen „Eine leere Liste DARF KEIN Element besitzen.“ verwendet. Die Schlüsselworte werden außerdem um Pronomen in Großbuchstaben ergänzt, wenn dies den Sprachfluss verbessert oder die Semantik verdeutlicht.

Anforderungen werden im Dokument wie folgt dargestellt:
<AFO-ID> - <Titel der Afo>
Text / Beschreibung
[<=]

Dabei umfasst die Anforderung sämtliche zwischen Afo-ID und Textmarke [<=] angeführten Inhalte.

2 Features und Epics

Der folgende Abschnitt gibt einen groben Überblick über die Features und Epics, die sich in Anwendungen wiederfinden, wenn sie nach dem Paradigma des Zero Trust umgesetzt werden. Diese Epics sind als Enabler zu verstehen, um Fachanwendungen einen sicheren Verbindungsaufbau zwischen Clients und Backenddiensten zu ermöglichen. Es werden keine User Stories formuliert, da für den Verbindungsaufbau keine Nutzerinteraktion angedacht ist.

Im Rahmen der Nutzeridentifikation (Authentifizierung) findet eine Verifikation ausgegebener Authentisierungsmerkmale statt, deren Nutzerinteraktion als Teil der Spezifikation des Identity Managements beschrieben sind.

2.1 Client-Registrierung

Gemäß des Zero Trust-Ansatzes ist jeder Schnittstellenaufruf potentiell gefährlich, soweit nicht anders festgestellt. Dazu zählt auch das Vertrauen in bekannte bzw. Misstrauen in unbekannte Clients. Clients sind hier als Kombination aus Gerät (z. B. PC oder mobile Device) und App (Client-Software wie FdV oder Primärsystem)  definiert. Um Clients wiedererkennbar zu machen, muss eine Registrierung dieser erfolgen. Sind in der Registrierung zusätzliche Sicherheitsmerkmale über den Client und den Aufrufkontext feststellbar, stärken diese das Vertrauen in nachfolgenden Aufrufen fachlicher Schnittstellen.

2.1.1 Wiedererkennung bekannter Clients

Die Wiedererkennung bekannter Clients und deren Bindung an identifizierbare Nutzer des Gesundheitswesens muss über eine Registrierung erfolgen. Die Identifikation des Nutzers erfolgt dabei über ein unterstütztes Identifikationsmerkmal (SmartCard oder digitale Identität) und einen selbstgewählten, vom System unterstützten zweiten Faktor (E-Mail, SMS, etc.).

2.1.2 Client-Attestation

Die Client-Attestation dient dem Nachweis der Integrität einer Client-Instanz (z. B. einer Frontend-Applikation oder eines Primärsystems) gegenüber einem ZETA Guard. Im Rahmen der Client-Registrierung reicht der Client einen kryptografisch signierten Nachweis ein, der belegt, dass die Anwendung nicht durch unbefugte Dritte modifiziert wurde (Integrität).

Dieser Mechanismus ist ein wesentlicher Bestandteil des Zero-Trust-Modells der TI 2.0, um den Missbrauch von Client-Identitäten durch manipulierte Software oder automatisierte Skripte zu verhindern.

Die ZETA Client-Attestation erfolgt nach [RFC9334].

2.1.3 Device Security Rating

Zum Einschluss bzw. Ausschluss bestimmter Eigenschaften von Clients, sollen selbige einer automatischen Sicherheitsprüfung unterzogen werden können (Device Security Rating - DSR), soweit es die gegebenen Plattformmechanismen erlauben.

2.2 Policy Enforcement

Für den Zugriff auf personenbezogene und medizinische Daten und zur Sicherstellung der Integrität, Verfügbarkeit, Vertraulichkeit und Authentizität transportierter Daten gelten Regeln. Diese fachlichen, technischen und organisatorischen Regeln gelten bei jedem Zugriff auf Daten, die über eine Schnittstelle zugreifbar gemacht werden.

2.2.1 Zugriffsschutz

Das Policy Enforcement soll als eine Art Gatekeeper bzw. Türsteher den Zugriff auf Schnittstellen von Backendservices durch beliebige Clients durchsetzen. Grundlage ist das Vertrauen in eine Policy-Entscheidung durch eine Komponente zur Auswertung eines Regelwerks.

2.2.2 HTTP Proxy

Der HTTP Proxy stellt sicher, dass nur Requests mit gültigem Access Token sowie bestandenen zusätzlichen Prüfungen an den Resource Server weitergeleitet werden. Welche Prüfungen zusätzlich erfolgen, wird über Attribute im Access Token gesteuert.

2.3 Decide from Policies

Die Menge an Regeln für die Gewähr eines Zugriffs auf Daten oder Schnittstellen speist sich aus gesetzlichen Forderungen bzw. Verboten, Vertragskonstrukten, Sicherheitsmechanismen, Architekturentscheidungen und Informationen aus der "Umgebung" des Betriebs von Clients und Backendservices.

2.3.1 Maschinenlesbare Zugriffsregeln

Die Menge (potentiell) geltender Regeln zur Absicherung des Zugriffs auf Daten und Dienste formt ein Set von Policies. Um im Fall eines Zugriffsversuchs schnell entscheiden zu können, sollen diese Regeln maschinenlesbar definiert sein. Die Regeln sollen zusätzlich menschenlesbar sein, um die Entwicklung und Wartung der Regeln zu vereinfachen.

2.3.2 Ein reproduzierbares Ja/Nein

Die Auswertung eines komplexen Regelwerks liefert bei identischen Eingangsparametern reproduzierbar das identische Ergebnis.

2.3.3 Policies nach Betroffenheit

Regeln beziehen sich auf verschiedene Aspekte einer Zugriffsentscheidung. Es gelten fachliche Regeln, Regeln zur Benutzung von Clients und ebenso technische Regeln sowie solche, die Betriebsumgebung von Backenddiensten betreffend.

2.4 Policy-Information und -Administration

Die Aufgabe des Policy Information Point (PIP) ist es, relevante Attribute und Informationen zur Entscheidungsfindung (Daten) zu liefern, während der Policy Administration Point (PAP) für die Verwaltung und Bereitstellung der Richtlinien (Policies) verantwortlich ist.

2.4.1 Policy-Verwaltung

Eine Policy-Entscheidung kann Eingangsinformation für andere Policies sein, ebenso kann das Ändern von Rahmenbedingungen oder eine Anomalie-Erkennung zur Beeinflussung von Policies führen. Aus diesem Grund führen Beobachtungen über Policy-Entscheidungen zu Informationen über das Gesamtsystem, die als Eingangsdaten für nachfolgende Policy-Entscheidungen herangezogen werden. Daneben ist es erforderlich, Anpassungen am Regelwerk dem System über authentizitäts- und integritätsgeschützte Wege bekannt zu machen.

2.4.2 Monitoring

Durch ein Monitoring von Betriebsparametern und Telemetriedaten wird die Durchsetzung von Policies sowie die Auswirkung möglicher Policy-Änderungen transparent.

2.5 Authorization

Die Autorisierung (Authorization) beschreibt innerhalb von ZETA den Prozess der Prüfung und Erteilung von Zugriffsrechten auf geschützte Ressourcen. Während die Authentisierung die Identität eines Nutzers oder Systems feststellt, definiert die Autorisierung, welche Operationen dieser Teilnehmer auf welchen Daten oder Diensten ausführen darf.

In ZETA Guard bildet die Autorisierung den Kern der Zugriffskontrolle. Ziel ist es, das Prinzip der minimalen Rechtevergabe (Principle of Least Privilege) konsequent umzusetzen.

2.5.1 Autorisierung auf Basis von Policy-Entscheidungen

Die Autorisierung von Zugriffen auf Daten oder Schnittstellen wird bei positiver Entscheidung durch ein Set von Policies gewährt. Die Zugriffsentscheidung und -gewähr bettet sich in eine Verkettung von Informationen und von Aufrufen verschiedener Schnittstellen ein, die dem fachlichen Aufruf einer Schnittstelle bzw. Abruf von Daten voranstehen. Stand der Technik dieses Flows mehrerer Aufrufe und der dabei transportierten Informationen ist der OAuth2-Standard, vgl. [RFC6749 et al.].

2.5.2 Client Authentication

Menschen und Clients werden anhand sicherer Merkmale authentifiziert, die Identifikation ist nachrangig bzw. in nachgelagerten fachlichen Anwendungsfällen bzw. in fachlichen Zugriffsregeln relevant.

Kann ein Mensch oder Client nicht sicher authentifiziert werden oder wird der Authentifizierung zeitlich oder anderweitig nicht vertraut oder passen die Umgebungs- bzw. die den Aufruf begleitenden Parameter nicht zum Vertrauen in die Authentifizierung, wird eine erneute Authentifizierung als erforderlich angesehen ("Step-Up-Authentication").

3 Einordnung in die TI 2.0

Die TI 1.0 bildet eine Infrastruktur, deren Sicherheit auf der sicheren Zugangskontrolle zu einem geschlossenen zentralen Netzwerk mit Diensten beruht. In der TI 2.0 werden die Dienste dezentral im Internet angeboten und bedürfen daher eines Schutzes vor unberechtigtem Zugriff pro Dienst. Dieser Schutz wird nach dem Zero Trust-Paradigma durch den Policy Enforcement Point und den Policy Decision Point durchgesetzt.

Diese übergreifende Spezifikation richtet Anforderungen an Akteure, die sich über das Internet miteinander vernetzen. Diese Akteure seien im Folgenden einerseits Clients (Software: Aufrufende einer Schnittstelle, Anfragende an einen Datenabruf oder -zugriff, wird auf einem bestimmten Client ausgeführt), häufig bedient durch einen Menschen, und Backendservices (Software: bereitstellende Schnittstelle, Datenbereitstellung etc.) auf der anderen Seite.

Zur Absicherung der Clients und Backendservices werden Anforderungen erhoben, die in konkreten Softwarekomponenten innerhalb dieser Akteure umzusetzen sind. Die Separierung der Zero Trust-Mechanismen in unterschiedliche Komponenten folgt der Zero Trust-NIST-Referenzarchitektur.

Abbildung 1: NIST Zero Trust-Referenzarchitektur, Quelle [NIST_SP1800-35_FIG1]

Im Architekturkonzept der TI 1.0 werden konkrete Umgebungsannahmen zu Consumer Zonen, Secure Consumer Zonen, Plattformzonen, Personal Zonen usw. getroffen, in denen kein (Personal Zone) bzw. ein gewisses Sicherheitsniveau (überall sonst) axiomatisch angenommen wird. Das Zero Trust-Konzept löst sich von der Aufteilung in verschiedene Zonen, insbesondere, da keine TI-Plattform-Produkttypen in der Kommunikation zwischen Clients mit Diensten involviert werden.

3.1 ZETA als Umsetzung der Zero Trust Architektur

Im Folgenden ist eine generische Produkttypzerlegung für die Umsetzung der Zero Tust-Referenzarchitektur einer TI 2.0- Fachanwendung dargestellt. Die Zero Trust Ausprägung der Telematikinfrastruktur wird Zero Trust Access (ZETA) genannt.

In diesem Pattern greift ein Nutzer über einen Clientsystem (inkl. ZETA Client) auf Daten eines TI 2.0-Dienstes zu. Ein Nutzer wird hier als der Akteur definiert, der einen TI 2.0-Dienst nutzt. Dabei kann es sich um einen Versicherten oder um einen Mitarbeiter in einer Organisation des Gesundheitswesens handeln (z. B. LEI, LEO, Krankenkasse). Ein TI 2.0-Dienst setzt sich zusammen aus einem ZETA Guard und mindestens einem Resource Server. Der ZETA-Guard wird als eingebettetes Modul engmaschig mit dem Resource Server verbunden und vom Anbieter des TI 2.0-Dienstes zwingend mit betrieben. Der Anbieter implementiert zusätzliche Komponenten, um seine Infrastruktur vor Angriffen aus dem Internet zu schützen und um die Zugriffe zu optimieren (z. B. Content Delivery Network, eigener Ingress und Load Balancer, Web Application Firewall). Das folgende Bild zeigt eine Übersicht der beteiligten Komponenten in der Vernetzung zwischen einem Clientsystem (links grün) und einem Backendservice (rechts grün: Resource Server).


Abbildung 2: Abbildung Zero Trust-Architektur der TI 2.0


Die obige Abbildung zeigt die Einbettung von ZETA bezogenen, logischen Komponenten (orange) in die Aufrufkette zwischen einem Clientsystem und einem Resource Server (grün). Darüber hinaus soll durch die roten und gestrichelt umrandeten Komponenten hervorgehoben werden, dass je nach Einsatzumgebung und Anforderungen an die Umgebung verschiedene Deployment-Szenarien unterstützt werden. Dargestellt sind zusätzlich heute bereits vorhandene und genutzte Komponenten und Dienste, die für die Nutzerauthentifizierung (z. B. eGK und IDP) bzw. die Betriebsüberwachung (z. B. mittels gematik Telemetriedaten Empfänger) in Anwendungsfällen der TI 2.0 weitergenutzt werden können (grau). In diese Abbildung sind diverse Architekturentscheidungen eingearbeitet, die im Kapitel 4 und 5 erläutert bzw. spezifiziert werden. 

3.2 Kurzbeschreibung der Komponenten

Zu ZETA gehören ZETA Guard, ZETA Client und die ZETA Artifact Registry. Der ZETA Client implementiert clientseitig die Schnittstellen des ZETA Guard und die Attestation-Funktionen des Clientsystems. Der ZETA Client wird von einem Fach-Client initialisiert und mit fachlichen HTTP Requests aufgerufen. ZETA Client führt alle Schritte aus, um ein Access Token vom ZETA Guard zu erhalten, um dann mit diesem Access Token den Request vom Fach-Client an den ZETA Guard zu senden. Die Response wird an den Fach-Client weitergeleitet. Die ZETA Artifact Registry stellt signierte Images für die ZETA Guard Komponenten sowie signierte Policies und Daten für die ZETA Guard Policy Engine bereit. Zusätzlich werden Provisioning Daten wie aktuelle TSL und TPM Hersteller-Stammzertifikate bereitgestellt.

ZETA Guard besteht aus folgenden Komponenten:

  • PEP HTTP Proxy: Die zentrale Durchsetzungsinstanz für den Datenverkehr.
  • PDP Authorization Server: Die Instanz zur Ausstellung von Access Token und Session-Management.
  • PDP Policy Engine (OPA): Die Komponente zur Auswertung der Zugriffsregeln.
  • Telemetriedaten-Service: Der OpenTelemetry Collector für sicherheitsrelevante Ereignisse, Traces, Log-Daten und Metriken.
  • Notification Service: Optionale ZETA Guard Komponente zur einheitlichen Bereitstellung von Notification-Funktionen für mobile Clients.
  • PDP Datenbank: Persistenzschicht für Sessions sowie Nutzer- und Client-Daten.
  • HSM Proxy: Schnittstelle zu den ZETA Guard Komponenten und das Hardware-Sicherheitsmodul des Anbieters.
  • Local Artifact Registry Cache: Lokales Repository zur Bereitstellung der Images innerhalb der Anbieter-Umgebung.
  • Gateway oder Ingress und Egress: Netzwerk-Einstiegspunkt für den Kubernetes Cluster und kontrollierter Grenzübergang für den ausgehenden Verkehr.
  • Admission Controller: Hilfskomponente, die Anfragen an den Kubernetes API Server überwacht um Security Policies (wie z. B. die Prüfung der Image-Signatur, bevor ein Image ausgeführt werden kann) durchzusetzen.
  • Service Mesh: Infrastrukturschicht, die die Kommunikation zwischen den einzelnen Microservices innerhalb eines Clusters steuert, sichert und überwacht.

3.3 Kurzbeschreibung der Schnittstellen

(1) Die ZETA Guard Instanz wird beim TI Federation Master registriert. Dadurch wird die Zugehörigkeit des ZETA Guard zur TI (in einer bestimmten Umgebung wie Prod, Ref oder Test) durch Signatur des Federation Masters verifizierbar. In einer Folgeversion wird ZETA Guard im Authorization Server Well-known ein Trustmark vom Federation Master enthalten, das die Zugehörigkeit zur TI nachweist.

(2) Die gematik stellt eine ZETA Artifact Registry bereit, die Helm Charts, Images für die ZETA Guard Komponenten und Provisioning Images als OCI Container Images bereitstellt. Alle Images haben eine Signatur mit einer gematik Identität. Anbieter von TI 2.0-Diensten betreiben einen lokalen Artifact Registry Cache, der die ZETA OCI Images direkt in der Umgebung des Anbieter verfügbar macht. In einer Folgeversion wird der Local Artifact Registry Cache Teil von ZETA Guard, um die Anbieter von TI 2.0 Diensten zu entlasten.

(3) Die Policy Engine erhält die Policies und Daten direkt aus der ZETA Artifact Registry.

(4) Die Schnittstelle des HSM Proxy Richtung ZETA Guard Komponenten ist spezifiziert und ermöglicht die einheitliche Anbindung von HSMs verschiedener Hersteller. Der HSM Proxy enthält aktuell nur Funktionen, die von ZETA Guard Komponenten benötigt werden. Grundsätzlich soll der HSM Proxy auch Komponenten des Resource Servers den einheitlichen Zugriff auf HSMs ermöglichen. Fehlende Funktionen werden nach Bedarf ergänzt.

(5) Falls eine Mandantentrennung verwendet wird, dann kann der Fachclient durch Abfrage eines Well-known JSON-Dokuments die zu verwendende URL des Resource Servers ermitteln.

(6) Der ZETA Client bietet dem Fach-Client Operationen zur Initialisierung und zum Versenden von HTTP Requests an. Das heißt, der Fach-Client erstellt einen vollständigen HTTP Request inkl. fachlich benötigter Header und ruft den ZETA Client zur Ausführung des Requests auf. Der ZETA Client ermittelt aus der URL des HTTP Requests im ersten Schritt die Well-known Metadaten des Resource Servers und des Authorization Servers und konfiguriert sich für die Nutzung der ZETA Guard Instanz.

(7) Aus dem Authorization Server Well-known hat der ZETA Client die Endpunkte für die Client-Registrierung und Autorisierung ermittelt und beginnt den OAuth Flow.

(8) Bei mobilen Clients erfolgt eine Trust On First Use Bindung des Clients an eine E-Mail-Adresse des Nutzers.

(9) Der Nutzer muss einen Code aus der Mail vom ZETA Guard im mobilen Clients eingeben, um den Registrierungsprozess des mobilen Clients fortzusetzen.

(10) Bei Primärsystemen erfolgt die Authentifizierung des Nutzers (hier der Organisation) durch ein SMC-B-signiertes Token per OAuth Token Exchange. Die Signatur kann durch Nutzung eines Konnektors oder TI Gateways aber auch durch Nutzung eines direkt am Primärsystem angeschlossenen Kartenterminals erfolgen.

(11), (12) Mobile Nutzer werden mit Hilfe des sektoralen IDPs und des OIDC Flows authentifiziert.

(13) Nachdem die Session-, Client- und Authentifizierungsdaten am Authorization Server validiert wurden, werden diese Daten an die Policy Engine übergeben. Die Policy Engine wendet die Daten auf die Policies und vorgegebenen Wertebereiche an, ermittelt eine Entscheidung und sendet die Entscheidung an den Authorization Server.

(14) Wenn eine Anwendung eine zusätzliche Authorization benötigt, dann wird der Authorization Server so konfiguriert, dass das Authorization Backend für weitere Autorisierungs-Schritte angefragt wird.

(15) Der Authorization Server speichert seine Session-, Client- und Userdaten in der PDP Datenbank. Wenn die Policy Engine eine "Allow"-Entscheidung gefällt hat und auch kein Verbot vom Authorization Backend vorliegt.

(16) Der ZETA Client sendet einen Request Richtung Resource Server. Der HTTP Proxy erlaubt den Zugriff auf Daten des Resource Servers, wenn ein gültiges Access Token im Authorization Header enthalten ist.

(17) Nach erfolgreicher Prüfung des Access Token und des DPoP Token (wenn vorhanden auch des PoPP Token) erfolgt die Weiterleitung des Requests zum Resource Server. Falls ZETA/ASL verwendet wird, erfolgt zuerst der ASL-Verbindungsaufbau.

(18) Vom Resource Server werden Traces und die Selbstauskunft an den Telemetriedaten-Service gesendet. Der Telemetriedaten-Service empfängt von allen ZETA Guard Komponenten Traces, Logs und Metriken. Die Verbindungspfeile dafür sind nicht dargestellt. Zum Einsatz kommt OpenTelemetry. Alle von OpenTelemetry unterstützten Protokolle können vom Anbieter durch Konfiguration des Telemetriedaten-Service verwendet werden, um Daten an den Telemetriedaten-Service zu senden und vom Telemetriedaten-Service zu empfangen. Empfohlen wird das native OTLP Protokoll über gRPC.

(19) Der Telemetriedaten-Service empfängt vom SIEM des TI 2.0-Dienst-Anbieters Security Events.

(20) Der Telemetriedaten-Service kann Monitoring-Daten der ZETA Guard-Komponenten an das Monitoring des TI 2.0-Dienst-Anbieters senden.

(21) Traces, Metriken und Log Events werden an den Telemetriedaten-Empfänger der gematik weitergeleitet.

(22) Security Events werden an das TI SIEM der gematik weitergeleitet.

(23) Das Clientsystem kann über den ZETA Client eine Push-Konfiguration im ZETA Guard Notification Service einrichten.

(24) (25) Wenn Ereignisse eintreten, für die der Resource Server eine Push Nachricht für den Nutzer generiert, dann werden entsprechend der vorhandenen Push-Konfigurationen des Nutzers im Notification Service, Benachrichtigungen an den Client gesendet.

(26) Über den Clientsystem Notification Service (und hier nicht dargestellte Notification Services des mobile OS Herstellers) werden Notifications an das Clientsystem gesendet.

(27) Mittels Shared Signals kann das Monitoring (oder eine andere Komponente des TI 2.0-Dienst-Anbieters) die Session eines Clients beenden und somit eine neue Authentifizierung erzwingen. Aktuell ist die Shared Signals Unterstützung durch SIEM Systeme und Infrastrukturkomponenten noch nicht hinreichend gegeben. Daher werden Shared Signals bis auf weiteres noch nicht von ZETA unterstützt.

(28) Der Kubernetes Cluster bezieht seine Deployment-Images aus dem lokalen Artifact Registry Cache sowie die Provisioning Daten für ZETA Guard (TSL, roots.json, TPM-Hersteller Stammzertifikate, Federation Master URL).

Der Admission Controller setzt durch, dass nur von der gematik signierte OCI Container Images der ZETA Guard Kernkomponenten ausgeführt werden können.

Über ein Service Mesh kann sichergestellt werden, dass nur die Komponenten, die miteinander kommunizieren dürfen, eine Verbindung zueinander aufbauen können.

Der optionale Management Service überwacht die Konfiguration der ZETA Guard-Komponenten und setzt durch, dass die im Git Repository der ZETA Guard Instanz gespeicherte Konfiguration ausgeführt wird. Dadurch wird ein Configuration-Drift unterbunden.

4 Technisches Konzept

Im Kapitel zuvor wurden zwei Abbildungen vorgestellt, welche technischen ZETA Guard-Komponenten (orange) an der Umsetzung fachlicher Anwendungsfälle von Clients, Komponenten und Backendservices von Fachanwendungen (grün) beteiligt sind. Im Folgenden werden diese technischen Komponenten genauer beschrieben und eingeordnet, welche Rolle sie in einer Architektur nach dem Zero Trust-Paradigma einnehmen.

Zero Trust in der TI zeichnet sich über folgende Eigenschaften aus:

  • Registrierung des Clients (Gerät und App) zu einer Identität
  • Attestation der Client-Eigenschaften
  • Bereitstellung einer von Maschinen interpretierbaren Policy durch die gematik
  • Einheitliches Durchsetzen der Policy durch den ZETA Guard
  • Sicherstellung des Sicherheitszustands der gesamten TI, Anbieter übergreifend
  • Telemetrie und Monitoring

4.1 ZETA Guard

Der ZETA Guard besteht aus Policy Enforcement Point (PEP), Policy Decision Point (PDP) sowie betriebsunterstützenden Komponenten (Management Service und Telemetriedaten Service). Der PEP besteht aus einem HTTP Proxy. Der PDP enthält die Policy Engine, den Authorization Server und eine Datenbank. Jeder TI 2.0 Dienst hat einen ZETA Guard zum Schutz des Dienstes vor unberechtigtem Zugriff. Der ZETA Guard wird in der Verantwortung des TI 2.0-Dienst-Anbieters betrieben.

4.2 Policy Enforcement Point (PEP)

Ein Policy Enforcement Point (PEP) ist eine Schlüsselkomponente im Zero Trust-Paradigma, der darauf abzielt, dass Sicherheitsmodell von einem vertrauensbasierten auf ein verifizierungsbasiertes umzustellen. Der PEP dient dazu, den Zugriff auf Ressourcen, basierend auf vordefinierten Richtlinien, zu kontrollieren und durchzusetzen. Im Kontext der TI 2.0 übernimmt der PEP folgende Funktionen:

  • Der PEP agiert als HTTP Proxy, der den Datenverkehr zwischen Clientanwendungen und den zu schützenden Ressourcen kontrolliert. Dadurch kann der PEP den gesamten Datenverkehr überwachen und filtern, um sicherzustellen, dass er den festgelegten Sicherheitsrichtlinien entspricht.
  • Der PEP stellt die Außenschnittstelle des Dienstes dar, in den er integriert ist.

Insgesamt agiert der PEP als Kontrollpunkt in der Zero Trust-Architektur, der sicherstellt, dass nur autorisierte Nutzer und Clients Zugriff auf die Ressourcen eines Dienstes erhalten und dass dabei die definierten Sicherheitspolicies eingehalten werden. Die Entscheidung zwischen verschiedenen Policies auf Basis der vom Client übergebenen Signale, Sicherheitsnachweise und Token trifft der Policy Decision Point. Am PEP werden Betriebsdaten erhoben, verarbeitet und dem Telemetriedaten Service im ZETA Guard zur Verfügung gestellt.

4.3 Policy Decision Point (PDP)

Ein Policy Decision Point (PDP) ist die wesentliche Komponente im Zero Trust-Paradigma, die Zugriffsentscheidungen trifft, indem sie Richtlinien (Policies) interpretiert und anhand dieser Richtlinien Zugriffsanfragen bewertet. Folgende Funktionen eines PDP sind von besonderer Bedeutung:

  • Der PDP fungiert als OAuth2 Authorization Server und verwaltet die Autorisierung von Nutzeranfragen auf geschützte Ressourcen. Zudem überwacht der Authorization Server die Nutzersessions, um sicherzustellen, dass sie gültig sind und den Sicherheitsrichtlinien entsprechen. Der Authorization Server ist als vertrauenswürdige Relying Party im föderierten Identitätsmanagement registriert. Dadurch kann der Authorization Server Identitätsinformationen von Nutzern sicher und vertrauenswürdig beziehen und bei Bedarf eine (erneute) Nutzerauthentifizierung an die IDPs delegieren. Der Authorization Server stellt sicher, dass nur authentifizierte Nutzer mit registrierten Clients Zugriff auf die geschützten Ressourcen erhalten.
  • Der PDP ermöglicht am Authorization Server die dynamische Registrierung von Clients, die auf geschützte Ressourcen zugreifen möchten. Dies umfasst auch die Offband-Bestätigung, bei der zusätzliche Sicherheitsmechanismen (Verifikation via E-Mail) verwendet werden, um die Identität und Integrität (plattformabhängig) der registrierten Clients zu überprüfen.
  • Der PDP analysiert und interpretiert in der Policy Engine die Sicherheitsrichtlinien, die im Rahmen des Zero Trust-Modells definiert sind. Diese Policies können Kriterien wie Nutzeridentität, Gerätetyp, Standort, Zeitpunkt der Anfrage und andere Kontextinformationen ("Signale") enthalten, die relevant für die Zugriffsentscheidung sind. Basierend auf der Interpretation der Policies trifft die Policy Engine Entscheidungen darüber, ob eine Zugriffsanfrage auf eine bestimmte Ressource genehmigt oder abgelehnt wird. Diese Entscheidungen erfolgen auf Plattformebene, was bedeutet, dass die Policy Engine die Zugriffsanfragen im Kontext der gesamten Plattform oder des Netzwerks bewertet, und nicht isoliert betrachtet. Die Zugriffsentscheidung resultiert dann in der Ausstellung eines Access Token, das für den konkret angefragten Zugriff verwendet wird (siehe Policy Enforcement).
  • Die Policy Engine verwendet dabei die Informationen, die sie von der ZETA Artifact Registry bezieht und die Daten der Zugriffsanfrage vom Authorization Server, um die Zugriffsentscheidung zu treffen. Dazu gehören nicht nur die Policies selbst, sondern auch Echtzeitinformationen über den Zustand von Nutzeridentitäten, Clients und andere Kontextinformationen, die für die Bewertung der Zugriffsanfrage relevant sind.

Am PDP werden Betriebsdaten erhoben, verarbeitet und dem Telemetriedaten Service im ZETA Guard zur Verfügung gestellt.

4.4 ZETA Client

Im Kontext von Zero Trust der TI stellt der "ZETA Client" eine logische Komponente innerhalb einer Clientanwendung (Primärsystem (PS), Frontend des Versicherten (FdV) etc.) dar.

Ein ZETA Client im Zero Trust-Modell wird nicht als vertrauenswürdig angesehen, sondern muss - genauso wie alle Komponenten im Netzwerk - kontinuierlich authentifiziert und autorisiert werden. Die Zugriffsentscheidungen werden basierend auf aktuellen Richtlinien, Kontextinformationen, Bedrohungsinformationen und insbesondere in Kenntnis des diesen Client benutzenden Nutzers getroffen.

Die Aufgaben des ZETA Clients sind:

  • Erzeugung, sichere Speicherung und Prüfung der kryptographischen App/Geräte Identität
  • Erzeugung der App/Gerät-Attestierung und Ermittlung und Übertragung der Eigenschaften der Laufzeitumgebung (Betriebssystem, Betriebssystem Version, etc.)
  • Implementierung des OAuth Flows
  • Management der Sessions inkl. Verwaltung der Access und Refresh Token.
  • Management der Client-Registrierungen

4.5 Policy-Information und -Administration

Im Zero Trust-Paradigma spielen der Policy Information Point (PIP) und der Policy Administration Point (PAP) wichtige Rollen bei der Verwaltung und Durchsetzung von Sicherheitsrichtlinien bzw. Policies. Zusammen ermöglichen der PIP und der PAP eine zentrale Verwaltung und Bereitstellung von Policies im Zero Trust-Netzwerk.

Der PAP stellt Policies bereit und der PIP stellt die Daten für die Policies bereit, sodass sich aus beiden ein Regelwerk ergibt, das die Policy Engine des PDP anwendet, um zu entscheiden, ob eine Kommunikationsanfrage zulässig ist.

4.5.1 Policy Information Point (PIP)

Der PIP ist für die Bereitstellung von Informationen über Sicherheitsrichtlinien zuständig. Er dient als zentraler Informationsdienst, der Policy Engines im Zero Trust-Netzwerk Zugriff auf aktuelle Sicherheitsrichtlinien ermöglicht. Der PIP kann Attribute wie Nutzerrollen, Zugriffsrechte, Clientzustände und andere Kontextinformationen bereitstellen, die von den Policy Engines für die Zugriffsentscheidung benötigt werden. Der PIP kann Daten aus verschiedenen Quellen beziehen, einschließlich einer zentralen Richtliniendatenbank, externen Identitätsanbietern, Sicherheitsinformationen von Clients und anderen Quellen.

4.5.2 Policy Administration Point (PAP)

Der PAP ist für die Verwaltung und Konfiguration von Sicherheitsrichtlinien verantwortlich. Er bietet eine Schnittstelle oder eine Konsole, über die Richtlinien in hoheitlicher Verantwortung definiert, geändert und gelöscht werden können. Policy-Administratoren können im PAP Zugriffsregeln, Autorisierungsniveaus, Bedrohungsabwehrmaßnahmen und andere Sicherheitsrichtlinien festlegen. Der PAP ermöglicht es Policy-Administratoren, Richtlinien - basierend auf verschiedenen Kriterien wie Nutzerrollen, Gruppenzugehörigkeit, Standorten und Clientattributen - zu differenzieren. Änderungen an den Sicherheitsrichtlinien, die im PAP vorgenommen werden, werden von den Policy Engines im Zero Trust Netzwerk übernommen. Das Vertrauen in bereitgestellte und angepasste Policies wird über Signaturen für die Sicherstellung von Integrität und Authentizität jeder Policy sichergestellt.

4.5.3 PIP und PAP Ausprägung in ZETA

In ZETA Guard wird als Policy Engine der Open Policy Agent (OPA) verwendet. OPA bezieht Policies (PAP) und Daten (Wertebereiche für die Policies; PIP) zusammengefasst (OPA Bundle) über ein OCI Container Image aus der ZETA Artifact Registry der gematik. Die einzelnen Dateien im OPA Bundle sind mit einer Identität der gematik signiert.

Dadurch reduziert sich die Bereitstellung der PIP und PAP Daten zu einem Download in einer OCI Registry. Die Anforderungen an den PIP und PAP Service (siehe 5.13 Policies und Daten) beziehen sich daher auf den Policies und Daten CI/CD-Prozess zur Entwicklung und Bereitstellung der Policies und Daten.

4.6 Client-Registrierung

Die Client-Registrierung dient dazu, eine konkrete Installation eines Clientsystems eindeutig zu identifizieren und, wenn möglich, mit einem Nutzer zu verknüpfen. Dabei werden sowohl statische Eigenschaften des Clientsystems als auch dynamische Eigenschaften der Client-Instanz übermittelt.

Die Clientattribute werden vom Client und von den Plattformen der Endgeräte geliefert. Ihre Erhebung erfolgt im ZETA Client des Endgeräts mittels plattformspezifischer Attestierungs- und Erhebungsmechanismen. Die Attribute sind daher für die jeweilige Plattform und ihr Sicherheitsmodell spezifisch. Siehe Kapitel 5.9 Client-Registrierungsdaten.

4.7 Monitoring

Das Monitoring im Kontext von Zero Trust ist ein entscheidender Aspekt, um die Sicherheit des Netzwerks und der Ressourcen kontinuierlich zu überwachen und potenzielle Bedrohungen oder Anomalien zu identifizieren.

4.7.1 Security Information and Event Management (SIEM)

SIEM-Systeme spielen eine zentrale Rolle im Monitoring im Zero Trust-Paradigma. Sie sammeln Daten aus verschiedenen Quellen wie Protokollen, Ereignissen und Alarmen von Sicherheitskomponenten im Netzwerk. Durch die Analyse dieser Daten in Echtzeit können SIEM-Systeme potenzielle Sicherheitsvorfälle erkennen und Anomalien identifizieren.

4.7.2 Shared Signals

Shared Signals [Shared Signals] sind Hinweise oder Indikatoren für Sicherheitsvorfälle, die von verschiedenen Systemen und Quellen im Netzwerk gemeinsam genutzt werden. Diese Signale können von verschiedenen Sicherheitskomponenten wie Firewalls, Endpunktschutzsystemen, Intrusion Detection Systems (IDS) und anderen generiert werden.

SIEM-Systeme aggregieren und korrelieren diese Signale, um umfassende Einblicke in die Sicherheitslage des Netzwerks zu erhalten und potenzielle Bedrohungen zu identifizieren. Durch die Integration von Shared Signals in das Monitoring kann eine umfassende und ganzheitliche Sicherheitsüberwachung gewährleistet werden, die potenzielle Angriffe frühzeitig erkennt und darauf reagiert.

Aktuell ist die Shared Signals Unterstützung durch SIEM Systeme und Infrastrukturkomponenten noch nicht hinreichend gegeben. Daher werden Shared Signals bis auf weiteres noch nicht von ZETA unterstützt.

4.7.3 Telemetrie, Monitoring und Logging

Betriebliche Daten zum Zwecke des Monitorings (Telemetrie) werden von den ZETA Guard-Komponenten erhoben und für die eingesetzten ZETA Guard-Komponenten übergreifend mittels dem Telemetriedaten-Service erfasst. Bei der Nachbereitung der Telemetriedaten werden personenbezogene oder -beziehbare Daten anonymisiert, um diese bereinigten Daten dem Anbieter regelhaft zugänglich zu machen. Das bereinigte Monitoring-Log kann von dem Anbieter für sein eigenes betriebliches Monitoring und als Quelle für sein SIEM-System verwendet werden. Das bereinigte Monitoring-Log wird unter Anderem zur Generierung von Traces und Metriken für die gematik benutzt. 

4.8 Zusammenspiel mit Identity Provider

Das Stichwort "Step-up-Authentifizierung" bezieht sich auf eine Sicherheitsmaßnahme, bei der der Nutzer zusätzliche Authentifizierungsschritte durchlaufen muss, um auf sensible Ressourcen zuzugreifen. Diese Maßnahme wird wie folgt realisiert:

  1. Nutzer stellt über den ZETA Client eine Anfrage: Der Nutzer versucht auf eine Ressource zuzugreifen, für die das aktuelle Access Token nicht ausreicht.
  2. PEP fängt Anfrage ab: Der PEP empfängt die Anfrage.
  3. PEP validiert Access Token: Der PEP prüft:
    • Ist das Access Token gültig (Signatur, Ablaufdatum etc.)?
    • Hat das Access Token den erforderlichen Scope und die passende Audience für die angeforderte Ressource?
  4. Zugriff verweigert: Wenn der erforderliche Scope oder die Audience nicht im Access Token enthalten ist, verweigert der PEP den Zugriff.
  5. PEP antwortet mit Step-up-Anforderung: Wenn die angefragte Ressource auf dem Resource Server existiert, informiert der PEP den Nutzer, dass für den Zugriff ein Access Token mit einem bestimmten Scope und einer bestimmten Audience benötigt wird.
  6. Nutzer initiiert die Step-up-Authentifizierung: Der ZETA Client kommuniziert mit dem Authorization Server, um die Authentifizierung für den benötigten Scope und die Audience zu beginnen.
  7. Authorization Server authentifiziert und gewährt neues Access Token: Der Authorization Server:
    • Steuert die Durchführung der Step-up-Authentifizierung.
    • Erstellt ein neues Access Token mit passendem Scope und passender Audience.
    • Gibt das neue Access Token an den ZETA Client zurück.
  8. Nutzer stellt eine erneute Anfrage: Der Nutzer sendet die Anfrage mit dem neuen Access Token an den PEP.
  9. PEP prüft das neue Token: Der PEP prüft wieder:
    • Ist das neue Access Token gültig?
    • Hat das neue Access Token den Scope und die Audience für die angeforderte Ressource?
  10. Zugriff gewährt: Wenn der erforderliche Scope und die Audience im neuen Access Token enthalten ist, gewährt der PEP den Zugriff auf die Ressource.

Die Step-up-Authentifizierung stellt sicher, dass zusätzliche Sicherheitsmaßnahmen - wenn erforderlich - ergriffen werden, um die Integrität und Vertraulichkeit der geschützten Daten zu gewährleisten.

4.9 TI 2.0-Dienst-Backend

Das TI 2.0-Dienst-Backend (im folgenden Resource Server genannt) stellt das Ziel jedes Zugriffswunschs eines Nutzers über sein Clientsystem dar. Es stellt fachliche Schnittstellen zur Nutzung durch Clientsysteme dar, die über die Mechanismen des Zero Trust abgesichert werden. 

5 Spezifikation

Dieses Kapitel beschreibt die technische Umsetzung der beschriebenen Konzepte an die oben eingeführten Komponenten des Zero Trust (ZETA Guard-Komponenten) als generische Produkt- und Anbietertypen. Diese Anforderungen finden Anwendung in den Steckbriefen von konkreten Produkt- und Anbietertypen der jeweiligen Fachanwendung und erhalten erst in der dortigen Zuordnung ein konkretes Prüfverfahren.

Die Festlegungen zu Schemas, OpenAPI Schnittstellen und Abbildungen sind in [gemAPI_ZETA] enthalten.

5.1 Übergreifende Anforderungen für Datenschutz und Sicherheit

A_25400 - ZETA Guard - Umsetzung Sicherer Softwareentwicklungsprozess

Der Hersteller des ZETA Guards MUSS einen sicheren Softwareentwicklungsprozess umsetzen (siehe [gemSpec_DS_Hersteller#Kapitel 2.2 Sicherer Softwareentwicklungsprozess]). [<=]

A_25401 - ZETA Guard - Darstellung der Voraussetzungen für sicheren Betrieb des Produkts im Produkthandbuch

Der Hersteller des ZETA Guards MUSS für sein Produkt im dazugehörigen Produkthandbuch leicht ersichtlich darstellen, welche Voraussetzungen vom Anbieter und der Betriebsumgebung erfüllt werden müssen, damit ein sicherer Betrieb des Produktes gewährleistet werden kann.  [<=]

A_28459 - ZETA Guard - Informationsobjekte im Produkthandbuch

Der Hersteller des ZETA Guards MUSS alle vom ZETA Guard verarbeiteten Informationsobjekte in seinem Produkthandbuch vollständig auflisten. [<=]

A_28463 - ZETA Guard - Informationsobjekte des ZETA Clients im Produkthandbuch

Der Hersteller des ZETA Guards MUSS alle vom ZETA Client verarbeiteten Informationsobjekte im Produkthandbuch des ZETA Guard vollständig auflisten. [<=]

A_28460 - ZETA Guard - Datenschutzrechtliche Bewertung durch den Dienstanbieter

Der Anbieter eines TI 2.0 Dienstes MUSS sich über die Informationsobjekte, die im ZETA Guard verarbeitet werden, aus dem Produkthandbuch informieren und als Datenschutzverantwortlicher für sein Dienst bewerten.   [<=]

A_28461-01 - Informationspflicht des Client-Herstellers gegenüber Nutzern

Der Hersteller eines TI 2.0-Clients MUSS

  • sich über die Informationsobjekte aus dem Produkthandbuch des ZETA Guard informieren
  • und seine Nutzer über Verarbeitung der Informationsobjekte datenschutzkonform informieren.
[<=]

Hinweis: Es gibt ein Kapitel in dem ZETA Guard Handbuch, das die Integration von Clientsystemen mit Zeta Guard beschreibt. Das Kapitel beschreibt die Client-Informationsobjekte, die der Client verarbeiten muss.

A_25402 - ZETA Guard - Schutz der transportierten Daten

ZETA Guard MUSS sicherstellen, dass die Vertraulichkeit und Integrität der transportierten Daten gewährleistet ist.
Alle Endpunkte des ZETA Guards MÜSSEN TLS gesichert sein. [<=]

A_28781 - ZETA Guard - Schutz der internen Kommunikation

ZETA Guard MUSS sicherstellen, dass die interne Kommunikation zwischen ZETA Guard Komponenten durch TLS abgesichert ist.  [<=]

Hinweis: Es wird empfohlen ein Service Mesh (z. B. Cilium, Istio oder linkerd) einzusetzen.

A_26517-01 - ZETA Guard - Unterstützung von mTLS

ZETA Guard MUSS die Konfiguration und Nutzung von mTLS für die interne Kommunikation und für die Kommunikation zum Resource Server unterstützen. [<=]

A_25403 - ZETA Guard - Schutzmaßnahmen gegen die OWASP Top 10 Risiken

ZETA Guard MUSS geeignete technische Maßnahmen zum Schutz vor den Risiken in der aktuellen Version der [OWASP-Top-10-Risiken] umsetzen. [<=]

Hinweis: Die Anforderungen gelten für die gesamte ZETA‑Guard‑Lösung. Entscheidet sich ein Anbieter dafür, eine eigene Komponente anstelle einer von ZETA bereitgestellten Komponente (z. B. Ingress) zu verwenden, legt der Sicherheitsgutachter(Anbieter) fest, welche Risiken aus der Top‑10‑Liste für diese Komponente relevant sind, da deren konkrete Umsetzung anbieterabhängig ist.

A_28961 - Maßnahmen gegen die OWASP Top 10 Kubernetes Risiken

Der Anbieter eines TI 2.0-Dienstes MUSS geeignete Maßnahmen zum Schutz vor den Risiken in der aktuellen Version der [OWASP-Top-Ten-Kubernetes] umsetzen.
[<=]

A_25404 - ZETA Guard - Angriffe erkennen

ZETA Guard MUSS Maßnahmen zur Erkennung, Kategorisierung und Protokollierung bzw. Meldung von Angriffen umsetzen. Die Kategorisierung von Angriffen MUSS nach "CAPEC: OWASP Related Patterns"[CAPEC OWASP] erfolgen. [<=]

A_25405 - ZETA Guard - Angriffen entgegenwirken

ZETA Guard MUSS Maßnahmen zur Schadensreduzierung und -verhinderung von Angriffen umsetzen. [<=]

A_25406 - ZETA Guard - Eingabe Validierung von Operationen

ZETA Guard MUSS sicherstellen, dass alle Daten und Parameter, die über eine API kommuniziert werden, sicherheitstechnisch validiert werden. [<=]

Hinweis: Eine Eingabe-Validierung von Resource Server APIs erfolgt im Resource Server und nicht in den Zero Trust-Komponenten. 

A_25407 - ZETA Guard - Sicherheitstechnische Validierung von Policy und Konfigurationen

ZETA Guard MUSS sicherstellen, dass alle Daten und Parameter, die von einer Konfigurationsdatei oder Policy gelesen werden, sicherheitstechnisch validiert werden. [<=]

A_25408-01 - ZETA Guard - Verbot Profilbildung

Der Anbieter eines TI 2.0-Dienstes DARF Profile - außer zum Zweck des Security Monitorings - NICHT bilden.
    [<=]

A_25409 - ZETA Guard - Privacy by Design

ZETA Guard MUSS sicherstellen, dass bei Konfigurationsmöglichkeiten die datenschutzfreundlichere Option vorausgewählt ist. [<=]

A_25410 - ZETA Guard - Verbot von Werbe- und Usability-Tracking

ZETA Guard DARF im Produktivbetrieb ein Werbe- und Usability-Tracking NICHT verwenden. [<=]

A_25411 - ZETA Guard - Verbot vom dynamischen Inhalt

ZETA Guard DARF dynamischen Inhalt von Drittanbietern NICHT herunterladen und verwenden. [<=]

A_25412 - ZETA Guard - Zusätzliche Verschlüsselung bei der Persistierung

Unabhängig davon, ob die Daten schon verschlüsselt vorliegen, MUSS ZETA Guard seine Daten bei der Persistierung verschlüsseln.   [<=]

A_25413-01 - ZETA Guard - Ordnungsgemäße IT-Administration

Der Anbieter eines TI 2.0-Dienstes MUSS die Maßnahmen für erhöhten Schutzbedarf aus dem BSI-Bausteins „OPS.1.1.2 Ordnungsgemäße IT-Administration“ [BSI-Grundschutz] während des gesamten Betriebs des ZETA Guards umsetzen.    [<=]

A_26479-02 - ZETA Guard - Ordnungsgemäße Änderung von Konfigurationen

Der Anbieter eines TI 2.0-Dienstes MUSS durch technische und organisatorische Mittel sicherstellen, dass eine Änderung der Konfiguration des ZETA Guards nur unter 4-Augen erfolgen kann.   [<=]

A_25718 - ZETA Guard - Bereitstellung Security-KPIs

ZETA Guard MUSS sicherstellen, dass die Security-KPIs in A_25484-* automatisch bereitgestellt werden.  
[<=]

Hinweis: Die Anforderung ist besonders wichtig, falls die Zero Trust-Komponente in einer VAU betrieben wird.

A_28406-01 - ZETA Guard – Verification der ZETA Guard Images

Der Hersteller des TI 2.0-Dienstes MUSS vor der Aktualisierung von ZETA Guard die Authentizität und Aktualität der zu aktualisierenden Komponenten auf der Grundlage einer von der gematik vorgegebenen Signaturprüfung verifizieren und bei Fehlschlagen der Verifikation die Aktualisierung abbrechen und gematik umgehend informieren. [<=]

Hinweis: Die Images für ZETA Guard werden mit einem Zertifikat der Komponenten PKI signiert. Das Zertifikat und die zugehörige Kette müssen für die Signaturprüfung verwendet werden.

A_28407 - ZETA Guard – Nachweisbarkeit verwendete Version des ZETA-Images

Der Hersteller eines TI 2.0-Dienstes MUSS ein SBOM für sein Produkt erstellen, aus dem eindeutig hervorgeht, welches ursprüngliche ZETA Guard-Image verwendet wurde. [<=]

Hinweis: Das SBOM für das gesamte Produkt (inkl. ZETA Guard) kann durch den Hersteller über mehrere Dateien abgebildet werden. Für ZETA Guard wird immer ein eigenständiges SBOM geliefert.

ZETA-Guard implementiert für Stufe 1 eine vereinfachte Prüfung des Clients auf gesperrte IP-Adressen und Impossible Travel. Diese Vereinfachung ist möglich, da in Stufe 1 nur eine Role (LEI) mit einem stationären Endgerät vorgesehen ist.

A_28827 - ZETA-Guard - IP-Adresse Binding des Access-Token

ZETA Guard MUSS für Stufe 1 die anfragende IP-Adresse des Clients im Access-Token bei der Ausstellung des Access-Token hinterlegen. [<=]

A_28803 - ZETA Guard - Prüfung von Impossible Travel

ZETA Guard MUSS für Stufe 1 die im Access-Token hinterlegte IP-Adresse bei jedem Client-Request gegen die tatsächliche IP-Adresse des anfragenden Clients validieren. Bei einem negativen Ergebnis MUSS ZETA Guard das Access-Token und Refresh-Token des Clients sperren und die aktuelle fachliche Operation abbrechen. [<=]

A_28828 - ZETA Guard - Weiterleitung Client-IP

Der Anbieter des TI 2.0-Dienstes MUSS alle in seiner Hoheit betriebenen Netzwerkkomponenten (wie z. B. Load Balancer, Reverse Proxy, DDoS-Schutz, WAF, CDN oder API Gateway)  zwischen Client und ZETA Guard so konfigurieren, dass die originale IP-Adresse des Clients über die gesamte Verarbeitungskette hinweg mittels standardisierter HTTP-Header (vorzugsweise Forwarded gemäß RFC 7239, alternativ X-Forwarded-For oder X-Real-IP) an ZETA Guard weitergeleitet wird. [<=]

5.2 Schlüssel Management und Verwaltung in ZETA

Teil der Sicherheitsarchitektur von ZETA ist ein robustes Schlüsselmanagement. Um Entwicklern, Betreibern und Auditoren ein klares Verständnis der kryptografischen Architektur zu vermitteln, verwendet diese Spezifikation standardisierte Schlüssel-IDs (z.B. PrK.AuthS.Sig für den privaten Signaturschlüssel des Authorization Servers).

5.2.1 Nomenklatur für Schlüssel-IDs

Jeder Schlüssel erhält eine eindeutige ID nach folgendem Schema: [Typ].[Komponente].[Zweck]

Typ:

  • PrK: Privater Schlüssel (Private Key)
  • PuK: Öffentlicher Schlüssel (Public Key)
  • C: Zertifikat (Public Key inkl. Identitätsbindung, Certificate)
  • SymK: Symmetrischer Schlüssel (Symmetric Key)

Komponente oder Schlüssel:

  • AuthS: Authorization Server (PDP)
  • PEP: Policy Enforcement Point (HTTP Proxy)
  • DB: Datenbank (PDP DB)
  • Client: ZETA Client (App / Primärsystem)
  • K8s: Kubernetes / Infrastruktur
  • Sys: Gematik / Zentrales System
  • AK: Attestation Keys
  • EK: TPM Endorsement Keys
  • DPoP: DPoP Keys
  • SM(C)-B: SM(C)-B Keys
  • TI-RootCA: TI Root CA Signer Keys
  • TI-TSL: TI TSL Signer Keys
  • TI-KompCA: TI Komponenten PKI CA Keys
  • TI-FedMaster: Federation Master Signer Keys
  • ZETA-IK: ZETA OCI Container Image Signer Keys
  • ZETA-DK: ZETA OCI Data Image Signer Keys
  • ZETA-PAK: ZETA OPA Bundle Autor Signer Keys
  • ZETA-PFK: ZETA OPA Bundle Freigeber Signer Keys

Zweck:

  • TLS: Verschlüsselung des externen Traffics
  • mTLS: Interne Komponenten Authentifizierung
  • ASL: Application Security Layer
  • Sig: Signatur (Token, Policies, Entity Statements)
  • Enc: Payload-/Daten-Verschlüsselung (JWE, DB At-Rest)

5.2.2 Übersicht der ZETA Guard Schlüssel (Anbieter-Seite)

Diese Tabelle fasst alle Schlüssel zusammen, die vom Betreiber des TI 2.0-Dienstes (ZETA Guard) verwaltet werden müssen. Bei Verarbeitung von Daten mit Schutzbedarf "sehr hoch" greifen strenge VAU- und HSM-Pflichten.

Hinweis: Schlüssel mit dem Vermerk "Die Schlüsselverwaltung muss dokumentiert werden", werden vom Anbieter des TI 2.0 Dienstes verwaltet. Die Schlüssel ohne Vermerk verwaltet ZETA Guard automatisch.

Betriebsmodi und Schlüsselschutz:
Der ZETA Guard unterscheidet zwei primäre Betriebsmodi:

  1. Regulärer Betrieb (ohne VAU): Schlüssel werden in sicheren Software-Keystores (z.B. KMS v2) der jeweiligen Container-Umgebung abgelegt.
  2. Betrieb mit Schutzbedarf "sehr hoch" (mit VAU): Sobald sensible Daten verarbeitet werden, muss der ZETA Guard in einer Vertrauenswürdigen Ausführungsumgebung (VAU) betrieben werden (siehe A_25608-01). In diesem Fall MÜSSEN asymmetrische private Schlüssel der TI- und Internet-Identitäten zwingend in einem Hardware Security Module (HSM) verbleiben. Schlüssel, die in den Arbeitsspeicher der VAU geladen werden müssen (z.B. Token-Signatur- oder Datenbank-Schlüssel), müssen durch HSM-generierte Key-Encryption-Keys (KEK) "gewrappt" (Sealing) übergeben werden.

Tabelle 1: Tab-ZETA-Guard-Keys

Schlüssel-ID Bezeichnung & Zweck Speicherung / Betrieb OHNE VAU Speicherung / Betrieb MIT VAU (Schutzbedarf "sehr hoch")
PrK.AuthS.Sig
PuK.AuthS.Sig
AuthS Token-Signaturschlüssel
Zur Signatur von Access- und Refresh-Token sowie des Entity Statements. Der PuK wird im JWKS bereitgestellt.
Die Schlüsselverwaltung muss dokumentiert werden.
PrK: Sicherer Software-Keystore des AuthS. PrK: Muss durch HSM geschützt sein. (Darf in den AuthS geladen werden, wenn z.B. mittels KEK aus dem HSM gesichert).
PrK.AuthS.TLS
C.AuthS.TLS
AuthS Internet-Identität (TLS)
Terminierung der externen TLS-Verbindung am Authorization Server.
Die Schlüsselverwaltung muss dokumentiert werden.
Sicherer Software-Keystore. PrK: Verbleibt zwingend im HSM (via HSM-Proxy), falls kein ASL Tunnel zum AuthS existiert.
SymK.DB.Enc Datenbank-Verschlüsselung
Verschlüsselung der Session-, Nutzer- und Client-Daten At-Rest im Authorization Server.
Sicherer Software-Keystore (z.B. K8s Secrets). Muss durch HSM geschützt sein. Übergabe an AuthS darf nur an attestierte Instanzen erfolgen.
PrK.PEP.TLS
C.PEP.TLS
PEP Internet-Identität (TLS)
Terminierung der externen TLS-Verbindung am HTTP Proxy.
Die Schlüsselverwaltung muss dokumentiert werden.
Sicherer Software-Keystore. PrK: Verbleibt zwingend im HSM, falls kein ASL Tunnel zum HTTP Proxy existiert.
PrK.PEP.Sig
C.PEP.Sig
PEP Signatur-Identität
Zertifikat aus der Komponenten-PKI. Dient als Identität des PEP (für Signatur des ASL Master-Schlüssels).
Die Schlüsselverwaltung muss dokumentiert werden.
Sicherer Software-Keystore. Privater Schlüssel verbleibt zwingend im HSM (Zugriff via HSM-Proxy).
PrK.PEP.ASL
PuK.PEP.ASL
PEP ASL-Identität
Semi-statische Schlüsselpaare für den ZETA/ASL-Kanal (maximal 1 Monat gültig).
Im RAM des PEP.  Wird im PEP generiert, aber vom PrK.PEP.Sig im HSM beglaubigt. 
SymK.PEP.ASL PEP ASL Session-Key
Abgeleiteter kurzlebiger Schlüssel für den eigentlichen ASL-Traffic.
Im RAM des PEP. Wird im PEP generiert.
PrK.ZG.IDP
PuK.ZG.IDP
IDP für die ZETA Guard Workload Identity
Zur Signatur von Subject Token für die Kommunikation mit gematik-Diensten (SIEM, Telemetrie) und für die Dienst-zu-Dienst Kommunikation.
Initial: Kubernetes IDP oder langlebiger Schlüssel
Zukünftig: AuthS als IDP des ZETA Guard mit PrK.AuthS.Sig und PuK.AuthS.Sig
Die Schlüsselverwaltung muss dokumentiert werden.
Innerhalb der Kubernetes-Infrastruktur des Anbieters. Wenn langlebiger Schlüssel, dann wird der private Schlüssel im HSM gespeichert.
PrK.Ingress.TLS
C.Ingress.TLS
Ingress TLS
TLS-Terminierung am vorgeschalteten Ingress (falls genutzt).
Die Schlüsselverwaltung muss dokumentiert werden.
Sicherer Software-Keystore. Verbleibt zwingend im HSM, , falls kein ASL Tunnel zum AuthS und zum HTTP Proxy existiert.
PrK.K8s.mTLS
C.K8s.mTLS
Interne Mesh-Identitäten
Zur Absicherung der microservice-internen Kommunikation (z. B. AuthS <-> PE).
K8s Service Mesh (z.B. Istio). Verwaltung innerhalb der VAU (Zugriff strikt limitiert).
PuK.Client.Sig Öffentlicher Client Instance Key
Wird bei der initialen Client-Registrierung an den AuthS gesendet. Dient der Validierung der "Client Assertion" bei zukünftigen Logins.
Gespeichert in der PDP Datenbank. Gespeichert in der PDP Datenbank. Muss vor unautorisierter Manipulation (Austausch durch Angreifer) geschützt sein (Integrität).

A_28826 - HSM Proxy, Übergabe PDP-Datenbank-Schlüssel an ZETA Guard Authorization Server

Falls ZETA Guard in einer VAU umgesetzt wird, MUSS der HSM-Proxy sicherstellen, dass die Übergabe der PDP-Datenbank-Schlüssel (SymK.DB.Enc) ausschließlich an einen attestierten und freigegebenen ZETA Guard Authorization Server erfolgt. [<=]

A_28863 - HSM Proxy, Verwendung AuthS-Schlüssel nur durch ZETA Guard Authorization Server

Falls ZETA Guard in einer VAU umgesetzt wird, MUSS der HSM-Proxy sicherstellen, dass die Verwendung der AuthS-Schlüssel (PrK.AuthS.Sig, PrK.AuthS.TLS) im HSM ausschließlich durch einen attestierten und freigegebenen ZETA Guard Authorization Server möglich ist. [<=]

A_28864 - HSM Proxy, Verwendung PEP-Schlüssel nur durch ZETA Guard HTTP Proxy

Falls ZETA Guard in einer VAU umgesetzt wird, MUSS der HSM-Proxy sicherstellen, dass die Verwendung der PEP-Schlüssel (PrK.PEP.TLS, PrK.PEP.Sig) im HSM ausschließlich durch einen attestierten und freigegebenen ZETA Guard HTTP Proxy möglich ist. [<=]

A_28865 - HSM Proxy, Verwendung Ingress-Schlüssel nur durch ZETA Guard Ingress

Falls ZETA Guard in einer VAU umgesetzt wird, MUSS der HSM-Proxy sicherstellen, dass die Verwendung der Ingress-Schlüssel (PrK.Ingress.TLS) im HSM ausschließlich durch einen attestierten und freigegebenen ZETA Guard Ingress möglich ist. [<=]

5.2.3 ZETA Client Schlüssel (Nutzer-Seite)

Diese Schlüssel verbleiben in der Verfügungsgewalt des Endnutzers (Smartphone / Primärsystem) bzw. der Institution.

Tabelle 2: Tab-ZETA-Client-Keys

Schlüssel-ID Bezeichnung & Zweck Speicherung / Verwendung
PrK.Client.Sig
PuK.Client.Sig
Client Instance Key Pair
Langlebiges ECC-Schlüsselpaar zur eindeutigen Identifikation der Client-Installation. Dient der Signatur der Client Assertion. 
PrK: Zwingend in Hardware (TPM, Secure Enclave, TEE) generiert und gespeichert. Erhält strikt das Attribut sign (kein Export möglich).
PuK: Wird bei der Registrierung (DCR) an den ZETA Guard übertragen.
PrK.DPoP.Sig
PuK.DPoP.Sig
DPoP Schlüsselpaar
Kurzlebiger (Session-basierter) Schlüssel zum Signieren von Anfragen als Beweis für den Besitz des Access Token (Proof of Possession).
PrK: Wird für die Dauer der Session sicher lokal gehalten (flüchtig im RAM oder durch native OS-Sicherheitsmechanismen / TPM-Wrapping geschützt). Eine Verschlüsselung des DPoP-Keys durch den PrK.Client.Sig ist aus Gründen der Schlüsseltrennung nicht zulässig.
PuK: Wird im HTTP-Header gesendet. 
PrK.AK.Sig
PuK.AK.Sig
Plattform Attestation Key
Zur Signatur des Client-Zustands.
PrK: Wird zur Signatur des Client-Zustands verwendet. Hardware-gebunden (TPM / Secure Enclave).
PuK: Wird bei der Registrierung (DCR) an den ZETA Guard übertragen und zur Prüfung der Systemintegrität gesendet (inkl. Zertifikatskette zur Validierung gegen Root-CA des Herstellers).
PrK.EK.Sig
PuK.EK.Sig
C.EK.Sig
TPM 2.0 Endorsement Keys
Wird bei der TPM Attestation verwendet.
PrK: Hardware-gebunden (TPM / Secure Enclave).
PuK: Wird bei der Registrierung (DCR) an den ZETA Guard übertragen und zur Bindung des AK an den EK verwendet.
C: Wird bei der Registrierung (DCR) an den ZETA Guard übertragen und zur Bindung des AK an den EK verwendet.
PrK.SM(C)-B.Sig
C.SM(C)-B.Sig
SMC-B Institutionsidentität
Ausgestellt von der SMC-B CA. Zur Signatur des subject_token beim Token Exchange, um die Identität der Institution (z.B. Praxis) nachzuweisen. Das Subject Token enthält ein Binding des PuK.Client.Sig und des PuK.DPoP.Sig.
PrK: Verbleibt hardwaregebunden auf der Smartcard (SMC-B) oder im HSM-B.
C: Wird übermittelt und durch AuthS gegen TSL validiert.

5.2.4 gematik verwaltete Schlüssel (TI)

Diese Zertifikate und Schlüssel spannen den Vertrauensraum der TI 2.0 auf. Die privaten Schlüssel liegen hochsicher bei der gematik (bzw. den zugelassenen Trust Centern). Die ZETA Guards und Clients nutzen die öffentlichen Teile/Zertifikate zur Validierung. Diese Schlüssel dienen der Sicherstellung der Supply-Chain-Security und der Integrität von Regelwerken.

Tabelle 3: Tab-Gematik-Keys

Schlüssel-ID Bezeichnung & Zweck Speicherung / Verteilung
PrK.TI-RootCA.Sig
C.TI-RootCA.Sig
TI Root CA
Oberster Vertrauensanker der TI. Alle Zertifikate im System leiten sich hiervon ab.
C: Lokal in Truststores hinterlegt. Wird mit dem ZETA Guard Provisioning OCI Image in den ZETA Guard geladen.
PrK: Offline/Hochsicher bei der gematik.
PrK.TI-TSLSig
C.TI-TSL.Sig
TSL Signer
Zertifikat zur Validierung der Signatur der Trust-Service Status List (TSL), welche die aktuell gültigen CAs definiert.
C: Im ZETA Guard (über lokales Artifact Registry) zur TSL-Verifikation.
PrK: Bei der gematik.
PrK.TI-KompCA.Sig
C.TI-KompCA.Sig
Komponenten PKI CA
Sub-CA der Root CA. Stellt die Zertifikate für die TI-Dienste (PEP, AuthS) aus.
C: Über die TSL als vertrauenswürdig verteilt.
PrK.TI-SMCB-CA.Sig
C.TI-SMCB-CA.Sig
SMC-B CA
Sub-CA der Root CA. Stellt die Institutionszertifikate für Leistungserbringer aus.
C: Über die TSL als vertrauenswürdig verteilt (zur Prüfung im ZETA Guard).
PrK.TI-FedMaster.Sig
PuK.TI-FedMaster.Sig
Federation Master Signer
Zur Signatur der Entity Statements (Trustmarks) in der OIDC-Föderation.
PuK: Im ZETA Guard hinterlegt, um die Föderations-Zugehörigkeit anderer AuthS zu prüfen.
PrK: Bei der gematik.
PrK.ZETA-IK.Sig
C.TI-ZETA-IK.Sig
Signaturzertifikat Ausführbare ZETA Images
Signatur der ausführbaren ZETA OCI Container (PEP, AuthS, OPA, etc.).
C: Im Admission Controller validiert (Signaturkette bis zur Root CA).
PrK: In gematik CI/CD-Pipeline.
PrK.ZETA-DK.Sig
C.TI-ZETA-DK.Sig 
Signaturzertifikat Daten-Images
Signatur von Datencontainern (z.B. Konfigurationsdaten, Provisioning-Daten).
C: Im Admission Controller / durch ZETA Guard validiert.
PrK: In gematik CI/CD-Pipeline.
PrK.ZETA-PAK.Sig
C.TI-ZETA-PAK.Sig 
OPA Policy-Autor Signatur
Signaturzertifikat des Policy-Erstellers für OPA Bundles.
C: Im ZETA Guard (OPA Engine) zur Signaturprüfung konfiguriert.
PrK: Beim Datenbearbeiter.
PrK.ZETA-PFK.Sig
C.TI-ZETA-PFK.Sig 
OPA Policy-Freigeber Signatur
Zweitsignatur (4-Augen-Prinzip) für OPA Bundles.
C: Im ZETA Guard (OPA Engine) konfiguriert.
PrK: Beim Freigeber.
PrK.K8s.IDP
C.K8s.IDP
Kubernetes IDP (Workload Identity)
Zur Signatur von Subject Token für die Kommunikation mit gematik-Diensten (SIEM, Telemetrie).
PrK: Innerhalb der Kubernetes-Infrastruktur des Anbieters.
C: Innerhalb des gematik Workload Identity Pools

5.3 Sicherheits- und Datenschutzanforderungen an Logging und Monitoring

Hinweis: Die Anforderungen dieses Abschnitts könnten sich noch ändern, falls sich bei der Umsetzung des Zero Trust herausstellt, dass weitere Protokollierungen auf Seiten des Anbieters notwendig werden.

A_25744 - ZETA Guard - Datenschutzkonformes Logging und Monitoring

ZETA Guard MUSS die für den Betrieb des Zero Trust erforderlichen Logging- und Monitoring-Informationen in solcher Art und Weise erheben und verarbeiten, dass mit technischen Mitteln ausgeschlossen ist, dass dem Anbieter eines TI 2.0-Dienstes vertrauliche oder zur Profilbildung geeignete Daten zur Kenntnis gelangen. [<=]

Hinweis: Der Telemetriedaten Service im ZETA Guard muss die vom PEP und PDP gesammelten Telemetriedaten so verändert an das Monitoring System des Anbieters weitergeben, dass eine Profilbildung nicht mehr möglich ist.

A_25745 - ZETA Guard - Keine medizinischen Informationen in Logging und Monitoring

ZETA Guard MUSS sicherstellen, dass in für den Betrieb erstellten Protokollen keine personenbezogenen medizinischen Informationen enthalten sind (u. a. medizinische Daten von Versicherten oder Informationen, aus denen sich ableiten lässt, bei welchen Leistungserbringerinstitutionen ein Versicherter in Behandlung ist). [<=]

A_25746 - ZETA Guard - Keine sicherheitsrelevanten Daten in Logging und Monitoring

ZETA Guard MUSS sicherstellen, dass in für den Betrieb erstellten Protokollen keine sicherheitsrelevanten Daten enthalten sind. [<=]

Hinweis: Sicherheitsrelevante Daten sind zum Beispiel, Kryptoschlüssel, Access/Refresh Token usw.

A_25747-01 - ZETA Guard - Löschfristen Protokolle

Der Anbieter eines TI2.0 Dienstes MUSS sicherstellen, dass die zum Zwecke der Fehleranalyse erhobenen Protokolle des ZETA Guards nach Behebung des Fehlers unverzüglich gelöscht werden.
[<=]

5.4 Sicherheits- und Datenschutz-Anforderungen an das Security Monitoring

Um eine lückenlose Nachvollziehbarkeit komplexer Systeminteraktionen zu gewährleisten, ist die nahtlose Verknüpfung aller anfallenden Telemetriedaten entscheidend. Jede einzelne Anfrage löst eine Vielzahl von Prozessen, Logs und Metriken aus, die erst durch eine konsistente Korrelation ihren vollen diagnostischen Wert entfalten. Ziel ist es, die gesamte Verarbeitungskette eines Requests über alle ZETA-Komponenten hinweg als zusammenhängendes Ereignis sichtbar zu machen, sodass die kausalen Zusammenhänge zwischen den verschiedenen Datenpunkten jederzeit transparent und ohne Informationsverlust nachverfolgbar bleiben.

A_25484-03 - Security Monitoring - Security KPIs

ZETA Guard MUSS einmal täglich mittels dem Telemetriedaten-Service die folgende Sicherheits-KPIs automatisiert über die von der gematik angebotene Schnittstelle an das TI SIEM-System als OTel-Metric übermitteln:

  • Anzahl versuchter Zugriffe von nicht registrierten Clients (hier muss die KPIs zwischen Resource Server APIs und Client-Registrierung APIs unterscheiden)
  • Anzahl von Zugriffen von Botnetzen
  • Anzahl von Zugriffen aus jedem Land gezählt plus weitere Zugriffe, die separat in Versicherte und LE ausgewiesen werden
  • Anzahl fehlerhafter Clientfreischaltungen plus weitere breakdown in Versicherte und LE
  • Anzahl von Impossible travel Zugriffen (inkl. Land- und Ortsdaten) plus weitere breakdown in Versicherte und LE
  • Anzahl von Zugriffen über TOR Netzwerke plus weitere breakdown in Versicherte und LE
  • Anzahl von Zugriffen über VPNs plus weitere breakdown in Versicherte und LE
  • Anzahl erkannte Angriffe in Kategorie (siehe A_25404-*) plus weitere breakdown in Versicherte und LE
  • Anzahl fehlerhafte Authorization Codes vom IDP.
[<=]

Hinweis: Security KPIs beinhalten anonyme Daten und sind nicht auf individuelle Nutzer zurückzuführen. 

Hinweis: Impossible Travel ist eine Methode zur Anomalieerkennung in der Cybersicherheit, die potenzielle Kompromittierungen identifiziert, indem sie Nutzeranmeldeaktivitäten analysiert und mit geografischen Standorten korreliert. Dabei werden Fälle markiert, in denen auf das Nutzerkonto innerhalb eines verdächtig kurzen Zeitraums aus zwei verschiedenen Ländern zugegriffen wird.

Hinweis: Falls der Anbieter aufgrund einer Netzwerk-Sicherheitsrichtlinie Anfragen mit bestimmten Kommunikationsmerkmalen (z. B. Zugriffe aus einem NOR-Netzwerk oder Botnetz) am Netzwerk-Perimeter blockiert, hat diese Richtlinie Vorrang. Es wird nicht erwartet, dass entsprechende Requests dennoch an den ZETA Guard weitergeleitet, da diese Anfragen bereits durch den Schutzmechanismus am Netzwerk-Perimeter abgefangen werden.

Hinweis: Forbidden Countries beinhaltet eine Liste von IP-Ranges der Länder-ASN.

Hier ein Beispiel Metric für die Anzahl von Zugriffen von Botnetzen:

{
  "resourceMetrics": [
    {
      "resource": {
        "attributes": [
          {
            "key": "service.name",
            "value": {
              "stringValue": "zeta-guard"
            }
          },
          {
            "key": "service.version",
            "value": {
              "stringValue": "1.0.0"
            }
          }
        ]
      },
      "scopeMetrics": [
        {
          "scope": {
            "name": "zeta-guard-kpis",
            "version": "1.0.0"
          },
          "metrics": [
            {
              "name": "zeta_guard_kpi_botnet_accesses_24h",
              "description": "Number of botnet accesses detected by ZETA Guard in the last 24 hours",
              "unit": "1",
              "sum": {
                "isMonotonic": true,
                "aggregationTemporality": "AGGREGATION_TEMPORALITY_DELTA",
                "dataPoints": [
                  {
                    "attributes": [
                      {
                        "key": "date",
                        "value": {
                          "stringValue": "2026-03-09"
                        }
                      }
                    ],
                    "startTimeUnixNano": "1762128000000000000",
                    "timeUnixNano": "1762214400000000000",
                    "asInt": "123"
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  ]
}

A_28783 - ZETA Guard - Telemetriedaten für das Security Monitoring

Der PEP und PDP MÜSSEN über den Telemetriedaten-Service die folgende Daten zu jeder Anfrage automatisiert über die von der gematik bereitgestellte Schnittstelle an das TI-SIEM-System als Teil eines OTel-Traces übermitteln.

Tabelle 4: Security Telemetriedaten PEP und PDP

Daten Open Telemetry Attribute Begründung und Zweck
IP-Adresse   
client.address Identifikationsmerkmal der anfragenden Instanz
http_user_agent user_agent.original Erkennung von Angriffen und Anomalien.
http_method http.request.method_original Erkennung von unautorisierten Aktionen oder abnormalen Anfragen. Ein unerwarteter HTTP-Methoden-Typ auf einer bestimmten Route kann auf einen Angriffsversuch hindeuten.
http_route http.route Überwachung von Zugriffen auf spezifische Ressourcen und Erkennung von unautorisierten Zugriffen oder Versuchen, nicht existierende Routen zu erreichen (z.B. für Brute-Force-Angriffe oder Enumeration).
http_fqdn server.address Identifikation des Zielservers bei Multi-Host-Umgebungen und Erkennung von Anfragen an nicht autorisierte oder verdächtige Domänen.
http_status  http.response.status_code Erkennung von Fehlern, Ausfällen oder potenziellen Angriffsversuchen (z.B. viele 401/403-Fehler bei Brute-Force-Angriffen, viele 5xx-Fehler bei Denial-of-Service-Angriffen).
client_id app.installation.id Identifikationsmerkmal des anfragenden Clients
[<=]

A_28793 - Telemetriedaten für Policy Entscheidungen

Der PDP MUSS über den Telemetriedaten-Service die folgende Daten zu jeder Policy-Entschiedung automatisiert über die von der gematik bereitgestellte Schnittstelle an das TI-SIEM-System als Teil eines OTel-Traces übermitteln.

Tabelle 5: Telemetriedaten Policy Entscheidungen

Daten Open Telemetry Attribute Begründung und Zweck 
produkt_id nicht Verfügbar Möglichkeit abweichende und verdächtige Produktversionen zu erkennen
produkt_version app.build_id Möglichkeit abweichende und verdächtige Produktversionen zu erkennen
os os.name Möglichkeit abweichende und verdächtige Betriebssystemversionen zu erkennen
os_version os.version Möglichkeit abweichende und verdächtige Betriebssystemversionen zu erkennen
device_integrity nicht Verfügbar Indikator ob das Gerät gerootet/kompromittiert ist
Optional: Gerätmodel für Android und iOS Clients
device_model device.model.identifier Möglichkeit abweichende und verdächtige Geräte zu erkennen.
Optional: Falls die Policyentschiedung fehlgeschlagen hat
Ergebnis der Auswertung der Policy als getrennte OTEL Log nicht Verfügbar  Verständnis über die Ablehnungsgrund von Policies plus Angriffe oder Manipluationen zu erkennen. 
Optional: Falls ein Simulationspolicy existiert
Ergebnis der Auswertung der Simluationspolicy als getrennte OTEL Log nicht Verfügbar Möglichkeit häufige Violators von Simulation Policy zu erkennen und verstehen.
[<=]

A_28867 - Ergebnis der Policy Entscheidung als OTel-Log

Der PDP MUSS über den Telemetriedaten-Service das Ergebnis einer Policy-Entschiedung automatisiert über die von der gematik bereitgestellte Schnittstelle an das TI-SIEM-System als ein OTel-Log übermitteln. [<=]

Hier ein Beispiel eines OTel-Logs für die Policyentscheidung:

{
  "resourceLogs": [
    {
      "resource": {
        "attributes": [
          {
            "key": "service.name",
            "value": {
              "stringValue": "openpolicyagent"
            }
          },
          {
            "key": "service.version",
            "value": {
              "stringValue": "1.14.0"
            }
          },
          {
            "key": "opa.instance.id",
            "value": {
              "stringValue": "4794056b-0001-48e2-8acf-3a6fb0287384"
            }
          },
          {
            "key": "opa.bundle.authz",
            "value": {
              "stringValue": ""
            }
          }
        ]
      },
      "scopeLogs": [
        {
          "scope": {
            "name": "openpolicyagent.org/decision_logs",
            "version": "1.14.0"
          },
          "logRecords": [
            {
              "timeUnixNano": "1741170585787524800",
              "observedTimeUnixNano": "1741170585787524800",
              "severityNumber": 9,
              "severityText": "INFO",
              "body": {
                "stringValue": "Decision Log"
              },
              "attributes": [
                {
                  "key": "opa.decision_id",
                  "value": {
                    "stringValue": "d88b7796-8e90-441e-a572-a2f6ea179c18"
                  }
                },
                {
                  "key": "opa.path",
                  "value": {
                    "stringValue": "policies/zeta/authz/decision"
                  }
                },
                {
                  "key": "opa.result.allow",
                  "value": {
                    "boolValue": false
                  }
                },
                {
                  "key": "opa.result.reasons",
                  "value": {
                    "arrayValue": {
                      "values": [
                        {
                          "stringValue": "User profession is not allowed"
                        },
                        {
                          "stringValue": "TelematikID is blocked"
                        }
                      ]
                    }
                  }
                }
              ],
              "traceId": "",
              "spanId": "",
              "flags": 0
            }
          ]
        }
      ]
    }
  ]
}

Hinweis: Im "opa.path" Attribut soll der Path der Simulation-Policy oder der Policy eingetragen werden.

A_28795-01 - Telemetriedaten Angriffserkennung

ZETA Guard MUSS über den Telemetriedaten-Service die folgende Daten zu jedem erkannten Angriff (A_25404-*) automatisiert über die von der gematik bereitgestellte Schnittstelle an das TI-SIEM-System als Teil eines OTel-Traces übermitteln

Tabelle 6: Telemetriedaten Angriffserkennung

Daten Open Telemetry Attribute Datenschutzbegründung
Angriffstyp (OWASP CAPEC
klassifizierung) [CAPEC OWASP]
nicht Verfügbar  Verständnis über die Angriffsklassifizierung
Angriffsdaten nicht Verfügbar  Verstandnis über den aktuellen Angriff
[<=]

A_28796 - ZETA Guard - Korrelation der Telemetrie des Security Monitorings

ZETA Guard  MUSS sicherstellen, dass alle während der Anfrageverarbeitung anfallenden Telemetriedaten des Security Monitorings (A_28783-, A_28793- und A_28795-*) mittels einer durchgängigen Korrelations-ID logisch miteinander verknüpft werden. [<=]

Hinweis: Dies gewährleistet eine lückenlose und verlustfreie Nachverfolgung der gesamten Verarbeitungskette eines Requests über alle Systemkomponenten hinweg, analog zur Funktionsweise eines Spans in OpenTelemetry.

A_25485-02 - Security Monitoring - Sicherheitsmeldung bei Aktualisierung von PIP-Daten oder PAP-Policies

ZETA Guard MUSS bei der erfolgreichen Aktualisierung der PIP-Daten und PAP-Policies eine Sicherheitsmeldung automatisiert über die von der gematik angebotene Schnittstelle an das TI SIEM-System übermitteln. [<=]

A_25606-02 - Security Monitoring - Fehlermeldung bei Aktualisierung von PIP-Daten oder PAP-Policies

ZETA Guard MUSS bei folgenden Fehlern während der Aktualisierung der PIP-Daten und PAP-Policies eine Fehlermeldung automatisiert über die von der gematik angebotene Schnittstelle an das TI SIEM-System übermitteln:

  • Policy Download Fehler
  • Fehler bei der Integritätsprüfung der Policy-Signatur
[<=]

A_28960 - Security Monitoring - Keine Weitergabe sicherheitsrelevanter Telemetriedaten

ZETA Guard DARF sicherheitsrelevante Telemetriedaten (A_25840-*, A_28783-*, A_28793-*, A_28867-*, A_28795-*) NICHT an den Betreiber weitergeben. [<=]

Hinweis: Betriebliche Telemetriedaten dürfen gemäß A_27260-* an den Betreiber übermittelt werden.

A_28964 - Security Monitoring - Löschung sicherheitsrelevanter Telemetriedaten

Nach erfolgreicher Übermittlung der sicherheitsrelevanten Telemetriedaten an die gematik MUSS ZETA Guard alle relevanten Logs unmittelbar löschen.
[<=]

5.5 Sicherheits- und Datenschutz-Anforderungen an die Protokollierung von Administrationsaktivitäten

Administratoren haben weitreichende Zugriffsrechte in Kubernetes, die es ihnen ermöglichen, die Sicherheitskonfigurationen von TI 2.0-Diensten direkt zu ändern. Ohne Kontrolle und Protokollierung dieser Aktivitäten besteht das Risiko, dass unautorisierte oder fehlerhafte Änderungen vorgenommen werden, die die Sicherheit der TI 2.0-Diensten gefährden.

A_28749 - ZETA Guard - Tamper-Proof Protokollierung von Administrationsaktivitäten

Der Anbieter des TI 2.0-Dienstes MUSS eine revisionssichere Protokollierung (Tamper-Proof) aller TI 2.0-Dienst relevanten administrativen Vorgänge auf dem ZETA Kubernetes Cluster führen. [<=]

Hinweis: Diese Anforderung umfasst alle Administrationsaktivitäten z.B. Anwendung, Plattform und Cluster Administration.

A_28750-01 - ZETA Guard - Löschfristen Auditeinträge des Admin-Audit-Logs

Der Anbieter des TI 2.0-Dienstes MUSS sicherstellen, dass die Löschung eines Admin-Auditeintrags den gesetzlichen Vorgaben entspricht und frühestens nach 6 Monaten erfolgt. [<=]

A_28751 - ZETA Guard - Kontrolle des Admin-Audit-Logs

Der Anbieter des TI 2.0-Dienstes MUSS das Admin-Audit-Log mindestens alle 3 Monate im Vieraugenprinzip kontrollieren. Diese Rollen DÜRFEN NICHT an der Administration des ZETA Clusters teilnehmen. Bei der Kontrolle ist insbesondere auf ungewöhnliche, nicht nachvollziehbare oder maliziöse Administratoraktivitäten zu achten.  [<=]

Hinweis: Die in A_28751-* und A_28749-* definierten Anforderungen dürfen durch Automatisierung bzw. unterstützendes Tooling anstelle manueller Kontrollen umgesetzt werden, sofern das Vier‑Augen‑Prinzip weiterhin gewährleistet ist.

A_28752 - ZETA Guard - Sicherheitsmeldung bei Aktualisierung der Konfiguration des ZETA Guard

Falls der ZETA Guard in einer VAU umgesetzt wird, MUSS der Anbieter des TI 2.0-Dienstes sicherstellen, dass 

  • jede Konfigurationsänderung am ZETA Guard eine automatisierte Sicherheitsmeldung an das SIEM-System des Anbieters auslöst und 
  • auf jede dieser Meldungen eine Reaktion gemäß dem vordefinierten Incident-Management-Prozess erfolgt
[<=]

A_28753 - ZETA Guard - Incident-Management-Prozess bei Konfigurationsänderungen von ZETA Guard

Falls der ZETA Guard in einer VAU umgesetzt wird, MUSS der Anbieter des TI 2.0-Dienstes einen Incident-Management-Prozess etablieren, der bei jeder automatisierten SIEM-Meldung über eine Konfigurationsänderung am ZETA Cluster ausgelöst wird. Dieser Prozess MUSS eine unverzügliche Analyse und Bewertung der Änderung sicherstellen, um festzustellen, ob sie autorisiert war und ein Sicherheitsrisiko darstellt. Bei unautorisierten oder schädlichen Änderungen müssen definierte Korrekturmaßnahmen eingeleitet werden. [<=]

5.6 Sicherheits- und Datenschutz-Anforderungen an die Verarbeitung von Daten mit dem Schutzbedarf "sehr hoch"

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch“ verarbeitet und der Anbieter keine Kenntnis über die in dem ZETA Guard verarbeiteten Daten erlangen darf, gibt es Sonderanforderungen, um die Daten während der Verarbeitung zu schützen.

ZETA Guard muss in einer VAU laufen können. Daher muss der ZETA Guard die Speicherung und Verwendung der Privatschlüssel von Komponenten-Identitäten in einem HSM unterstützen. Für die Kubernetes etcd Verschlüsselung unterstützt ZETA Guard KMS v2.

A_25608-01 - ZETA Guard - Verarbeitung von Daten mit Schutzbedarf "sehr hoch"

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch“ verarbeitet und der Anbieter des TI 2.0-Dienstes keine Kenntnis über die in dem ZETA Guard verarbeiteten Daten erlangen darf, MUSS der Anbieter den ZETA Guard in einer VAU umsetzen.
[<=]

A_25763-01 - Zero Trust-Komponenten - Private Schlüssel der Komponenten-Identitäten in einem HSM

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch“ verarbeitet und der Anbieter des TI 2.0-Dienstes keine Kenntnis über die in dem ZETA Guard verarbeiteten Daten erlangen darf, MUSS der Anbieter die privaten Schlüssel der Identitäten des ZETA Guards in einem HSM speichern.
[<=]

A_25764 - Zero Trust-Komponenten - Sicherer Betrieb und Nutzung eines HSMs

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch“ verarbeitet und der Anbieter des TI 2.0-Dienstes keine Kenntnis über die in dem ZETA Guard verarbeiteten Daten erlangen darf, MUSS der Anbieter beim Einsatz eines HSMs sicherstellen, dass die auf dem HSM verarbeiteten privaten Schlüssel, Konfigurationen und eingesetzte Software nicht unautorisiert ausgelesen, unautorisiert verändert, unautorisiert ersetzt oder in anderer Weise unautorisiert benutzt werden können. [<=]

A_25765 - Zero Trust-Komponenten - Einsatz zertifizierter HSM

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch“ verarbeitet und der Anbieter des TI 2.0-Dienstes keine Kenntnis über die in dem ZETA Guard verarbeiteten Daten erlangen darf, MUSS der Anbieter beim Einsatz eines HSMs sicherstellen, dass dessen Eignung durch eine erfolgreiche Evaluierung nachgewiesen wurde. Als Evaluierungsschemata kommen dabei Common Criteria oder Federal Information Processing Standard (FIPS) in Frage. 
Die Prüftiefe MUSS mindestens:

  1. FIPS 140-2 Level 3 oder
  2. FIPS 140-3 Level 3 oder  
  3. Common Criteria EAL 4+ (mit AVA_VAN.5)
entsprechen. [<=]

A_26065-01 - Nur zugelassene Images in Produktion

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch“ verarbeitet und der Anbieter des TI 2.0-Dienstes keine Kenntnis über die in dem ZETA Guard verarbeiteten Daten erlangen darf, MUSS der Anbieter eine VAU verwenden, die mit technischen Mitteln sicherstellt, dass nur von gematik signierte und für den Einsatz in der PU vorgesehene Produktimages in der PU laufen können.   [<=]

Das ZETA Guard-Image ist unabhängig von einer spezifischen VAU-Architektur. Eine VAU ist allerdings in der Regel auf eine bestimmte Architektur (wie z. B. SGX, TDX, SEV usw.) ausgelegt. Da ZETA Guard aus mehreren Komponenten besteht, kann der Hersteller des TI 2.0-Dienstes flexibel entscheiden, wie ZETA Guard auf seiner VAU-Plattform implementiert wird. Dies kann beispielsweise die Nutzung von Confidential Containern, virtuellen Maschinen (VMs) oder die vollständige Ausführung von ZETA Guard innerhalb einer VAU umfassen. Entsprechend dieser Entscheidung muss der Hersteller das ZETA Guard-Image für die jeweils eingesetzte VAU-Architektur umwandeln.

A_28756 - Umsetzung ZETA Guard in Sicherheits- und Datenschutzkonzept

Falls der ZETA Guard in einer VAU umgesetzt wird, muss der Hersteller des TI 2.0-Dienstes die Umsetzung von ZETA auf seiner VAU-Platform in seinem Sicherheits- und Datenschutzkonzept beschreiben.  [<=]

A_28405 - ZETA Guard – Umwandlung für Ziel-VAU-Architektur

Falls der ZETA Guard in einer VAU umgesetzt wird, muss der Hersteller des TI2.0-Dienstes sicherstellen:

  • dass das ZETA Guard-Image in einer manipulationssicheren Build-Pipeline für die Ziel-VAU-Architektur erstellt und umgewandelt wird, und
  • dass der Build-Log sämtliche VAU-spezifischen Ergänzungen am ZETA Guard-Image protokolliert und für die gematik auditierbar ist.
[<=]

A_28962 - ZETA GUARD - Nachweis der Umsetzung von Anforderungen in dem Build-Pipeline

Falls der ZETA Guard innerhalb einer VAU umgesetzt wird, können die Sicherheits‑ und Datenschutzanforderungen an den ZETA Guard über die Build‑Pipeline erfüllt werden. In diesem Fall MUSS der Hersteller des TI‑2.0‑Dienstes die Umsetzung dieser Anforderungen im Sicherheits‑ und Datenschutzkonzept nachvollziehbar beschreiben, sodass ein Gutachter die konforme Umsetzung eindeutig prüfen kann. [<=]

A_28744 - ZETA Guard - Ressourcenserver-Zugriff nur von freigegebenen Komponenten

Falls der ZETA Guard in einer VAU umgesetzt wird, MUSS der Hersteller des TI 2.0-Dienstes sicherstellen, dass der Zugriff auf den Ressourcenserver ausschließlich durch attestierte ZETA-Komponenten erfolgt. Die Attestierungswerte dieser Komponenten müssen vorab eindeutig geprüft und explizit für den Zugriff freigegeben worden sein.
[<=]

A_28745 - ZETA Guard - Zugriff nur von freigegebenen Ressourcenservern

Falls der ZETA Guard in einer VAU umgesetzt wird, MUSS der Hersteller des TI 2.0-Dienstes sicherstellen, dass der Zugriff auf die ZETA-Komponenten ausschließlich durch einen attestierten Ressourcenserver erfolgt. Die Attestierungswerte dieses Ressourcenservers müssen zuvor eindeutig geprüft und explizit für diesen Zugriff freigegeben worden sein.
[<=]

A_28757 - ZETA Guard - Zugriff nur zwischen attestierten Komponenten

Falls der ZETA Guard in einer VAU umgesetzt wird, MUSS der Hersteller des TI 2.0-Dienstes sicherstellen, dass der Zugriff ziwschen ZETA-Komponenten ausschließlich durch attestierte ZETA-Komponenten erfolgt. Die Attestierungswerte dieser Komponenten müssen vorab eindeutig geprüft und explizit für den Zugriff freigegeben worden sein. [<=]

A_28809 - ZETA Guard - Abgesicherte Kommunikation zwischen ZETA-Komponenten in einer VAU

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch" verarbeitet und der Anbieter des TI 2.0 Dienstes keine Kenntnis über die im ZETA Guard verarbeiteten Daten erlangen darf, MUSS der Anbieter sicherstellen, dass:

  • die Kommunikation zwischen den ZETA Guard Komponenten durch mTLS abgesichert ist oder
  • sich die Komponenten innerhalb einer gemeinsamen VAU befinden, sodass die unverschlüsselte Kommunikation den geschützten Bereich der VAU zu keinem Zeitpunkt verlässt.
[<=]

5.7 Sicherheits- und Datenschutz Anforderungen an dem ZETA Client in FdVs

A_25802 - ZETA Client - Einhaltung der BSI [TR-03161-1]

Der ZETA Client eines FdVs MUSS die BSI [TR-03161-1] erfüllen, sofern sie für den ZETA Client anwendbar ist. [<=]

Hinweis: Nicht anwendbar können zum Beispiel sein: O.Paid .. Die Anwendbarkeit ist zwischen Hersteller des ZETA Clients und dem Gutachter zu klären. Der Gutachter gibt sein Votum über die Erfüllung der BSI [TR-03161-1] in Form der Bewertung der Erfüllung der A_25802  ab, wobei die A_25802 als „umgesetzt“ bewertet werden kann, wenn die anwendbaren Abschnitte der BSI [TR-03161-1] aus Sicht des Gutachters erfüllt sind.

5.8 Clientsystem und ZETA Client

Ein Clientsystem ist eine Softwarekomponente in der Verwendung eines Nutzers zum Ausführen fachlicher Anwendungsfälle z.B. als Primärsystem (PVS, AVS, LIS, KIS etc.) oder als Frontend des Versicherten (ePA-App, E-Rezept-App, TI-Messenger etc.). Dieses Clientsystem wird dem Nutzer durch einen Hersteller zur Verfügung gestellt.

Ein ZETA Client ist ein Teil des Clientsystems, der die Kommunikation mit dem PDP und dem PEP eines Dienstes übernimmt.

Mobile iOS und Android Apps werden unterstützt und setzen ebenfalls einen ZETA Client um. Anforderungen, die nur für diese Clientsysteme und ZETA Clients gelten werden, verwenden die Bezeichnung "mobiler Client" oder "mobiles Clientsystem" und "mobiler ZETA Client".

5.8.1 Hersteller

A_25335 - Hersteller Clientsystem - Hinweise und Maßnahmen sicherer Betrieb

Der Hersteller eines Clientsystems MUSS den Nutzer über Maßnahmen zum sicheren Betrieb seines Clientsystems vor der Inbetriebnahme informieren und während des Betriebs stets zum Abruf durch den Nutzer bereithalten. [<=]

A_25336 - Hersteller Clientsystem - Regelmäßige Updates

Der Hersteller eines Clientsystems MUSS, solange das Produkt nicht abgekündigt ist, dem Nutzer regelmäßig (z. B. quartalsweise) Updates für das Clientsystem bereitstellen, um das Clientsystem dauerhaft auf dem Stand der Technik zu halten und Sicherheitslücken zu schließen. [<=]

A_25337 - Hersteller Clientsystem - Registrierung für product_id

Der Hersteller eines Clientsystems MUSS sich über einen organisatorischen Prozess bei der gematik für die Nutzung von Diensten, für welche Token abgerufen werden sollen, registrieren. Der Hersteller eines Clientsystems bekommt dabei eine "product_id" zugewiesen, die in jeder Instanz des Clientsystems verwendet werden MUSS. [<=]

5.8.2 Verbindungsaufbau

A_25338-01 - ZETA Client - Authentifizierung beim Token Exchange

Der ZETA Client MUSS sich gegenüber dem ZETA Guard Authorization Server beim Token Exchange mit einem JWT Bearer Token gemäß [RFC7523] und gemäß[client-assertion-jwt.yaml] authentifizieren. Dabei MUSS die von der gematik für das Clientsystem ausgestellte product_id nach [A_25337] und die Versionskennzeichnung des Clients nach folgendem Schema verwendet werden:

  • <product_id> gemäß Registrierung bei der gematik mit Länge maximal 20 Zeichen, Zeichenvorrat [0-9a-zA-Z\-],
  • <product_version> gemäß Produktidentifikation mit Länge 1-20 Zeichen, Zeichenvorrat [0-9a-zA-Z\-\.].
[<=]

A_25339 - ZETA Client - Exponential Backoff

Der ZETA Client SOLL bei Server-seitigen Fehlermeldungen, die auf eine Überlastung des Zielsystems schließen lassen (z. B. HTTP-status 5xx, 429 - too many requests etc.), erneute Verbindungsversuche nach dem Prinzip des Exponential Backoffs [ExpBack] durchführen. [<=]

Hinweis: Die Parameter für das Verfahren des Exponential Backoffs werden vom Hersteller des ZETA Clients festgelegt.

A_27378-01 - ZETA Client - TLS

Der ZETA Client MUSS mindestens TLS 1.2 oder höher unterstützen.
[<=]

A_25340-01 - ZETA Client- Zertifikatsprüfung

Der ZETA Client MUSS alle Zertifikate, die es aktiv verwendet (bspw. TLS-Verbindungsaufbau), auf Integrität und Authentizität prüfen. Falls ein Zertifikat ungültig ist, so MUSS der ZETA Client die von dem Zertifikat und den darin enthaltenen Attributen (bspw. öffentliche Schlüssel) abhängenden Arbeitsabläufe ablehnen.
Der ZETA Client MUSS alle öffentlichen Schlüssel, die es verwenden will, auf eine positiv verlaufene Zertifikatsprüfung zurückführen können.

Die Zertifikatsprüfung MUSS folgende Prüfungen enthalten:

  • Der ZETA Client MUSS den Common Name (CN) oder Subject Alternative Name (SAN) des Zertifikats mit dem erwarteten Hostnamen vergleichen.
  • Der Client MUSS die Gültigkeitsdauer des Zertifikats (Nicht vor und Nicht nach) überprüfen.
  • Vertrauenswürdigkeit der Zertifikatskette: Sicherstellen, dass die Kette zu einer vertrauenswürdigen Root-CA führt.
  • Revocation-Prüfung für das End-Entity-Zertifikat (Server-Zertifikat): Der Client MUSS den Widerrufsstatus prüfen. Hierbei SOLL primär eine vom Server bereitgestellte OCSP-Response (OCSP Stapling) ausgewertet werden. Fehlt diese, MUSS die Prüfung über gecachte CRLs oder OCSP-Responses erfolgen.
  • Revocation-Prüfung für Sub-CA-Zertifikate: Der Client MUSS den Widerrufsstatus der Sub-CAs in der Kette prüfen. Um Lastspitzen und Latenzen zu vermeiden, SOLLEN hierfür vom Betriebssystem bereitgestellte Mechanismen (z. B. CRLite, lokale Trust-Stores) oder serverseitiges Multi-Stapling (TLS 1.3) verwendet werden. Falls Live-Abfragen (OCSP/CRL) für Sub-CAs notwendig sind, MÜSSEN deren Antworten zwingend entsprechend ihrer Gültigkeitsdauer (Feld nextUpdate) lokal gecacht werden.
Der ZETA Client MUSS die Root-Zertifikate, die von den Mitgliedern des [CAB-Forum] ausgestellt werden, als Vertrauensanker standardmäßig unterstützen. Dies impliziert:
  • Eine Standard-Liste von [CAB-Forum] Root-Zertifikaten ist im ZETA Client enthalten und wird regelmäßig aktualisiert oder der ZETA Client verwendet den Truststore des Betriebssystems.
[<=]

A_27379-01 - ZETA Client - OCSP Stapling Unterstützung

Der ZETA Client MUSS OCSP Stapling erkennen und nutzen, wenn es vom Server bereitgestellt wird.
Der ZETA Client MUSS die Gültigkeit der OCSP-Antwort (Signatur, Signierer) prüfen.
Der ZETA Client MUSS die Gültigkeitsdauer der OCSP-Antwort prüfen.
Der ZETA Client MUSS überprüfen, ob die OCSP-Antwort zum angefragten Zertifikat passt.
OCSP-Antworten MÜSSEN im Cache für die Zeit bis NextUpdate der OCSP Response gespeichert werden, um unnötige Abfragen zu vermeiden. Die Dauer der Speicherung im Cache MUSS konfigurierbar sein und mindestens 1 Stunde betragen.
Wenn NextUpdate nicht in der OCSP Response enthalten ist, dann MUSS die OCSP Response bis ThisUpdate + 24 Stunden im Cache gespeichert werden.
Wenn OCSP Stapling nicht angeboten wird, MUSS der ZETA Client entweder die CRL laden oder den OCSP Responder des Zertifikats direkt abfragen.
Wenn weder eine OCSP Response noch eine CRL verfügbar sind, MUSS der ZETA Client den Verbindungsaufbau abbrechen.
[<=]

A_26681-01 - ZETA Client - Umsetzen eines ZETA/ASL-Kanals

Der ZETA Client MUSS einen ZETA/ASL-Kanal (Client-Seite) umsetzen können.

Der ZETA/ASL Kanal muss aufgebaut werden, wenn in [opr-well-known.yaml] der claim zeta_asl_use den Wert required oder required_passthrough hat. Der innere Request MUSS ein Access Token und ein DPoP Token enthalten. Das Access Token aud claim und das DPoP Token htu claim MÜSSEN die URI des Resource Server Endpunktes enthalten.

Bei zeta_asl_use: required_passthrough gilt:
Im äußeren HTTP Request MÜSSEN zusätzlich ein Access Token und ein DPoP Token vorhanden sein. Das aud claim im Access Token und das htu claim im DPoP Token im äußeren HTTP Request MÜSSEN die URI des ZETA/ASL Endpunktes enthalten.
[<=]

Hinweis: Ob ein ZETA/ASL Kanal zu verwenden ist, wird im OAuth Protected Resource Well-known Dokument des TI 2.0 Dienstes festgelegt (claim zeta_asl_use). Die Anforderungen für den ZETA/ASL-Kanal sind in [gemSpec_Krypt#8] zu finden.

A_28426 - ZETA Client, Service Discovery

Der ZETA Client MUSS die Well-known und JWKS JSON-Dokumente regelmäßig einmal alle 24 Stunden neu laden, wenn im HTTP-Response-Header kein Cache-Control-Header vom ZETA Guard eingefügt wurde. Der ZETA Client MUSS die Service Discovery erneut durchführen, wenn beim Kommunikationsaufbau zu den geschützten Ressourcen der HTTP-Statuscodes 404 (Not Found) empfangen wird. [<=]

A_28425-01 - ZETA Client, Service Discovery – if-none-match und etag

Der ZETA Client MUSS bei der Abfrage der Well-known JSON-Dokumente die HTTP-Header if-none-match und etag verwenden. [<=]

5.8.3 Client-Registrierung

Offener Punkt: Details in diesem Kapitel werden im Rahmen der Implementierung zwischen gematik und dem Zero Trust-Hersteller festgelegt und in einer Folgeversion veröffentlicht. Die Client-Registrierung für mobile Apps (ZETA Stufe 2) wird dienstübergreifend ermöglichen, dass im Falle von Big Apps (Unterstützung mehrerer TI-Anwendungen in einem Client) der Nutzer nur einmalig aktiv werden muss, um sein Client mittels 2. Faktor zu bestätigen. 

A_28465 - ZETA Client, Registrierung mit mehreren ZETA Guard

Der ZETA Client MUSS sich einmalig am Authorization Server pro ZETA Guard registrieren. [<=]

Hinweis: Dabei ist es unerheblich, ob der TI 2.0-Dienst einen oder mehrere Ressource Server bereitstellt. Der PDP im ZETA Guard kann für mehrere Resource Server eines TI 2.0-Fachdienste zuständig sein. Diese Realisierung wird durch die Verwendung des API-Katalog in der Service Discovery ermöglicht.

A_28524 - ZETA Client, Konfigurationsdaten pro ZETA Guard Registrierung

Der ZETA Client MUSS die Registrierungs- und Konfigurationsdaten inklusive der client-id pro ZETA Guard Registrierung verwalten. [<=]

Hinweis: Grundsätzlich kann ZETA Guard den Zugriff auf mehrere Ressourcen kontrollieren.

A_25432-01 - ZETA Client - Ablauf Client-Registrierung

Der mobile ZETA Client (oder ein stationärer Client) für Versicherte MUSS, sofern er an Schnittstellen der Telematikinfrastruktur wegen einer ungültigen/fehlenden Client-Registrierung abgewiesen wird, eine Registrierung am Authorization Server durchführen, indem er

  • kryptografische Client-Credentials lokal generiert,
  • den/die Nutzer:in mittels OpenID Connect authentifiziert,
  • die generierten Credentials sowie die Clientintegrität attestiert und
  • eine zusätzliche Nutzerbestätigung mittels One-Time-Passwort (gemäß [TR-03107-1]) über einen zweiten Kommunikationsweg (E-Mailbestätigung) startet.
[<=]

Hinweis: Für die Client-Registrierung muss das Vertrauensniveau hoch, nicht erreicht werden.

A_25766 - ZETA Client - Client Credentials in TI Qualität

Der ZETA Client MUSS die Client-Credentials im Form von kryptografischen Schlüsseln gemäß der Festlegungen in [gemSpec_Krypt] (Verfahren, Algorithmen, Schlüssellängen etc.) unterstützen. [<=]

A_25769 - ZETA Client - Client Credentials sicher generieren und schützen

Der ZETA Client auf mobilem Gerät mit Apple- oder Android-basierter Betriebsumgebung MUSS die Generierung der Client-Credentials derart generieren und speichern, dass ein Kopieren und Exportieren der Schlüssel verhindert wird. [<=]

Hinweis: Eine Speicherung der Schlüssel in einem Hardware-Modul ist gegenüber einer Software-Lösung (z. B. Android TEE) zu bevorzugen.

A_25770 - ZETA Client - Client Credentials Rotation

Der ZETA Client MUSS seine Client-Credentials regelmäßig rotieren (erneuern und neu registrieren), wobei die Häufigkeit der Rotation durch die gematik nach einer Auswertung der initialen Nutzererfahrung festgelegt wird. [<=]

Hinweis: Das Client Instance Key Pair soll initial 2 Jahre gültig sein. Der private Client Instance Key PrK.Client.Sig soll im TPM2 Modul verwendet werden (oder Secure Enclave bei macOS und iOS sowie TEE bei Android).

A_25767 - ZETA Client - Clientkey in JWT

Das ZETA Client MUSS Private Key JWT [RFC7521] und [RFC7523] sowie DPoP [RFC9449] zur Authentifizierung unterstützen. [<=]

A_25434 - ZETA Client - Client-Registrierung mit bestätigten Umgebungseigenschaften Android

Der ZETA Client für eine Google-Android basierte Betriebsumgebung MUSS seine Client-Credentials, App-Integrität und -Authentizität sowie OS-/FW und HW-Eigenschaften über Key and ID Attestation gegenüber PDP Client-Registrierung bestätigen.. [<=]

A_25768 - ZETA Client - Client-Registrierung mit bestätigten Umgebungseigenschaften Apple

Der ZETA Client für eine Apple-basierte Betriebsumgebung (iOS, macOS) MUSS die Client-Credentials, App Integrität und Authentizität über DCAppAttest gegenüber dem PDP Authorization Server bestätigen. Eigenschaften der Laufzeitumgebung MÜSSEN durch das Clientsystem über einen geprüften Prozess bestätigt werden. [<=]

A_25758 - ZETA Client - Erfassung Kontaktinformation für Offband-Verifikation

Der mobile ZETA Client MUSS vom Nutzer eine strukturell valide Kontaktinformation (E-Mailadresse) abfragen und für eine Offband-Verifikation (Trust on First Use) an den Endpunkt des Authorization Servers übertragen. [<=]

A_25732 - ZETA Client - Unterstützung des Nutzers bei der Client-Registrierung

Der mobile ZETA Client MUSS den Nutzer bei der Client-Registrierung und -Verwaltung geeignet unterstützen (z. B. mittels Guide, Tutorial o. ä.). [<=]

A_25733 - ZETA Client - Clientverwaltung und manuelle De-Registrierung

Der ZETA Client MUSS dem Nutzer eine Übersicht aller beim Client-Registrierungsdienst registrierten Clients darstellen und die Möglichkeit zur De-Registrierung einzelner Clients anbieten. [<=]

A_25734 - ZETA Client - Zugriffsprotokoll Client-Registrierung

Der ZETA Client MUSS dem Nutzer einen Einblick in das Zugriffsprotokoll der Schnittstellen des Client-Registrierungsdienstes für genutzte Clients dieses Nutzers geben. [<=]

A_25735-01 - mobiler Client- Push-Benachrichtigung

Das Clientsystem MUSS dem Nutzer die Möglichkeit geben, Push-Benachrichtigungen für Aktivitäten über registrierte Clients und Neuregistrierungen für diesen Nutzer zu aktivieren, zu ändern und zu deaktivieren. [<=]

5.8.4 Nutzerauthentifizierung

A_25761 - ZETA Client - Nutzerauthentifizierung mittels etablierter Standards

Der ZETA Client MUSS die Mechanismen OAuth Authorization Code Flow mit OpenID Connect und OpenID Federation (Auswahl des zuständigen sektoralen IDP) oder OAuth2 Token Exchange mit private_key_jwt Client Authentifizierung unterstützen.   [<=]

Hinweis: Perspektivisch sollen ZETA Clients auch OpenID for Verifiable Credentials (OIDC4VC) unterstützen. OAuth2 Token Exchange wird für stationäre Clients mit SM(C)-B Authentisierung verwendet. OAuth Authorization Code Flow, OpenID Connect und OpenID Federation wird grundsätzlich von mobilen Clients verwendet, kann aber auch von stationären Clients verwendet werden.

A_25762-01 - ZETA Client - Nutzerauthentifizierung - Unterstützung etablierter Identitäten und Dienste

Der ZETA Client MUSS zur Authentifizierung des Nutzers mindestens eines der folgenden Verfahren unterstützen:

  • Authentifizierung des Nutzers gegenüber einem Sektoralen IDP der IDP Föderation gemäß [gemSpec_IDP_Sek] (GesundheitsID)
  • Authentifizierung des Nutzers mittels SM(C)-B signiertem Subject Token.
[<=]

5.8.5 Session Management

A_25781 - ZETA Clients - OAuth2 Autorisierung

Der ZETA Client MUSS die Rolle eines OAuth2 Clients [RFC6749] übernehmen und eine Autorisierung vom Authorization Server einholen. Dabei MUSS PKCE Flow [RFC7636] verwendet werden. 
[<=]

A_25782 - ZETA Client - OAuth2 Session Management

Der ZETA Client MUSS

  • die vom Autorisation Server ausgestellten Access- und Refresh Token gemäß [RFC6749#1.5] sowie die DPoP Schlüssel gemäß [RFC9449] bis zur nächsten Aufforderung zur Autorisierung oder Authentifizierung als User-Session sicher aufbewahren,
  • nach Bedarf abgelaufene Access Token über Refresh Token erneuern und
  • eine Refresh Token-Rotation gemäß [RFC6749#10.4] unterstützen.
[<=]

A_25783-01 - ZETA Client - Anweisungen aus HTTP Response Status Codes und Header folgen

Der ZETA Client MUSS die HTTP Response Status Codes und HTTP Header entsprechend der Vorgaben der Resource Server und Zero Trust-APIs auswerten und den Anweisungen daraus folgen und insbesondere

  • eine Step-Up- oder erneute Authentifizierung des Nutzers,
  • eine Re-Autorisierung und erneute Attestation der Client-Instanz und
  • eine Anzeige der Warnungen aufgrund der Policy-Entscheidungen
umsetzen. [<=]

5.8.6 Liste der HTTP-Statuscodes

Der folgende Abschnitt enthält die HTTP-Statuscodes, die ZETA Clients von Zero Trust-Komponenten erhalten können, basierend auf den spezifischen Schritten wie Authentifizierung, Client-Registrierung und HTTP Proxy.

Die Fehlercodes sollen dem Client die Möglichkeit geben, angemessen auf die jeweilige Fehlersituation zu reagieren.
Dabei wird unterschieden zwischen den folgenden Ergebnisklassen, die über verschiedene Statuscodes angezeigt werden:

  1. Erfolgreiche Aktion: dies sind die Statuscodes
    1. 2xx
    2. 3xx
  2. Abschließend nicht erfolgreiche Aktion: dies sind insb. die Statuscodes:
    1. 400 Bad Request: sollte ein Request mit 400 abgelehnt werden, kann der Client nicht entscheiden was anders aufzurufen wäre und würde den Request daher nur wiederholen können. Daher wird hier abgebrochen.
    2. Alle weiteren 4xx Statuscodes die nicht in den anderen Klassen gelistet sind (insb. nicht 401 und 403, siehe nächsten Punkt).
  3. Step-Up Authentifizierung: Eine Step-Up-Authentifizierung wird grundsätzlich nur einmal automatisch durchgeführt, bevor abgebrochen wird. Dies dient auf der einen Seite der erneuten Prüfung gegen die OPA-Regeln z.B. im Falle von Netzwerkwechseln, und auf der anderen Seite dem Vermeiden einer Überlastung durch nur einmalige Wiederholung. Hier wird unterschieden zwischen Requests gegen den PDP, bei denen die OPA Regeln bereits abgefragt werden – diese erlauben keinen Retry bei Forbidden, und anderen Requests, bei denen nach dem 403 Forbidden die OPA Regeln neu abgefragt werden sollen:
    1. Bei einem 401 Unauthorized Statuscode bei einem Request gegen den PDP im Rahmen der Client-Registrierung, der Authentifizierung oder des Token Refreshs kann der Client einen Request nach einer erneuten Authentifizierung einmalig wiederholen. Die angenommenen Fehlersituationen hier sind z.B. während des Requests ablaufende Zertifikate/Token (time-of-check to time-of-use Situation), oder die Invalidierung eines Access Token durch Impossible-Travel Detektion oder ähnliches. Die Authentifizierung soll maximal einmal wiederholt werden, bevor ein 401/403 Status nach einem wiederholten Request als abschließend nicht erfolgreich gewertet wird.
    2. Bei einem 401 Unauthorized sowie bei einem 403 Forbidden beim Zugriff auf eine Ressource über den PEP HTTP Proxy sowie andere PDP APIs (z.B. Client Management in Stufe 2) kann der Client statt einer vollständig neuen Authentifizierung einen Token-Refresh unter Nutzung eines vorhandenen Refresh-Token versuchen. Falls dort ein weiterer 401/403 Statuscode erhalten wird, wird dann einmalig eine volle Authentifizierung durchgeführt, bevor der ursprüngliche Request mit neuem Access Token wiederholt werden kann.
  4. Temporäre Fehlersituation:
    1. Bei 5xx Statuscode kann der Client wie in ZT_HTTP_Statuscodes den Request ggf. nach Wartezeit wiederholen
    2. 429 Too Many Requests – auch hier kann der Client – nach Wartezeit – den Request wiederholen.

A_27007 - ZETA Client - HTTP Statuscodes

Der ZETA Client MUSS die HTTP Statuscodes gemäß Tabelle "ZT_HTTP_Statuscodes" unterstützen.  [<=]

Tabelle 7: ZT_HTTP_Statuscodes

Endpunkte HTTP Statuscodes
Authentifizierung mit Client Assertion JWT 200 OK: Authentifizierung erfolgreich. Der Client kann mit der gewünschten Operation fortfahren, z.B. Zugriff auf geschützte Ressourcen.
400 Bad Request: Fehlerhafte oder ungültige JWT-Assertion (z.B. falsches Format oder fehlende Claims). 
401 Unauthorized: Authentifizierung fehlgeschlagen, z.B. aufgrund einer ungültigen Signatur oder eines abgelaufenen JWT. Der Client initiiert eine einmalige Step-Up Authentifizierung, siehe oben zu Retry der Authentifzierung. 
403 Forbidden: Der Client hat keine Berechtigung, auf die angeforderte Ressource zuzugreifen, obwohl er authentifiziert ist. Der Client darf keine weiteren Versuche unternehmen und soll den Nutzer entsprechend informieren.
Authentifizierung mit OIDC und Authorization Code Flow 200 OK: Erfolgreiche Authentifizierung und Autorisierung. Der Client kann mit der gewünschten Operation fortfahren, z.B. Zugriff auf geschützte Ressourcen.
302 Found: Der Client wird zum Autorisierungs-Endpunkt des Identitätsproviders umgeleitet. Der Client sollte der Weiterleitungs-URL folgen, um den nächsten Schritt im Autorisierungscode-Austausch abzuschließen.
400 Bad Request: Fehlerhafte Anfrage, z.B. fehlende oder ungültige Parameter (z.B. falscher "redirect_uri", "client_id"). 
401 Unauthorized: Authentifizierung fehlgeschlagen, z.B. ungültiger Code oder Token. Der Client initiiert eine einmalige Step-Up Authentifizierung, siehe oben zu Retry der Authentifzierung.  
403 Forbidden: Autorisierung fehlgeschlagen, z.B. fehlende Zugriffsrechte. Der Client hat möglicherweise keine Berechtigung, die angeforderte Ressource zu nutzen. Der Client sollte den Nutzer darüber informieren und keine weiteren Anfragen stellen.
Token-Refresh 200 OK: Authentifizierung erfolgreich. Der Client kann mit der gewünschten Operation fortfahren, z.B. Zugriff auf geschützte Ressourcen.
400 Bad Request: Fehlerhafte oder ungültige JWT-Assertion (z.B. falsches Format oder fehlende Claims).  
401 Unauthorized: Authentifizierung fehlgeschlagen, z.B. aufgrund einer ungültigen Signatur oder eines abgelaufenen JWT. Der Client initiiert eine einmalige Step-Up Authentifizierung, siehe oben zu Retry der Authentifzierung. 
403 Forbidden: Der Client hat keine Berechtigung, auf die angeforderte Ressource zuzugreifen, obwohl er authentifiziert ist. Der Client darf keine weiteren Versuche unternehmen und soll den Nutzer entsprechend informieren.
Client-Registrierung 201 Created: Client erfolgreich registriert. Der Client sollte die Registrierungsdaten sicher speichern und mit der weiteren Interaktion fortfahren.
400 Bad Request: Fehlerhafte Anfrage, z.B. ungültige oder unvollständige Clientdaten.
401 Unauthorized: Fehlende oder ungültige Authentifizierung bei der Registrierung. Der Client muss sicherstellen, dass er korrekt authentifiziert ist. Der Client initiiert eine einmalige Step-Up Authentifizierung, siehe oben zu Retry der Authentifzierung.
403 Forbidden: Zugriff verweigert, z.B. wenn der Client nicht berechtigt ist, sich zu registrieren. Der Client sollte prüfen, ob er die Berechtigung zur Registrierung hat. Wenn nicht, sollte er keine weiteren Versuche unternehmen und den Nutzer informieren.
409 Conflict: Konflikt bei der Registrierung, z.B. ein Client mit der gleichen ID existiert bereits. Der Client darf keine weiteren Registrierungsversuche senden und soll den Nutzer über die das Serverproblem informieren.
HTTP Proxy 200 OK: Anfrage erfolgreich durch den Proxy weitergeleitet. Der Client kann die angeforderte Ressource wie gewohnt verwenden.
301 Moved Permanently: Permanente Weiterleitung der Anfrage durch den Proxy. Der Client sollte die neue URL speichern und zukünftige Anfragen an diese Adresse senden.
302 Found: Temporäre Weiterleitung durch den Proxy. Der Client sollte der Weiterleitung folgen, um die angeforderte Ressource zu erhalten, aber die ursprüngliche URL für zukünftige Anfragen beibehalten.
400 Bad Request: Ungültige Anfrage an den Proxy. Der Client sollte die Anfrage überprüfen und sicherstellen, dass sie korrekt formatiert und vollständig ist, bevor er sie erneut sendet.
401 Unauthorized: Fehlende oder ungültige Authentifizierung. Der Client initiiert eine „Step-Up“ Authentifizierung, d.h. führt einmalig eine neue Authentifizierung durch und probiert den Request erneut. Falls auch dieser Request fehlschlägt wird abgebrochen. Siehe dazu auch oben zu Retry der Authentifzierung.
403 Forbidden: Zugriff auf die angeforderte Ressource durch den Proxy verweigert. Der Client initiiert eine „Step-Up“ Authentifizierung, d.h. führt einmalig eine neue Authentifizierung durch und probiert den Request erneut. Falls auch dieser Request fehlschlägt wird abgebrochen. Der Client darf keine weiteren Anfragen an diese Ressource senden und soll den Nutzer über die fehlende Berechtigung informieren.
404 Not Found: Die angeforderte Ressource wurde nicht gefunden.
405 Method Not Allowed: Die verwendete HTTP Methode wird nicht unterstützt für den Endpunkt.
502 Bad Gateway: Der Proxy hat eine ungültige Antwort vom Upstream-Server erhalten. Der Client sollte die Anfrage später erneut senden, da der Fehler auf einem Problem des Upstream-Servers beruhen könnte. Gegebenenfalls kann der Nutzer informiert werden.
504 Gateway Timeout: Der Proxy hat auf eine Antwort vom Upstream-Server gewartet, diese aber nicht innerhalb des Timeouts erhalten. Der Client sollte die Anfrage nach einer angemessenen Wartezeit erneut versuchen und den Nutzer darüber informieren, dass der Server nicht rechtzeitig geantwortet hat.
Alle Endpunkte 429 Too Many Requests: Zu viele Anfragen innerhalb eines bestimmten Zeitraums (Rate Limiting). Der Client sollte die Anzahl der Anfragen reduzieren und eine geeignete Wartezeit (Retry-After Header beachten) einhalten, bevor er die Anfrage erneut sendet. 
500 Internal Server Error: Allgemeiner Serverfehler. Der Client sollte den Vorgang möglicherweise zu einem späteren Zeitpunkt wiederholen oder den Nutzer auf ein Problem auf dem Server hinweisen.

5.8.7 ZETA Attestation Service

Der ZETA Attestation Service stellt einen gRPC-Dienst zur Verfügung, der es stationären Clients (Primärsysteme auf Basis von Windows oder Linux) ermöglicht, TPM-signierte Attestierungsinformationen für den Client abzurufen. Diese Informationen basieren auf Integritätsmessungen, die in ausgewählten Platform Configuration Registers (PCRs) des Trusted Platform Module (TPM) gespeichert sind. Der ZETA Guard Authorization Server verwendet diese Attestierungsdaten, um die Integrität und Authentizität der Softwareumgebung des Clients zu verifizieren, bevor Zugriff auf geschützte Ressourcen gewährt wird.

Der ZETA Attestation Service wird vom Hersteller des stationären Clients bereitgestellt und es muss eine manipulationsgeschützte Vertrauensbeziehung zwischen stationären Client und ZETA Attestation Service bestehen, um zu gewährleisten, dass die Attestation über die vorgesehenen Software-Komponenten erfolgt.

Der ZETA Attestation Service muss gemäß [API-ZETA-Attestation-Service] implementiert werden.

Hinweis: Während der Installation oder bei Updates des stationären Clients muss auch ein Update des ZETA Attestation Service erfolgen um eine neue Baseline für die Integrität des stationären Clients zu setzen. Die Baseline besteht aus einem Hash über alle unveränderlichen Komponenten des stationären Clients, inkl. ZETA Attestation Service.

Hinweis: Der ZETA Attestation Service muss bei jedem Start des Clients die Messung über die Integrität des Clients durchführen und in das PCR schreiben.

Hinweis: Der ZETA Attestation Service ist nicht für mobile Clients vorgesehen. Mobile Clients verwenden eine andere Attestierungsmethode, die auf den jeweiligen Plattformen basiert (z.B. Android und iOS).

Hinweis: Wenn die Messung des Clients von der Baseline abweicht, dann soll der Zeta Attestation Service automatisch den Support  des Herstellers informieren.

5.9 Client-Registrierungsdaten

Dieses Kapitel beschreibt die Datenstrukturen für die Kommunikation zwischen ZETA Client und ZETA Guard bei der Client-Registrierung.

Die Client-Registrierung erfolgt über ein vom Client erzeugtes und signiertes Client Assertion JWT, das Informationen über den Client sowie über die aktuelle Gerätesituation (Posture) enthält.

Die übermittelten Informationen werden vom Authorization Server geprüft und anschließend in der Client-Registry gespeichert. Der Authorization Server stellt diese Informationen dem Policy Decision Point für Autorisierungsentscheidungen zur Verfügung.

Die Client-Registrierung besteht aus drei logischen Datenstrukturen:

  • Client Assertion JWT – kryptographisch signierte Identifikation der Client-Instanz gemäß [client-assertion-jwt.yaml]
  • Client Statement – statische Eigenschaften des Clientsystems gemäß [client-statement.yaml]
  • Posture Informationen – Eigenschaften der Laufzeitumgebung des Clients gemäß [posture.yaml] sowie den referenzierten plattformabhängigen Informationen gemäß [posture-apple.yaml], [posture-android.yaml], [posture-tpm.yaml] und [posture-software.yaml].

5.9.1 Client Assertion JWT

Die konkrete Installation eines Clients wird durch ein Client Assertion JWT identifiziert. Das JWT wird vom Client signiert und beim Authorization Server übermittelt.

Tabelle 8: Tab-Client-Assertion-JWT

Claim Beschreibung
iss Aussteller des JWT. Muss die vom AuthS vergebene die OAuth 2.0 client_id des Clients sein.
sub Subject. Muss die OAuth 2.0 client_id des Clients sein.
aud Zielgruppe. Muss die Token-Endpoint-URL des Authorization Servers enthalten.
exp Ablaufzeitpunkt des JWT (Sekunden seit Epoch).
jti JWT-ID – eindeutiger Bezeichner des Tokens.
client_statement Optionales Client Statement. Nur im Registrierungs-Ablauf vorhanden. Schema [client-statement.yaml]

5.9.2 Client Statement

Das Client Statement (Schema: [client-statement.yaml]) enthält Informationen über die Client-Instanz und wird als Claim client_statement in den Payload des Client Assertion JWT eingebettet.

Tabelle 9: Tab-Client-Statement

Claim Beschreibung
sub Name / Bezeichnung des Clients.
platform Plattform der Client-Instanz. Erlaubte Werte: android, apple, windows, linux, other.
posture_type Art der übermittelten Posture. Erlaubte Werte: android, apple, software, tpm.
posture Posture der Client-Instanz. Struktur abhängig vom posture_type (s. Tabellen 3–6). Schema: posture.yaml.
attestation_timestamp Zeitstempel der Attestierung.

5.9.3 Posture Informationen

Das Posture-Objekt dient dem Nachweis der Integrität der Laufzeitumgebung des Clients. Diese Informationen können sich im Laufe der Zeit ändern, beispielsweise durch Updates des Betriebssystems oder der Clientsoftware.

5.9.3.1 TPM Posture

Die TPM-Posture gilt für stationäre Clients (Windows oder Linux) mit TPM-basierter Attestierung.

Tabelle 10: Tab-Posture-TPM

Claim Beschreibung
product_id gematik-Produktbezeichner.
product_version Produktversion.
os Name des Betriebssystems.
os_version Version des Betriebssystems.
arch Hardware-Architektur.
tpm_attestation_key Öffentlicher Schlüssel des im TPM residenten Attestierungsschlüssels (PEM oder base64-DER).
tpm_quote TPM Quote der Client-Instanz.
tpm_event_log TPM Event Log der Client-Instanz.
tpm_ek_certificate_chain Endorsement-Key-Zertifikatskette des TPM-Herstellers (PEM oder base64-DER).
platform_product_id Plattform-spezifischer Produktbezeichner (Schema: product-id-windows.yaml oder product-id-linux.yaml).
5.9.3.2 Software Posture

Die Software-Posture gilt für generische Software-Clients ohne TPM-Attestierung (Windows oder Linux).

Tabelle 11: Tab-Posture-Software

Claim Beschreibung
product_id gematik-Produktbezeichner.
product_version Produktversion.
os Name des Betriebssystems.
os_version Version des Betriebssystems.
arch Hardware-Architektur.
public_key Öffentlicher selbst-signierter Signierungsschlüssel (PEM oder base64-DER).
attestation_challenge Attestierungs-Challenge der Client-Instanz; dient zur Überprüfung des öffentlichen Client-Instanz-Schlüssels und des Nonce vom AS.
platform_product_id Plattform-spezifischer Produktbezeichner (Schema: product-id-windows.yaml oder product-id-linux.yaml).
5.9.3.3 Apple Posture

Die Apple-Posture enthält die dekodierten Inhalte des Attestation- bzw. Assertion-Objekts einer iOS-App (Apple App Attest).

Tabelle 12: Tab-Posture-Apple

Claim Beschreibung
product_id gematik-Produktbezeichner.
product_version Produktversion.
system_version Betriebssystemversion.
system_name Name des Betriebssystems auf dem Gerät.
device_model Gerätemodell.
key_id Schlüsselbezeichner des kryptographischen Schlüssels auf dem Gerät (base64-enkodiert).
platform_product_id Plattform-spezifischer Produktbezeichner für Apple-Apps (Schema: product-id-apple.yaml).
fmt Format des Attestation-Statements. MUSS den Wert apple-appattest haben.
Optional, bei initialer Attestation verwendet.
attStmt Attestation-Statement: x5c (array of base64-Strings, X.509-Zertifikatskette) und receipt (base64, Apple-Receipt für Device Risk Assessment). Beide Unterfelder sind Pflicht, wenn attStmt vorhanden.
Optional, bei initialer Attestation verwendet
authData Strukturierte Authenticator-Daten der Initial-Attestation
Optional, bei initialer Attestation verwendet.
signature Kryptographische Signatur des privaten Geräteschlüssels.
Optional, bei nachfolgender Attestation.
assertionAuthenticatorData Vereinfachte Authenticator-Daten für Folge-Assertions: rpidHash (byte, SHA-256 der App-ID) und counter (integer, pro Assertion inkrementiert). Beide Unterfelder sind Pflicht, wenn das Objekt vorhanden ist.
Optional, bei nachfolgender Attestation.
client_data_json JSON-String mit den zu signierenden Request-Daten einschließlich eines server-seitig bereitgestellten Challenge.
Optional, bei nachfolgender Attestation.
5.9.3.4 Android Posture

Die Android-Posture enthält plattformspezifische Geräte- und Sicherheitseigenschaften gemäß
den Android-APIs (vgl. android.os.Build).

Tabelle 13: Tab-Posture-Android

Claim Beschreibung
product_id gematik-Produktbezeichner.
product_version Produktversion.
build Android-Build-Informationen; (Build.VERSION.SDK_INT, Build.VERSION.SECURITY_PATCH, Build.MANUFACTURER, Build.PRODUCT, Build.MODEL, Build.BOARD).
key_attestation_certificate_chain Zertifikatskette aus der Android Key Attestation.
platform_product_id Plattform-spezifischer Produktbezeichner für Android-Apps (Schema: product-id-android.yaml).
ro Systemeigenschaften (ro.crypto.state, ro.product.first_api_level).
packageManager Informationen des Package Managers (packageManager.feature_verified_boot, packageManager.mainline_patch_level).
keyguardManager Keyguard-Zustand (isDeviceSecure: boolean).
biometricManager Biometrische Fähigkeiten (deviceCredential: boolean, biometricStrong: boolean).
devicePolicyManager Richtlinien des Device Policy Managers (passwordComplexity: integer; erlaubte Werte: 0, 1, 2, 3).
play_integrity_token Von der Google Play Integrity API ausgestelltes und base64-enkodiertes Token. Wird vom AuthS validiert, um die meets_*_integrity-Claims zu generieren.

5.10 ZETA Guard

Die Software des ZETA Guards wird im Auftrag der gematik entwickelt und alle Komponenten als signierte OCI Images und als signiertes Helm Chart in einer gematik Artifact Registry bereitgestellt, sodass die Anbieter von TI 2.0 Diensten ihren spezifischen ZETA Guard darauf aufbauend in ihrer Kubernetes Umgebung konfigurieren und betreiben können.

A_28798 - ZETA Guard - Ausführung in einem Kubernetes Cluster

Der Anbieter eines TI 2.0-Dienstes MUSS ZETA Guard grundsätzlich in einem Kubernetes Cluster betreiben.
Wenn z. B. in einer VAU die Nutzung von Kubernetes nicht sinnvoll möglich ist, dann MUSS der Anbieter des TI 2.0-Dienstes nachweisen, dass seine Lösung ohne Kubernetes eine hinreichende Verfügbarkeit, Skalierbarkeit und Betriebsstabilität ermöglicht. [<=]

A_26519 - ZETA Guard, Unterstützung von Service-Mesh Lösungen

Die Komponenten des ZETA Guard MÜSSEN es ermöglichen, dass Service-Mesh Lösungen zur Verwaltung der Komponenten eingesetzt werden können. [<=]

A_26521 - ZETA Guard, Unterstützung von Canary Releases

Die Komponenten des ZETA Guard MÜSSEN Canary Releases unterstützen. [<=]

A_28851 - ZETA Guard - Architektur der TLS-Terminierung

Der Anbieter des TI 2.0-Dienstes MUSS sicherstellen, dass alle von außen eingehenden Verbindungen zum PEP HTTP Proxy und zum PDP Authorization Server über TLS abgesichert sind.
Die TLS-Terminierung KANN dabei flexibel erfolgen:

  • durch ein dem ZETA Guard vorgeschaltetes System (z. B. CDN, WAF oder externer Ingress),
  • durch den ZETA-internen Ingress / API-Gateway,
  • oder direkt an den Komponenten PEP HTTP Proxy und PDP Authorization Server.
[<=]

Hinweis: Die TLS-Terminierung für den PDP Authorization Server und den PEP HTTP Proxy kann über eine gemeinsame TLS-Verbindung (gleicher FQDN, gleicher Port) abgebildet werden.

A_28852 - ZETA Guard - TLS-Terminierung und ASL bei Einsatz einer VAU

Falls der ZETA Guard Daten mit dem Schutzbedarf „sehr hoch“ verarbeitet und in einer VAU (Vertrauenswürdige Ausführungsumgebung) betrieben wird, MUSS der Anbieter des TI 2.0-Dienstes sicherstellen, dass die TLS-Verbindung des Clients erst innerhalb der VAU terminiert wird (z. B. am PEP und PDP oder Ingress innerhalb der VAU).
Wird die TLS-Verbindung stattdessen an einer Komponente außerhalb der VAU terminiert (z. B. durch ein externes CDN oder eine WAF), MUSS zwingend der ZETA/ASL-Kanal (Application Security Layer) für PEP und PDP Endpunkte verwendet werden, um die Vertraulichkeit und Integrität der Daten vom Client bis in die VAU sicherzustellen.

[<=]

A_25666-01 - ZETA Guard - TLS-Terminierung

Die Komponente Ingress MUSS TLS für von außen eingehende Verbindungen terminieren können.
[<=]

Hinweis: TLS-Verbindungen von ZETA Clients können dort terminiert werden, wo es aus Sicht des Anbieters des TI 2.0-Dienstes am sinnvollsten ist (z. B. an einem CDN). Um dennoch eine verschlüsselte Verbindung bis zum ZETA Guard zu haben, kann ZETA/ASL verwendet werden.

A_26964-01 - ZETA Guard - OCSP Stapling

Komponenten innerhalb des ZETA Guards (inkl. Ingress), die von außen kommende TLS-Verbindungen terminieren, SOLLEN OCSP-Stapling [RFC6066] verwenden. 
[<=]

A_26639 - ZETA Guard - Unterstützung Websocket

Die Komponente Ingress MUSS das WebSocket-Protokoll unterstützen. [<=]

A_26640 - ZETA Guard - HTTP Protokoll-Versionen

Die Komponente Ingress MUSS das HTTP Protokoll in den Versionen HTTP/1.1, HTTP/2 und SOLL HTTP/3 unterstützen. [<=]

A_25652 - ZETA Guard - Notification Service

Der ZETA Guard Notification Service MUSS Push-Notifications über die von App-Anbietern bereitgestellten Push-Gateways unterstützen, um die Notifications an bestimmte oder alle registrierte Clients eines Anwenders verschicken zu können.
Der Notification Service MUSS gemäß [gemF_PushNotification] die Push Konfigurationen von ZETA Clients registrieren und verwalten können und MUSS die vom Resource Server empfangenen Notification Events an die dafür registrierten Push Gateways der Clients weiterleiten. [<=]

A_25737 - ZETA Guard - Push Notification

Der ZETA Guard MUSS eine Push Benachrichtigung an alle registrierten Clients des Nutzers, für die eine Push Notification aktiviert ist, verschicken, sobald sich Änderungen an der Liste der registrierten Clients dieses Nutzers ergibt. [<=]

A_26988 - Telemetriedaten Service - Fehlermeldungen

Alle Komponenten des ZETA Guard MÜSSEN ihre Fehlermeldungen so bereitstellen, dass der Telemetriedaten Service die Fehlermeldungen sammeln und an einen Monitoring Service weiterleileiten kann. [<=]

A_26661 - ZETA Guard - HTTP Statuscodes

Der ZETA Guard MUSS die HTTP Statuscodes gemäß Tabelle "ZT_HTTP_Statuscodes" unterstützen.  [<=]

A_26662 - ZETA Guard, HTTP Fehlerdetails

Der ZETA Guard MUSS bei Beantwortung eines Requests mit einem HTTP Fehler ein JSON Object ergänzen, das den Fehler beschreibt. Das JSON Object MUSS gemäß [zeta-error.yaml] aufgebaut sein. [<=]

Beispiel für eine sinnvolle Ergänzung der Fehlerdetails:

Bei der Authentifizierung mit Client Assertion JWT fehlt im JWT eine Angabe product_version oder die product_version ist nicht in der Policy Engine bekannt, dann antwortet der Authorization Server mit HTTP Status 400 Bad Request sowie einer Beschreibung, dass die product_version fehlt oder nicht bekannt ist.

A_27264 - ZETA Guard, Telemetriedaten

Alle ZETA Guard-Komponenten mit Ausnahme der Datenbanken MÜSSEN OpenTelemetry konforme Traces, Metriken, and Logs erzeugen. [<=]

A_27802-02 - ZETA Guard, JWT Prüfung

Der ZETA Guard MUSS bei der Prüfung von JWT die Prüfschritte gemäß https://www.rfc-editor.org/rfc/rfc7519.html#section-7.2   und https://www.rfc-editor.org/rfc/rfc7515.html#section-5.2 durchführen. [<=]

A_28963 - ZETA Guard, DPoP Prüfung

Der ZETA Guard MUSS bei der Prüfung von JWT die Prüfschritte gemäß [RFC9449]#name-checking-dpop-proofs durchführen.
[<=]

A_26668-02 - ZETA Guard - Rate Limit

Die Komponenten des ZETA Guard MÜSSEN für ihre durch ZETA Clients erreichbaren Endpunkte ein Rate Limit konfigurierbar einstellen können. Wenn ein Rate Limit konfiguriert ist, dann muss der Client über folgende Response Header informiert werden:

  • (x-rate-limit-limit (das erlaubte Limit),
  • x-rate-limit-remaining (verbleibende Anfragen) und
  • x-rate-limit-reset (Zeitpunkt, an dem das Limit zurückgesetzt wird)).
[<=]

Hinweis: Es gibt einen RFC Draft, der Rate Limits neu spezifiziert (https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/). Es ist geplant, dass nach Veröffentlichung des RFC ZETA Guard angepasst wird, um die neuen Rate Limit Festlegungen zu unterstützen.

A_27864-01 - ZETA Guard - Egress

Der ZETA Guard MUSS eine Egress Funktion implementieren, die durchsetzt, dass nur erlaubte ZETA Guard Verbindungen, zu Endpunkten außerhalb des Kubernetes Clusters, aufgebaut werden.
Zu den erlaubten ZETA Guard Verbindungen gehören mindestens:

  • Telemetriedaten-Empfänger der gematik
  • SIEM der gematik
  • Sektorale IDPs (wenn Versicherte zur Nutzergruppe gehören)
  • Federation Master der TI
  • ZETA Artifact Registry
  • DNS Resolver
  • OCSP Responder oder CRL (TLS TSPs nach CAB Forum)
  • SMC-B TSP OCSP Responder
  • OCSP Responder des TSP der Komponenten PKI der TI
  • Notification Services der App Hersteller
  • Mail Server des TI 2.0 Dienst Anbieters (für TOFU OTP Codes; wenn Versicherte zur Nutzergruppe gehören)
Weitere erlaubte Verbindungen zu Endpunkten des Anbieters, zu Endpunkten von Clientsystem Notification Services oder für Dienst-zu-Dienst Kommunikation können hinzugefügt werden.

[<=]

A_28435 - ZETA Guard, Ingress - Unterstützung Forwarded-Header

Die Komponente Ingress MUSS in jeder empfangene HTTP-Anfrage für die nachgelagerten Komponenten PDP Authorization Server und PEP HTTP Proxy den Forwarded-Header gemäß [RFC 7239] in der weitergeleiteten Anfrage hinzufügen oder aktualisieren. [<=]

A_28526-01 - ZETA Guard - Bereitstellung der lokalen Artifact Registry

Der Anbieter eines TI 2.0 Dienstes MUSS für seinen ZETA Guard eine lokale Artifact Registry bereitstellen, die alle benötigten Container Images aus der gematik Artifact Registry enthält.

Die lokale Artifact Registry MUSS so konfiguriert werden, dass

  • OCI Container Images für die ZETA Guard Komponenten in der benötigten Version vorhanden sind,
  • das ZETA Guard Provisioning Container Image alle 60 Minuten aktualisiert wird.
[<=]

Hinweis: Die Verfügbarkeit von ZETA Guard soll durch die lokale Bereitstellung der Artifact Registry erhöht werden. Die Policies und Daten werden von der Policy Engine direkt aus der ZETA Artifact Registry geladen und aktualisiert.

5.10.1 Klassifizierung der ZETA Guard Komponenten

Der ZETA Guard ist ein logisches Bundle das in der Laufzeitumgebung des TI-2.0-Dienstanbieters (in der Regel ein Kubernetes-Cluster) betrieben wird. Die Komponenten des ZETA Guard werden nach ihrem Funktionsumfang, ihrer Austauschbarkeit und der Verantwortung für die Bereitstellung klassifiziert. Diese Klassifizierung bestimmt die Möglichkeiten bei der Integration von ZETA Guard in die individuelle Laufzeitumgebung des TI-2.0-Dienstanbieters und die Sicherheitsvorgaben z. B. beim Betrieb in einer VAU.

5.10.1.1 Unveränderliche Kernkomponenten

Diese Komponenten bilden den funktionalen Kern des ZETA Guard. Sie werden von der gematik als signierte OCI-Images in der ZETA Artifact Registry bereitgestellt.

A_28789 - ZETA Guard - Integrität der Kernkomponenten

Der Anbieter eines TI 2.0-Dienstes MUSS die folgenden Komponenten zwingend als unveränderte Images der gematik beziehen und deren Signatur vor dem Deployment validieren:

  • PEP HTTP Proxy
  • PDP Authorization Server
  • PDP Policy Engine (OPA)
  • Telemetriedaten-Service
  • Notification Service (nur für mobile Clients)
Wenn z. B. in einer VAU-Umsetzung die Images der gematik nicht unverändert übernommen werden können, dann MUSS per Attestation nachgewiesen werden, dass das verwendete Image auf dem unveränderten Source-Code der gematik basiert.
[<=]

5.10.1.2 Austauschbare Kernkomponenten

Diese Komponenten sind für den Betrieb des ZETA Guard notwendig. Der Anbieter des TI 2.0-Dienstes kann wählen, ob die von gematik bereitgestellten Images verwendet werden oder ob eigene Lösungen eingesetzt werden.

A_28790 - ZETA Guard - Kernkomponenten, Verwendung von eigenen Lösungen

Der Anbieter eines TI 2.0-Dienstes MUSS bei Verwendung eigener Lösungen der folgenden Infrastruktur-Komponenten sicherstellen, dass die Anforderungen an die Komponenten erfüllt werden und dass die Schnittstellen zur Kernkomponenten-Schicht kompatibel sind.

Folgende ZETA Guard Komponenten können durch eigene Lösungen ersetzt werden:

  • PDP Datenbank
  • HSM Proxy
  • Local Artifact Registry Cache
  • Gateway oder Ingress und Egress
[<=]

Hinweis: Bei der Verwendung von eigenen Lösungen für ZETA Guard Kernkomponenten muss die Umsetzung und Einhaltung der zu den Komponenten gehörenden Anforderungen gemäß Anbietertypsteckbrief nachgewiesen werden. Im ZETA Guard Produkthandbuch ist beschrieben, was hinsichtlich Kompatibilität zu den ZETA Guard Kernkomponenten zu beachten ist.

A_28432 - ZETA Guard, Komponenten Ingress optional

Der Ingress MUSS als optionale Komponente im ZETA Guard angeboten werden. [<=]

Es ist möglich auf die Komponente Ingress im ZETA Guard zu verzichten. Dadurch wird der Hersteller des TI 2.0-Dienstes in die Lage versetzt seinen eigenen externen Ingress zu verwenden.

A_28433 - ZETA Guard, Bereitstellung externer Ingress

Der Hersteller des TI 2.0-Dienstes MUSS entweder den Kubernetes Ingress des ZETA Guard oder einen eigenen Ingress verwenden.  [<=]

5.10.1.3 Hilfskomponenten und Funktionen

Diese Komponenten und Funktionen bieten zusätzliche Funktionen zur Verbesserung der Sicherheit und zur Vereinfachung des Betriebs. Sie können durch eigene Lösungen umgesetzt werden. ZETA Guard enthält keine fertigen Images, sondern ausschließlich unterstützende Konfigurationen (z. B. Policies für einen Admission Controller).

A_28792 - ZETA Guard - Hilfskomponenten und Funktionen

Der Anbieter eines TI 2.0-Dienstes MUSS bei Verwendung eigener Lösungen der Hilfskomponenten sicherstellen, dass die Anforderungen an die Komponenten erfüllt werden und dass die Schnittstellen zur Kernkomponenten-Schicht kompatibel sind.

Die folgenden Komponenten zählen zu den Hilfskomponenten:

  • Admission Controller
  • Service Mesh
[<=]

Hinweis: Bei der Verwendung von eigenen Lösungen für ZETA Guard Hilfskomponenten und Funktionen muss die Umsetzung und Einhaltung der zu den Komponenten gehörenden Anforderungen gemäß Anbietertypsteckbrief nachgewiesen werden. Für die Hilfskomponenten und Funktionen werden keine Images durch die gematik bereitgestellt.

5.10.2 Kommunikation mit Diensten der gematik

ZETA Guard Instanzen benötigen Zugriff auf Dienste der gematik, um PIP und PAP OCI Container Images zu laden, um Telemetriedaten an den gematik Empfänger zu senden und um Security Events an das gematik SIEM zu senden. Für den Zugriff auf diese Dienste ist ein gültiges Access Token erforderlich.

Um ein gültiges Access Token zu erhalten wird Workload Identity Federation eingesetzt. Voraussetzung dafür ist, dass

  • der Kubernetes Cluster, in dem ZETA Guard ausgeführt wird, seine OpenID Konfiguration und seine JWKS URI (/.well-known/openid-configuration und bei Kubernetes IDP /openid/v1/jwks) öffentlich erreichbar bereitstellt (alternativ kann ein Schlüssel (JWK) im Workload Identity Federation Pool der gematik registriert werden),
  • ein ServiceAccount innerhalb des Clusters existiert, der die benötigten Secrets (Access Token) für die Workloads bereitstellt und
  • die Issuer URI des Kubernetes Cluster bei der gematik registriert ist.

Siehe auch Kapitel 5.16.8 Prozesse zur Inbetriebnahme eines ZETA Guard.

Hinweis: Der Kubernetes IDP wird vom kube-apiserver umgesetzt. Der API-Server ist die Instanz, die die Identitätsnachweise (Tokens) signiert und die notwendigen Metadaten für externe Dienste bereitstellt. Damit dies funktioniert, muss er mit bestimmten Flags konfiguriert sein (--service-account-issuer, -service-account-signing-key-file, --service-account-jwks-uri).

Für die Workload Identity Federation (WIF) nutzt Kubernetes die TokenRequest API. Diese API ermöglicht es, kurzlebige, zielgruppenspezifische (Audience-bound) JSON Web Tokens (JWT) zu erstellen. Ein externer Dienst (gematik Telemetriedaten Empfänger) akzeptiert nur Tokens, 
- deren Issuer im gematik WIF Pool registriert sind (per Onboarding Prozess für den TI 2.0 Dienst Anbieter) und
- die eine für ihn definierte aud (Audience) enthalten.

Damit die gematik Dienste die Token validieren können, muss entweder der Token Signatur-Schlüssel bei der gematik registriert sein oder es werden die standardisierten Endpunkte des api-servers öffentlich bereitgestellt:

  • /.well-known/openid-configuration: Das Discovery-Dokument, das die unterstützten Funktionen und die URL zum Schlüsselsatz enthält.
  • /openid/v1/jwks: Der JSON Web Key Set (JWKS), der die öffentlichen Schlüssel zur Verifizierung der Signatur enthält.

5.10.3 Deployment Szenarien

5.10.3.1 Geo-Redundanz

Der Betrieb von Kubernetes in einer Multi-Cluster-Umgebung bietet Unternehmen erhebliche Vorteile in Bezug auf Skalierbarkeit, Ausfallsicherheit und Flexibilität, bringt jedoch auch eine erhöhte Komplexität in Verwaltung, Netzwerk und Sicherheit mit sich und es Ergeben sich Anforderungen an Anbieter von TI 2.0-Diensten.

A_28438-01 - ZETA Guard, geo-redundanter Betrieb

Der Anbieter eines TI 2.0-Dienstes MUSS beim geo-redundanten Betrieb des ZETA Guard in einer Kubernetes Multi-Cluster-Umgebung folgende Bedingung erfüllen:

  • Die Authorization Server Instanzen müssen über einen globalen Load Balancer als ein logischer Authorization Server bereitgestellt werden.
[<=]

A_28464 - ZETA Guard, genau ein Authorization Server

Die Komponente PEP HTTP Proxy MUSS das OAuth Protected Resource Well-known so bereitstellen, dass für ZETA Clients der ZETA Guard Authorization Server als genau eine logische Komponente bereitgestellt wird (nur ein Eintrag authorization_servers im OAuth Protected Resource Well-known). [<=]

5.10.4 Laufzeitüberwachung

Um die Integrität und Vertraulichkeit der ZETA Guard Microservices innerhalb einer Kubernetes-Infrastruktur zu gewährleisten, werden verschiedene sich ergänzende Sicherheitsmechanismen eingesetzt. Diese dienen der Härtung der Laufzeitumgebung, der Isolation von Workloads und der Erkennung von Anomalien. Diese werden nachfolgend beschrieben. Die Mechanismen sind in aktuell eingesetzte und geplante Verfahren unterteilt; darüber hinaus werden weitere empfohlene Maßnahmen zur Vertiefung der Cluster-Sicherheit aufgeführt.

5.10.4.1 Aktuell eingesetzte Verfahren
5.10.4.1.1 Pod Security Standards (PSS)

Kubernetes Pod Security Standards definieren drei Sicherheitsstufen für Pods (Privileged, Baseline, Restricted). Im ZETA-Guard-Cluster soll die Stufe Restricted für alle ZETA-Guard-Namespaces per Namespace-Label durchgesetzt werden. Damit werden unter anderem folgende Eigenschaften erzwungen:

  • Ausführung als Nicht-Root-Benutzer (runAsNonRoot: true)
  • Keine privilegierten Container (privileged: false)
  • Keine Fähigkeiten über die Allowlist hinaus (allowPrivilegeEscalation: false, capabilities.drop: ["ALL"])
  • Nur schreibgeschützte Root-Filesysteme (readOnlyRootFilesystem: true)
  • Ausschluss von Host-Netzwerk, Host-PID und Host-IPC
5.10.4.1.2 Admission Controller

Admission Controller sind Kubernetes-Webhooks, die API-Server-Anfragen vor der persistenten Speicherung validieren oder mutieren. Im ZETA-Guard-Cluster sollen folgende Admission Controller eingesetzt werden:

Validating Admission Webhooks prüfen eingehende Ressourcen gegen Richtlinien und lehnen nicht-konforme Anfragen ab. Typische Prüfungen umfassen:

  • Sicherstellung, dass nur Images mit der gematik Signatur produktiv eingesetzt werden. Bei jedem Deployment wird geprüft, ob das Image eine gültige gematik-Signatur trägt.
  • Ablehnung von Deployments ohne definierte resources.requests und resources.limits

Als Policy-Engine für Admission Control sollen Kyverno oder OPA Gatekeeper eingesetzt werden, um Richtlinien deklarativ als Kubernetes-Custom- Resources zu verwalten.

5.10.4.1.3 Network Policies

Kubernetes Network Policies steuern den zulässigen Netzwerkverkehr zwischen Pods auf Basis von Label-Selektoren, Namespaces und Ports. Im ZETA-Guard-Cluster gilt das Default-Deny-Prinzip: Jeder Namespace verfügt über eine Network Policy, die eingehenden und ausgehenden Verkehr standardmäßig verbietet. Explizite Freigaben erfolgen nur für notwendige Kommunikationsbeziehungen, insbesondere:

  • Eingehender Verkehr zum PEP (HTTP Proxy) ausschließlich vom Ingress Controller
  • Kommunikation zwischen PEP, PDP Authorization Server und Policy Engine (OPA) nur innerhalb dedizierter ZETA-Guard-Namespaces
  • Ausgehender Verkehr zu gematik-Diensten (PIP/PAP Artifact Registry, Telemetrie-Service) nur über definierte Egress-Regeln
  • Vollständige Isolation zwischen ZETA-Guard-Namespace und Resource-Server- Namespace auf Netzwerkebene

Hinweis: Native Kubernetes Network Policies sind Layer-3/4-Konstrukte und operieren auf IP-Adressen und Ports. Für eine weitergehende Layer-7-Kontrolle wird auf das Service Mesh (s. u.) verwiesen.

5.10.4.1.4 Service Mesh

Ein Service Mesh (z. B. Istio, Linkerd oder Cilium) ergänzt Kubernetes um transparente mTLS-Verschlüsselung, feingranulare Traffic-Kontrolle und Observability zwischen Microservices. Im ZETA-Guard-Cluster übernimmt das Service Mesh folgende Aufgaben:

Mutual TLS (mTLS):
Alle Kommunikationsverbindungen zwischen ZETA-Guard-Komponenten werden durch das Service Mesh mit mTLS verschlüsselt und wechselseitig authentifiziert. Zertifikate werden automatisch rotiert.

Autorisierungsrichtlinien:
Mit AuthorizationPolicy-Ressourcen (Istio) oder Server-Ressourcen (Linkerd) wird die dienstspezifische Kommunikation auf Layer 7 eingeschränkt. So darf z. B. nur der PEP den Resource Server aufrufen.

Traffic-Observability:
Das Service Mesh liefert metrische Daten (Latenz, Fehlerrate, Throughput) und Traces für jede Dienstkommunikation, die in das Monitoring einfließen.

5.10.4.1.5 Ingress und Egress / Gateway

Ingress Controller:
Externer eingehender Verkehr zum ZETA Guard wird über einen Ingress Controller (z. B. NGINX oder Envoy-basiert) terminiert. Der Ingress Controller übernimmt TLS-Terminierung, Rate Limiting und ggf. WAF-Funktionen (Web Application Firewall). Es wird ausschließlich HTTPS mit TLS 1.2 oder höher akzeptiert.

Egress Gateway:
Ausgehender Verkehr aus dem ZETA-Guard-Cluster (z. B. zu PIP/PAP-Registry, Telemetriedaten-Service, Identity Providern) wird über ein dediziertes Egress Gateway geleitet. Durch Egress-Policies auf dem Gateway wird sichergestellt, dass kein unkontrollierter Datenabfluss stattfindet. Zulässige externe Ziele werden in einer Allowlist gepflegt.

Hinweis: Am Anfang wird ZETA Guard nur Network-Policies als Egress Funktion verwenden.

5.10.4.2 Geplante Verfahren
5.10.4.2.1 Pod-Überwachung gemäß Cilium Tetragon

Cilium Tetragon ist ein eBPF-basiertes Security-Observability- und Enforcement-Framework für Kubernetes. Im Unterschied zu netzwerkorientierten Schutzmechanismen operiert Tetragon im Linux-Kernel und ermöglicht Laufzeit-Sicherheitsüberwachung auf Systemaufruf-Ebene (syscall-Ebene) innerhalb von Pods und Containern.

Hinweis: Da Tetragon tief in den Linux-Kernel (via eBPF) eingreift und clusterweite Ressourcen erstellt, benötigt das Service-Konto, das die Installation durchführt, cluster-admin-Rechte. Daher wird Tetragon nicht durch ZETA Guard, sondern durch den Anbieter installiert. Für den laufenden Betrieb und das Erstellen von Regeln reicht ein dediziertes RBAC-Profil für die Cilium-CRDs aus.

Im ZETA-Guard-Cluster ist der Einsatz von Cilium Tetragon geplant für:

Process Execution Monitoring:
Jede Prozessausführung innerhalb eines ZETA-Guard-Pods wird erfasst. Unerwartete Prozesse (z. B. Shell-Aufruf in einem Applikations-Container, Ausführung von Netzwerktools) lösen Sicherheitswarnungen aus und können direkt blockiert werden (Enforcement Mode). Dies erkennt insbesondere Post-Exploitation-Aktivitäten nach einer Kompromittierung.

File Integrity Monitoring (FIM):
Schreibzugriffe auf kritische Dateisystempfade innerhalb von Pods (z. B. Konfigurationsdateien, Zertifikate, Binary-Pfade) werden überwacht. Unzulässiger Zugriff auf Dateien wird unterbunden (Enforcement Mode) und gemeldet.

Network Observability auf Systemaufruf-Ebene:
Netzwerkverbindungen werden auf Basis der tatsächlichen Systemaufrufe (connect, accept, sendmsg etc.) beobachtet, nicht nur auf Paketebene. Dies ermöglicht die Attribution jeder Netzwerkverbindung auf den auslösenden Prozess und Container.

TracingPolicy und Enforcement:
Über TracingPolicy-Custom-Resources können deklarative Sicherheitsregeln definiert werden, die Tetragon im Kernel durchsetzt. Im Enforcement Mode werden unzulässige Aktionen (z. B. execve eines nicht-erlaubten Binaries, Verbindung zu einer nicht-erlaubten IP) direkt durch den Kernel blockiert, noch bevor eine Reaktion auf Anwendungsebene erfolgen kann.

5.10.4.2.2 RBAC-Härtung (Role-Based Access Control)

Kubernetes RBAC steuert, welche Subjekte (ServiceAccounts, User, Groups) welche API-Ressourcen lesen oder verändern dürfen. Für den ZETA-Guard-Cluster gilt:

  • Jeder ZETA-Guard-Microservice erhält einen dedizierten ServiceAccount mit minimalen Berechtigungen (Least Privilege).
  • Die Verwendung des default-ServiceAccounts in Pods wird durch eine Admission Policy verboten.
  • ClusterAdmin- und ClusterRole-Bindings werden auf das absolute Minimum reduziert und regelmäßig überprüft.
  • Der Kubernetes API-Server-Zugriff vom Produktivsystem wird auf dedizierte Operator-Identitäten beschränkt; interaktive Zugriffe erfordern MFA und werden auditiert.

5.11 Policy Enforcement Points

Der Policy Enforcement Point (PEP) stellt die zentrale Sicherheitskomponente einer Zero Trust-Architektur dar, da in dieser alle Zugriffsentscheidungen durchgesetzt (engl.: enforce) werden.

5.11.1 PEP HTTP Proxy

Die Komponente HTTP Proxy ist die "letzte" vor das Resource Backend geschaltete Zero Trust-Komponente und prüft das Access Token im Authorization Header des Requests. Ist das Access Token gültig, wird der Zugriff gewährt. Zudem wird der Request um zusätzliche HTTP-Header angereichert, um ein Tracing zu ermöglichen. Wenn ein PoPP Token im popp Header vorhanden ist, wird es geprüft.

A_26666-01 - PEP HTTP Proxy - TLS Terminierung

Die Komponente PEP HTTP Proxy MUSS TLS für eingehende Verbindungen terminieren können. [<=]

A_26195 - PEP HTTP Proxy - Unterstützung Websocket

Die Komponente HTTP Proxy MUSS das WebSocket-Protokoll unterstützen. [<=]

A_26641 - PEP HTTP Proxy - HTTP Protokoll-Versionen

Die Komponente HTTP Proxy MUSS das HTTP Protokoll in den Versionen HTTP/1.1, HTTP/2 und SOLL HTTP/3 unterstützen. [<=]

A_25667 - PEP HTTP Proxy - Verifikation Access Token Binding

Die Komponente HTTP Proxy MUSS das Access Token Binding über den Mechanismus OAuth 2.0 Demonstrating Proof of Possession (DPoP) gemäß [RFC9449] verifizieren; d. h. der Claim "jkt" im Access Token MUSS eindeutig der Angabe im DPoP-Token entsprechen. [<=]

A_25668 - PEP HTTP Proxy - Access Token Validierung

Die Komponente HTTP Proxy MUSS das übergebene Access Token validieren. Insbesondere MÜSSEN

  • die Signatur des Authorization Servers gültig,
  • die Angaben zur zeitlichen Gültigkeit (Felder: iatexp) valide, 
  • die Angabe aud für das Resource Backend korrekt eingetragen und
  • die Angabe scope und  aud passend zur Request url
sein.
Die Signatur des Access Token ist gültig, wenn sie mathematisch gültig ist und die Signatur vom Authorization Server im gleichen ZETA Guard erstellt wurde (default Einstellung) oder von einem Authorization Server, der in der Konfiguration des HTTP Proxy angegeben und im Entity Statement des Federation Master aufgeführt ist. Es MUSS möglich sein, mehrere Authorization Server in die Konfiguration des HTTP Proxy einzutragen.
Wenn das Access Token ungültig ist, dann MUSS der Request mit HTTP Code 401 Unauthorized beantwortet werden. [<=]

Hinweis: Jeder Authorization Server, der zur Föderation des Federation Masters gehört, veröffentlicht ein eigenes Entity Statement, in dem die Schlüssel enthalten sind, mit denen die Signatur der Access Token geprüft werden kann.
Hinweis: Einige TI 2.0-Dienste benötigen ein PoPP Token. Diese werden im Request Header PoPP übertragen und vom HTTP Proxy geprüft.

A_26477 - PEP HTTP Proxy - PoPP Token Validierung

Die Komponente HTTP Proxy MUSS so konfiguriert werden können, dass pro Endpunkt des Resource Servers der Request Header PoPP verlangt und das PoPP Token validiert wird. Zusätzlich MUSS die Konfiguration pro Endpunkt unterstützen, dass die Dauer der Gültigkeit des PoPP Token in Sekunden seit Ausstellung und nach Ausstellungszeitpunkt und Prüfzeitpunkt innerhalb des gleichen Quartals eingestellt werden kann.
Wenn ein Request für einen Endpunkt des Resource Servers empfangen wird, der kein PoPP Header enthält und das Vorhandensein des PoPP Headers verlangt wird, dann MUSS der HTTP Proxy den Request mit HTTP Code 400 Bad Request beantworten.
Insbesondere MUSS die Signatur des PoPP Servers gültig sein. Die Signatur des PoPP Token ist gültig, wenn sie mathematisch gültig ist und die Signatur vom PoPP Server erstellt wurde. Der HTTP Proxy MUSS ein vorhandenes und noch gültiges JWKS des PoPP Servers verwenden oder das JWKS des PoPP Servers herunterladen, um anhand der im JWKS enthaltenen Schlüssel die Signatur des PoPP Token zu prüfen.
Der claim actorId des PoPP Token MUSS mit dem Attribut sub aus den zum Access Token gehörenden Nutzer-Daten übereinstimmen.   
Vor Ablauf der Gültigkeit MUSS der HTTP Proxy ein neues JWKS des PoPP Servers herunterladen.
Wenn die Signatur des PoPP Token ungültig ist oder eine der anderen Prüfungen nicht erfolgreich war, dann MUSS der Request mit HTTP Code 403 Forbidden beantwortet werden.
[<=]

Hinweis: Wenn ein ZETA/ASL-Kanal am HTTP Proxy terminiert wird, dann wird das PoPP Token durch den ZETA/ASL-Kanal geschützt transportiert.

A_28525-01 - PEP HTTP Proxy - Step-up-Bedingung

Die Komponente HTTP Proxy MUSS dem Client eine Step-up-Authentifizierung mit HTTP Statuscode 401 signalisieren, wenn

  • der erforderliche Scope im Access-Token nicht enthalten ist oder
  • die Audience im Access-Token nicht zur Request URL passt.
Die angefragte URL MUSS existieren (unterstützte Audience).
[<=]

A_26493-01 - PEP HTTP Proxy - Umgang mit JWKS des Popp Servers

Die Komponente HTTP Proxy MUSS, falls der Header Parameter "kid" im PoPP Token JWT nicht zu einem Key im JWKS passt, ein neues JWKS des PoPP Servers herunterladen. [<=]

A_26480 - PEP HTTP Proxy - Umsetzen eines ZETA/ASL-Kanals

Die Komponente HTTP Proxy MUSS einen ZETA/ASL-Kanal (Server-Seite) umsetzen können. Die Verwendung des ZETA/ASL-Kanals MUSS durch Konfiguration ein- und ausschaltbar sein. In der Default-Einstellung ist der ZETA/ASL-Kanal ausgeschaltet. [<=]

Hinweis: Ob ein ZETA/ASL Kanal zu verwenden ist, wird in der Spezifikation des TI 2.0-Dienstes festgelegt. Die Anforderungen für den ZETA/ASL-Kanal sind in [gemSpec_Krypt#8] zu finden.

Wenn der ASL Kanal am HTTP Proxy terminiert, dann enthält der äußere Request kein Access und kein DPoP Token. Der HTTP Proxy terminiert den Kanal und prüft das Access und das DPoP Token im inneren Request.

Wenn der Resource Server den ASL Kanal terminiert, dann enthält der äußere Request ein Access Token und ein DPoP Token passend zum ASL Endpunkt am HTTP Proxy. Der HTTP Proxy leitet den Request nach erfolgreicher Token-Prüfung an den Resource Server weiter. Der Resource Server terminiert den ASL Kanal und findet im inneren Request ein Access und ein DPoP Token passend zum Endpunkt des Resource Servers. Es wird empfohlen, dass der Resource Server das Access und das DPoP Token prüft.

A_26492-02 - PEP HTTP Proxy - Weiterleitung von Client-Daten

Die Komponente HTTP Proxy MUSS so konfiguriert werden können, dass pro Endpunkt des Resource Servers die Weiterleitung der Client-Daten durch den HTTP Proxy ein- und ausgeschaltet werden kann. Die default-Einstellung ist keine Weiterleitung der Client-Daten.

[<=]

A_25669-01 - PEP HTTP Proxy - Zusätzliche HTTP-Header

Die Komponente HTTP Proxy MUSS die HTTP Requests mit allen HTTP-Headern an das Resource Backend weiterleiten und dabei die folgenden zusätzlichen HTTP-Header einsetzen.

Tabelle 14: PEP HTTP Proxy - Zusätzliche HTTP-Header

HTTP-Header Format Schema Größe (max. geschätzt)
zeta-user-info Base64-URL kodierte JSON Struktur des User-Info Inhalts [zeta-user-info.yaml] 250 Byte
zeta-popp-token-content Base64-URL kodierte JSON Struktur des PoPP Token Inhalts. Der PoPP Header enthält das PoPP Token.
Optional: Wird nur gesetzt, wenn im Request ein PoPP Header enthalten ist.
PoPP Token Payload 450 Byte
zeta-client-data Base64-URL kodierte JSON Struktur der Client-Daten
Optional: Wird nur gesetzt, wenn die Konfiguration des HTTP Proxy für die URL des Requests die Weiterleitung der Client-Daten festlegt.
[client-data.yaml] 250 Byte

Gleichnamige HTTP-Header aus dem ursprünglichen HTTP-Request MÜSSEN entfernt bzw. überschrieben werden. [<=]

Hinweis: Die Schema-Dateien sind in [GitHub ZETA Schemas] festgelegt.

A_26560 - PEP HTTP Proxy - Weiterleitungskonfiguration

Der PEP HTTP Proxy MUSS es ermöglichen, dass Regeln für die Weiterleitung von Request URLs an die URLs von Resource Servern konfiguriert werden können.
[<=]

A_27265 - PEP HTTP Proxy - unveränderte Weiterleitung von Host Header und Request Zeile

Der PEP HTTP Proxy MUSS den Host Header und die Request Zeile unverändert an den Resource Server weiterleiten. [<=]

A_26561 - PEP HTTP Proxy - Caching

Der PEP HTTP Proxy MUSS so konfiguriert werden können, dass Caching von Inhalten der Response möglich ist. [<=]

A_26589-01 - PEP HTTP Proxy - Nutzer-Daten

Die Komponente HTTP Proxy MUSS für jeden Request mit gültigem Access Token die Nutzer-Daten aus dem Access Token als neuen HTTP Header zeta-user-info in den Request eintragen, bevor der Request an den Resource Server weitergeleitet wird.
Folgende claims das Access Token gehören zu den Nutzer-Daten und werden gemäß Tabelle in den zeta-user-info Header übernommen.

Tabelle 15: zeta-user-info-Header

Access Token claim zeta-user-info Header claim
identifier identifier
profession_oid professionOID
common_name commonName
organization_name organizationName
[<=]

Beispiel für den zeta-user-info Header:

{"commonName":"Arztpraxis Walter","identifier":"1-234567890123","organizationName":"Arztpraxis Walter","professionOID":"1.2.276.0.76.4.50"}

A_26590-02 - PEP HTTP Proxy - Client-Daten

Wenn die Request-Weiterleitung mit Client-Daten konfiguriert wurde und der Request ein gültiges Access Token hat, dann MUSS die Komponente HTTP Proxy die Client-Daten aus dem Access Token als neuen HTTP Header zeta-client-data in den Request eintragen, bevor der Request an den Resource Server weitergeleitet wird.
Folgende claims das Access Token gehören zu den Client-Daten:

  • client_id
  • product_id
  • product_version
[<=]

A_26974-01 - PEP HTTP Proxy - Fehler vom Resource Server

Die Komponente HTTP Proxy MUSS die Response vom Resource Server als Fehler des HTTP Proxy werten, wenn der Resource Server den Response Header zeta-cause: Proxy gesetzt hat (der Resource Server hat einen Fehler im Request festgestellt und vermutet die Ursache beim HTTP Proxy) und DARF diese Response nicht an den Client weiterleiten. Der entsprechende Request des Clients MUSS in diesem Fall mit HTTP 500 beantwortet werden. [<=]

A_27266 - PEP HTTP Proxy - Protected Resource Metadata Well-known

Die Komponente HTTP Proxy MUSS gemäß [RFC9728] und [opr-well-known.yaml] ein Well-known JSON Dokument wie folgt bereitstellen, damit Clients die notwendigen Informationen zur Interaktion mit dem Resource Server finden können.
GET /.well-known/oauth-protected-resource
Host: <FQDN des Resource Servers>
Das Well-known JSON Dokument MUSS mit dem Schema [opr-well-known.yaml] validiert werden können.

[<=]

Hinweis: Es ist geplant, die Protected Resource Metadata Well-known JSON Dokumente in einer folgenden ZETA Ausbaustufe durch den Federation Master bereitzustellen. Der Federation Master signiert die Protected Resource Metadata Dokumente und stellt so sicher, dass alle Services zur Föderation und zur gleichen Umgebung gehören (dev, prod, ref, etc.). Dadurch verbessert sich für ZETA Clients die Authentizität der TI 2.0-Services.

A_28439 - PEP HTTP Proxy - Unterstützung Forwarded-Header

Die Komponente PEP HTTP Proxy MUSS in jeder empfangene HTTP-Anfrage den Forwarded-Header gemäß [RFC 7239] in der weitergeleiteten Anfragen aktualisieren. [<=]

5.11.2 Sicherheits- und Datenschutz-Anforderungen an den PEP

A_25445 - PEP - Zugriffsentscheidung nur über PDP

Der PEP MUSS sicherstellen, dass Zugriffe auf den Resource Server nur durch eine positive Zugriffsentscheidung vom PDP möglich sind.   [<=]

Hinweis: Die positive Zugriffsentscheidung auf den Resource Server ist gegeben, wenn der Client im Request Authorization Header ein gültiges Access Token mit passendem scope - ausgestellt von einem Authorization Server, zu dem eine Vertrauensbeziehung besteht - vorweisen kann. Durch das gültige Access Token ist sichergestellt, dass der Zugriff von dem PDP freigegeben wird.

5.12 Policy Decision Point

Der Policy Decision Point (PDP) setzt sich aus den Komponenten

  • Authorization Server
  • Policy Engine und
  • PDP Datenbank

zusammen.

5.12.1 Policy Engine

Der PDP implementiert die Policy Engine als [Open Policy Agent] (OPA). Die Policies und die zugehörigen Daten erhält die Policy Engine per OCI Protokoll von der ZETA Artifact Registry. Aus den Input-Daten vom Authorization Server, den Daten vom PIP und den Policies vom PAP ermittelt die Policy Engine eine Entscheidung und gibt diese zurück an den Authorization Server.

Neben der OPA Instanz, die die Entscheidung für den Authorization Server trifft (aktive Instanz), ob eine Kommunikation zulässig ist, implementiert die Policy Engine noch eine zweite OPA Instanz, die mit einem zweiten OPA Bundle vom PIP und PAP Service arbeitet, aber die getroffenen Entscheidungen nicht an den Authorization Server zurückgibt. Diese Instanz wird Simulations-Instanz genannt und dient dazu in produktiven Umgebungen die weiterentwickelte Policies und Daten zu evaluieren.

A_25739-02 - PDP Policy Engine, OPA Instanzen

Der PDP MUSS als Policy Engine zwei Open Policy Agent (OPA) Instanzen bereitstellen, wobei eine Instanz die Entscheidung für den Authorization Server trifft (aktive Instanz), und eine Instanz eine Entscheidung trifft, diese aber nicht an den Authorization Server sendet (Simulations-Instanz).
Die OPA Instanzen MÜSSEN so konfiguriert sein, dass nur signierte OPA Bundles mit gematik Signatur akzeptiert werden. Das Polling Intervall zur Aktualisierung des OPA Bundles über die lokale Artifact Registry MUSS 60 Sekunden sein. [<=]

A_27401 - PDP Policy Engine - Decision Eigenschaften

Die PDP Policy Engine MUSS Decision-Anfragen mit einem JSON Objekt nach dem Schema [pdp-decision.yaml] beantworten. [<=]

A_25490-03 - PDP - Sicherheitsmeldung bei Änderungen und Aktualisierung

Der PDP MUSS sicherstellen, dass bei Aktualisierung und Änderungen der Policies oder PIP-Daten eine Sicherheitsmeldung inklusive der OPA Bundle revision an das Security Monitoring automatisiert übermittelt wird.  [<=]

5.12.2 PDP Authorization Server

A_25760 - PDP Authorization Server - OAuth2 Schnittstellen

Der PDP Authorization Server MUSS eine OAuth2 Schnittstelle gemäß [RFC6749] und [RFC7636] implementieren.
Der Authorization Server MUSS am Token Endpunkt REFRESH_TOKEN entsprechend [RFC6749] ausstellen können.
[<=]

A_26669-01 - PDP Authorization Server - TLS Terminierung

Die Komponente PDP Authorization Server MUSS eingehende TLS Verbindungen von außerhalb des ZETA Guards terminieren können. [<=]

A_25659 - PDP Authorization Server - Check Client-Registrierung

Der PDP Authorization Server MUSS die Client Instanzen über den Mechanismus JSON Web Token Client Authentication gemäß [RFC7523] mit DPoP gemäß [RFC9449] authentifizieren und Anfragen, die den Mechanismus nicht verwenden, ablehnen. [<=]

A_25660 - PDP Authorization Server - Session Management mittels Access Token und Refresh Token

Die Komponente Authorization Server MUSS ein Session Management mittels OAuth2 und Ausgabe, Verwaltung und Entzug von Access und Refresh Token gemäß [RFC6749#1.5] unterstützen. [<=]

A_27867-01 - PDP Authorization Server - Session Management in der PDP Datenbank

Die Komponente Authorization Server SOLL die Session-Daten gemäß [session.yaml] und die User-Daten gemäß [zeta-user-info.yaml] in der PDP Datenbank verwalten. [<=]

A_26944 - PDP Authorization Server - Access Token Inhalt

Die Komponente Authorization Server MUSS Access Token mit Attributen gemäß [access-token.yaml] ausstellen. [<=]

A_25661 - PDP Authorization Server - Umsetzung der Policy Decision

Die Komponente Authorization Server MUSS die Zugriffs-Entscheidung eines PDP mittels der Ausgabe eines Access und eines Refresh Token umsetzen bzw. eine Zugriffsverweigerung mit einem HTTP-Statuscode 403 quittieren.
Die Claims im Access und im Refresh Token MÜSSEN zur Entscheidung der Policy Engine für die angefragten Claims passen. [<=]

A_28837 - PDP Authorization Server, Policy Prüfung bei Ausstellung Token-Set

Die Komponente Authorization Server MUSS vor der Ausstellung des neuen Token-Sets (Access Token und Refresh Token) eine Autorisierungsanfrage an die Policy Engine stellen. [<=]

A_28527 - PDP Authorization Server - Gültigkeitsdauer Access und Refresh Token

Die Komponente Authorization Server MUSS beim Ausstellen von Access und Refresh Token die Gültigkeitsdauer aus der Policy Decision übernehmen. [<=]

Hinweis: Die Gültigkeitsdauer des Refresh Token wird aktuell fest konfiguriert und nicht über die Policy Engine Decision gesetzt, da der verwendete Authorization Server diese Funktion noch nicht unterstützt.

A_25662 - PDP Authorization Server - Refresh Token Rotation

Die Komponente Authorization Server MUSS eine Refresh Token Rotation gemäß [RFC6749#10.4] erzwingen und MUSS sicherstellen, dass ein Refresh Token nur einmal gegen ein Access Token und ein Refresh Token getauscht werden kann.
Die Komponente Authorization Server MUSS erzwingen, dass der Nutzer eine Authentisierung durchführen muss, wenn seit der letzten Authentisierung die Zeit der Gültigkeitsdauer des Refresh Token abgelaufen ist. [<=]

A_25663 - PDP Authorization Server - Token-Binding an Client-Registrierung

Die Komponente Authorization Server MUSS auszugebende Access Token und Refresh Token über den Mechanismus OAuth 2.0 Demonstrating Proof of Possession (DPoP) gemäß [RFC9449] an die registrierte Client-Instanz binden, indem im Token-Binding-Claim cnf die Angabe der Clientidentifikation als "jkt" eineindeutig referenziert wird. [<=]

A_25665 - PDP Authorization Server - Plugin-Schnittstelle Application Authorization Backend

Die Komponente Authorization Server MUSS eine Plug-In Schnittstelle (per Webhook) zu einem anwendungsspezifischen Authorization Backend implementieren und dabei die folgenden Signale und Informationen aus der erhaltenen Zugriffsanfrage weiterreichen.

Tabelle 16: PDP Authorization Server - Plugin-Schnittstelle Application Authorization Backend

Operation Operation Kennung Input Output
Benachrichtigung über die Ablehnung des Zugriffs durch PDP notifiyAccessDenied Trace-Id
Subject-Information
Client-Information
PDP-Decision
-
Anwendungsspezifische Autorisierung authorizeAccess Trace-Id
Session-Id
Authorization-Scopes
Authorization-Details
Subject-Information
Client-Information
PDP-Decision
Zugriff erlauben Ja/Nein
Zusätzliche Authorization Scopes
Zusätzliche Authorization Details
Zusätzliche Claims
Benachrichtigung über abgelaufene oder terminierte Sessions notifySessionTermination Trace-Id
Session-Id
-
[<=]

A_26586 - PDP Authorization Server - Session- und Nutzer-Daten

Die Komponente Authorization Server MUSS nach jeder vollständigen und erfolgreichen Authentifizierung Session-Daten in der Datenbank des PDP speichern.
Die Session-Daten und Nutzer-Daten MÜSSEN bei Anfragen des Authorization-Servers an die Policy Engine im Request mit übergeben werden. [<=]

A_26972-02 - PDP Authorization Server - Nutzer-Daten aus der SM(C)-B

Die Komponente Authorization Server MUSS im Falle der SM(C)-B Authentifizierung die folgenden Daten aus dem SM(C)-B Zertifikat auslesen und als Nutzer-Daten gemäß [zeta-user-info.yaml] in der PDP Datenbank speichern:

Tabelle 17: SM(C)-B_Nutzer-Daten

SM(C)-B Daten (C.HCI.AUT gemäß [gemSpec_PKI]) Nutzer-Daten gemäß [zeta-user-info.yaml] Beschreibung
Extension Admission, registrationNumber  identifier Telematik-ID
Eindeutige ID der Organisation des Gesundheitswesens
subject, commonName commonName Wird aus dem Zertifikat übernommen. „Kurzname“ der Institution, so wie sie sich auf dem Anschriftenfeld findet.
Extension Admission, professionOID professionOID OID der Institution gemäß [gemSpec_OID#GS-A_4443-*]
subject, organizationName organizationName Wird übernommen, wenn im Zertifikat vorhanden. Name der Organisation/Einrichtung des Gesundheitswesens
[<=]

A_26973-01 - PDP Authorization Server - Nutzer-Daten aus id_token

Die Komponente Authorization Server MUSS im Falle der OIDC Authentifizierung für Versicherte alle Claims aus dem id_token gemäß [gemSpec_IDP_Sek] auslesen und als Nutzer-Daten gemäß [zeta-user-info.yaml] in der PDP Datenbank speichern.
Dabei gilt das folgende Mapping für die Pflicht-Nutzer-Daten.

Tabelle 18: id_token_Nutzer-Daten

id_token claims (gemäß [gemSpec_IDP_Sek]) Nutzer-Daten gemäß [zeta-user-info.yaml] Beschreibung
urn:telematik:claims:id identifier für Versicherte der unveränderliche Anteil der KVNR
urn:telematik:claims:profession professionOID OID für Versicherte
urn:telematik:claims:id  commonName für Versicherte der unveränderliche Anteil der KVNR
[<=]

A_28144 - PDP Authorisation Server - Länge der Nonce

Der ZETA Guard MUSS am Endpunkt GET /nonce einen 128 Bit langen base64url kodierten Zufallswert ausgeben. [<=]

A_28440 - PDP Authorization Server - Auswertung Forwarded-Header

Die Komponenten PDP Authorization Server MUSS HTTP-Anfragen mit einem vorhandenen Forwarded-Header auswerten, um die Client-IP Adresse zu ermitteln. Bei der Auswertung ist die Semantik gemäß [RFC 7239] und die Reihenfolge der Parameter zu beachten. [<=]

A_25644-01 - PDP Client-Registrierung mit Attestation

Die Komponente Authorization Server MUSS die Clients bei der Registrierung über folgende Mechanismen attestieren:

  • Android Key and ID Attestation (für Google-Android Clients)
  • Apple DCAppAttest
  • TPM Attestation für Windows und Linux Clients
  • Software Attestation
[<=]

A_25645-01 - PDP Authentifizierung mittels TI-Smartcard

Die Komponente Authorization Server MUSS die Authentifizierung per Token Exchange eines Subject Token gemäß [subject-token-smb.yaml] mit Signatur einer SM(C)-B unterstützen. [<=]

A_25649 - PDP Authorization Server - Regelmäßige Wiederholung der Attestation

Die Komponente Authorization Server SOLL die Client-Attestierung für jede neue Session verlangen. [<=]

Hinweis: Eine Session des Authorization Servers ist gültig vom Zeitpunkt t1 = (Ausstellungszeitpunkt des ersten Refresh Token nach vollständiger Authentifizierung) bis zum Zeitpunkt t2 = t1 + (Gültigkeitsdauer des ersten Refresh Token). Bei mobilen Clients werden für die Attestation Services des mobilen Betriebssystems verwendet, die ein Rate Limit haben können. In diesem Fall kann die Attestation eventuell nicht für jede neue Session widerholt werden oder es werden bei Folge-Attestations nur lokale Verfahren angewendet. 

A_25650 - PDP Client-Registrierung - TI-Identität in Attestation

Die Komponente Authorization Server MUSS den registrierten Client, wenn möglich, an eine TI-Identität (mit KVNR oder TelematikID binden. [<=]

Hinweis: In ZETA Stufe 2 ist eine Autorisierung vorgesehen, bei der keine Nutzer-Identität durch ZETA Guard festgestellt wird (eGK in Fernversorgung). In diesem Fall erfolgt eine Client-Registrierung ohne Bindung an eine TI-Identität.

A_25651 - PDP Client-Registrierung - Offband Nutzer Verification

Die Komponente Authorization Server MUSS einen Offband Prozess (per E-Mail) für die Kommunikation mit diesem Nutzer unterstützen (Trust on First Use), wobei der Nutzer seine E-Mail Adresse eigenverantwortlich vergibt. [<=]

Hinweis: TOFU wird nur für mobile Clients genutzt.

A_25752 - PDP Client-Registrierung - Nutzer über Hintergrund zur Ablehnung der Client-Registrierung informieren

Falls ein Client nicht die geforderten Parameter der Client Policy unterstützt bzw. das geforderte Niveau nicht erreicht, MUSS die Komponente Authorization Server den Nutzer nutzerfreundlich darüber informieren, welche Clienteigenschaften zu der Ablehnung geführt haben. [<=]

A_25738 - PDP Client-Registrierung - Telemetrie

Die Komponente Authorization Server MUSS in den Telemetriedaten zu jeder versuchten Client-Registrierung folgende Parameter ohne einen Nutzerbezug protokollieren:

  • Clientparameter (Betriebssystem(-version), Patchlevel, Geolocation etc.) gemäß Clienteattestierung
  • verwendeter Faktor für Offband-Verifikation (E-Mail)
  • Zeitstempel Registrierung, Zeitpunkt Offband-Bestätigung
  • verwendeter Faktor der Nutzerauthentifizierung (SmartCard, Digitale Identität)
  • Status/Ergebnis des Registrierungsversuchs
[<=]

A_25754 - PDP Client-Registrierung - Notfall-Recovery-Prozess für Nutzer

Die Komponente Authorization Server MUSS dem Nutzer einen Notfall-Recovery-Prozess anbieten, falls der Nutzer sein letztes Gerät verloren und keinen Zugriff mehr auf seine registrierte E-Mail-Adresse hat. [<=]

A_26585-01 - PDP Client-Registrierung - Client-Daten

Die Komponente Authorization Server MUSS die Client-Daten gemäß [client-statement.yaml] in der PDP Datenbank verwalten.
Die Client-Daten MÜSSEN bei Anfragen des Authorization-Servers an die Policy Engine im Request mit übergeben werden.
[<=]

5.12.2.1 PDP Relying Party

A_25655 - PDP - Relying Party

Der PDP Authorization Server MUSS in der TI-Föderation als Relying Party registriert sein. [<=]

A_25656 - PDP - Entity Statement

Der PDP Authorization Server MUSS die Redirect-URLs aller zulässigen Clients als erlaubte Redirect-URLs im Entity Statement ausweisen. [<=]

A_25657 - PDP - Authentication über sektoralen IDP

Der PDP Authorization Server MUSS die Nutzer über sektorale IDPs authentifizieren können. [<=]

5.12.2.2 Ablauf für den Zugriff auf einen Resource Server

Um auf einen durch ZETA Guard geschützten Resource Server zugreifen zu können, müssen abhängig vom Zustand des ZETA Clients verschiedene Teilabläufe ausgeführt werden, oder können übersprungen werden. Die ZETA API besteht aus mehreren Endpunkten, die verschiedene Funktionen bereitstellen. Diese Endpunkte sind in verschiedene Unter-Abläufe aufgeteilt:

  • Konfiguration und Discovery: Der ZETA Client muss die Konfiguration des ZETA Guards ermitteln, um die richtigen Endpunkte zu erreichen.
  • Client-Registrierung: Jeder ZETA Client muss sich einmalig beim ZETA Guard registrieren, um eine `client_id` zu erhalten und seinen öffentlichen Schlüssel (PuK.Client.Sig) zu hinterlegen.
  • Authentifizierung und Autorisierung: Der Client muss sich authentifizieren und die Integrität seiner Plattform nachweisen. Zusätzlich muss sich der Nutzer oder beim Primärsystem die Organisation authentifizieren, um ein Access Token für den Zugriff auf geschützte Ressourcen zu erhalten.


Der Gesamtprozess beginnt damit, d
ass ein Nutzer auf einen Endpunkt eines Resource Servers zugreifen möchte. Dieser Zugriff wird über das Primärsystem vom ZETA Client im Auftrag des Nutzers ausgeführt; siehe folgende Abbildung.

A_27797 - ZETA, Ablauf Zugriff auf geschützte Ressource

Der ZETA Guard und der ZETA Client MÜSSEN den Ablauf gemäß Abbildung Abb_ZETA_Zugriff_auf_geschützte_Ressource unterstützen.

Abbildung 3: Abb_ZETA_Zugriff_auf_geschützte_Ressource

[<=]

5.12.2.3 Service Discovery

Der ZETA Guard ermöglicht ZETA Clients die Ermittlung der bereitgestellten Endpunkte durch Abfrage von Well-known JSON Dokumenten.

A_27798 - ZETA Guard, Service Discovery

Der ZETA Guard MUSS die Well-known JSON Dokumente für die Service Discovery gemäß Abbildung Abb_Service_Discovery bereitstellen.
Das Protected Resource Well-known JSON Dokument MUSS mit dem Schema [opr-well-known.yaml] validiert werden können.
Das Authorization Server Well-known JSON Dokument MUSS mit dem Schema [as-well-known.yaml] validiert werden können.

Abbildung 4: Abb_Service_Discovery

[<=]

A_28420-01 - ZETA Guard, Service Discovery – Bereitstellung etag Header

Der ZETA Guard MUSS für jedes Well-known JSON-Dokument einen eindeutigen etag-Header generieren und diesen gemäß [RFC 9110] in der HTTP-Antwort bei jeder Anfrage bereitstellen.  Bei jeder inhaltlichen Änderung oder der Repräsentation der Well-known JSON-Dokumente MUSS der etag sich ändern. [<=]

A_28421-01 - ZETA Guard, Service Discovery – Unterstützung if-none-match-Header

Der ZETA Guard MUSS Client-Anfragen, die den if-none-match Header enthalten, korrekt verarbeiten. Die nachfolgende Fallunterscheidung ist zu beachten:

  • Keine Änderung des Well-known JSON Dokuments:
Wenn der vom ZETA Client im if-none-match Header gesendete ETag mit dem aktuellen ETag des Dokuments auf dem Server übereinstimmt, MUSS der ZETA Guard mit einem HTTP-Statuscode 304 (Not Modified) antworten und darf keinen Nachrichtentext senden.
  • Änderung des Well-known JSON Dokuments:
Wenn der vom ZETA Client im if-none-match Header gesendete ETag nicht mit dem aktuellen ETag des Dokuments auf dem Server übereinstimmt (oder wenn der Header fehlt), MUSS der ZETA Guard mit einem HTTP-Statuscode 200 OK antworten und das vollständige, aktuelle Well-known JSON-Dokument im Nachrichtentext sowie den aktuellen ETag-Header senden.
[<=]

A_28422 - ZETA Guard, Service Discovery - Cache-Control-Header Direktiven

Der ZETA Guard MUSS im HTTP-Response-Header zur Anfrage der Well-Known und JWKS JSON-Dokumente einen Cache-Control-Header einfügen, der die Direktiven max-age und public setzt.
Die Dauer der Direktive max-age MUSS konfigurierbar sein (Default: 86400 s) .
[<=]

Die Verwendung der Kombination der Direktiven public und max-age im Cache-Control-Header sorgt für effizientes Caching mit garantierter Aktualität der Inhalte. In Kapitel 5.16.7 Betriebliche Schnittstellendefinition sind die Well-known und JWKS Endpunkte gelistet. 

5.12.2.4 Client-Registrierung für stationäre Clients

Jeder ZETA Client muss sich am ZETA Guard registrieren, über den er auf geschützte Ressourcen zugreifen möchte. Dieser Prozess findet einmalig pro ZETA Guard-Instanz statt. Der gesamte Prozess ist zweistufig, um die administrative Einrichtung von der technischen Inbetriebnahme zu trennen:
- Initiale Registrierung: Der Client erzeugt ein langlebiges kryptographisches Schlüsselpaar (Client Instance Key Pair; PrK.Client.Sig und PuK.Client.Sig), sendet den öffentlichen Teil an den Authorization Server und erhält im Gegenzug eine client_id. Der Client ist danach im System bekannt, aber sein Status ist pending_attestation, d.h. er ist noch nicht für den Zugriff auf Ressourcen freigeschaltet.
- Aktivierung (Erster Token Exchange) Der Client wird aktiviert, indem er zum ersten Mal einen Token Exchange mit einer erfolgreichen Attestierung durchführt. Damit beweist er nicht nur den Besitz der privaten Schlüssel (PrK.Client.Sig, PrK.DPoP.Sig, PrK.Client.SMCB), sondern (bei der TPM-Attestierung) auch die Integrität der Plattform, auf der er läuft. Nach erfolgreicher Prüfung wird sein Status im ZETA Guard auf active gesetzt.

A_27799 - ZETA Guard, Client-Registrierung für stationäre Clients

Der ZETA Guard MUSS die Client-Registrierung für stationäre Clients gemäß Abbildung Abb_Client_Registrierung bereitstellen.

Abbildung 5: Abb_Client_Registrierung 

[<=]

Für die initiale Registrierung sendet der ZETA Client eine Anfrage an den Dynamic Client Registration (DCR) Endpoint. Diese Anfrage enthält alle notwendigen Metadaten, um den Client für die private_key_jwt Authentifizierungsmethode vorzubereiten:
- client_name: Ein für Menschen lesbarer Name für den Client.
- token_endpoint_auth_method: Die geplante Authentifizierungsmethode, hier private_key_jwt.
- grant_types: Die erlaubten Grant Types (z.B. urn:ietf:params:oauth:grant-type:token-exchange, refresh_token).
- jwks: Ein JSON Web Key Set, das den öffentlichen Client Instance Key (PuK.Client.Sig) enthält. Dieser Schlüssel wird vom Authorization Server verwendet, um die Signatur der Client Assertions (Client Authentifizierung) zu überprüfen.

5.12.2.5 Authentifizierung und Autorisierung für stationäre Clients

Nach erfolgreicher Registrierung besitzt der ZETA Client eine client_id, die an den Schlüssel PuK.Client.Sig gebunden ist. Um auf einen Fachdienst zugreifen zu können, benötigt der Client ein Access Token vom Authorization Server (AuthS). Stationäre ZETA Clients verwenden dafür den Token Exchange Flow, während mobile ZETA Clients den Authorization Code Flow mit OpenID Connect nutzen.

Die Authentifizierung und Autorisierung für stationäre Clients unterscheidet zwei Hauptfälle:
1. Token-Austausch mit Attestierung: Hier wird die Identität der Institution (mittels subject_token von der SM(C)-B) nachgewiesen und die Integrität des Clients durch eine Attestierung überprüft. Dieser aufwändigere Prozess wird zu Beginn einer neuen Session (oder zur Re-Attestierung) durchgeführt, um sicherzustellen, dass der ZETA Client und das Primärsystem vertrauenswürdig sind.
2. Token-Erneuerung (Refresh Token) Hier wird ein vorhandenes Refresh Token genutzt, um ein neues Access Token zu erhalten. Dieser Prozess ist performanter und verzichtet auf eine erneute Attestierung.
Diese Trennung schafft eine Bala
nce zwischen höchster Sicherheit beim initialen Zugriff und Effizienz bei der Erneuerung bestehender Sitzungen.

Die folgende Abbildung zeigt den Ablauf des Token-Austauschs mit Client Assertion JWT Authentifizierung und DPoP.

Hinweis: Der TPM-Attestation Flow muss aufgrund einer Sicherheitslücke im Design überarbeitet werden und wird in einer Folgeversion nachgereicht.

A_27800-02 - ZETA Guard, Authentifizierung und Autorisierung für stationäre Clients

Der ZETA Guard MUSS die Client-Registrierung für stationäre Clients gemäß Abbildung Abb_Authentifizierung_und_Autorisierung bereitstellen.

Abbildung 6: Abb_Authentifizierung_und_Autorisierung 

[<=]

5.12.2.5.1 Pfad A: Token-Austausch mit Attestierung

Dieser Pfad wird beschritten, wenn der Client keine bestehende Session (d.h. kein gültiges Refresh Token) hat.
1. Vorbereitung:
    - Der Client fordert eine frische, einmalig gültige nonce vom Authorization Server an (GET /nonce).
    - Der Client erzeugt ein temporäres, nur für diese Session gültiges DPoP-Schlüsselpaar (PrK.DPoP.Sig, PuK.DPoP.Sig).

2. Integritätsprüfung und kryptografische Bindung:
    - Um zu beweisen, dass die Attestierung für genau diesen Client und diese Transaktion erstellt wurde, erzeugt der Client eine attestation_challenge. Diese bindet den Zustand des TPMs an den Thumbprint des öffentlichen Client Instance Key (PuK.Client.Sig) und die nonce des AuthS: attestation_challenge = HASH(Thumbprint
(PuK.Client.Sig) + nonce).
    - Der Client fordert beim ZETA Attestation Service eine TPM Quote an, die diese attestation_challenge als qualifyingData enthält. Das TPM signiert somit eine Aussage, die mit der Identität des Clients verbunden ist.
3. Erstellen des Client Statement: Die Attestierungsartefakte (TPM Quote, Event Log, Zertifikatskette) werden in eine client_statement-Struktur gepackt. Im Falle des Fallbacks (Software-Attestierung) enthält diese Struktur andere, softwarebasierte Evidenz.
4. Erstellen der Client Assertion (mit Attestierung) Für die Authentifizierung am Token-Endpoint erstellt der Client eine Client Assertion. Dieses JWT, mit dem privaten Client Instance Key (PrK.Client.Sig) signiert, dient als "Umschlag":
    - Es authentifiziert den Client gegenüber dem AuthS (iss und sub sind die client_id).
    - Es enthält die client_statement-Struktur als Beweis für die Clientintegrität. 

    // Client Assertion für initialen Token-Austausch (Beispiel TPM)
  {
    "iss": "cid-win-tpm-abcde",
    "sub": "cid-win-tpm-abcde
",
    "aud": [
      "https://auth-server.zeta.gematik.de/token"
    ],
    "exp": 1678888310,
    "jti": "unique-jwt-id-win-tpm-789",
    "client_statement": {
      "sub": "cid-win-tpm-abcde",
      "platform": "windows",
      "posture_type": "tpm",
      "posture": {
        "platform_product_id": {
          "package_family_name": "Primärsystem_123456789"
        },
        "product_id": "Primärsystem-win-v3",
        "product_version": "3.5.0",
        "os": "Windows 11 Pro",
        "os_version": "10.0.22621",
        "arch": "x86_64",
        "tpm_attestation_key": "base64-encoded-tpm-attestation-key...",
        "tpm_quote": "base64-encoded-tpm-quote.l...",
        "tpm_event_log": "base64-encoded-tpm-event-log...",
        "tpm_ek_certificate_chain": [
          "base64-encoded-ek-cert-1...",
          "base64-encoded-ek-cert-2..."
        ]
      },
      "attestation_timestamp": 1678888010
    }
  }

5. Authentisierung der Institution (SM(C)-B Token) Parallel dazu erstellt der Client das subject_token. Dies ist ein vom ZETA Client erzeugtes JWT, dessen Hash vom Konnektor mittels der SM(C)-B signiert wird und die Identität der Institution (z.B. Praxis) belegt. Die Audience (`aud`) dieses Token ist der Token Endpoint des Authorization Servers. Das subject_token enthält ein Binding des Client Instance Keys (PuK.Client.Sig) und des DPoP Keys (PuK.DPoP.Sig) um Manipulationen durch einen Man in the middle zu verhindern.

// Beispiel für die Payload eines Subject Token

{
  "jti": "unique-smcb-token-id-abc123",
  "nonce": "bfb76c3e-8b4a-4f91-9d2a-3c7e5f8a1b20",
  "iss": "cid-win-tpm-abcde",
  "sub": "1-2-SMC-B-Testkarte-883110000129068",
  "aud": [
    "https://auth-server.zeta.gematik.de/token"
  ],
  "exp": 1678888370,
  "iat": 1678888070,
  "client_key": {
    "jkt": "NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs"
  },
  "dpop_key": {
    "jkt": "0ZcOCORZNYy-DWpqq30jZyJGHTN0d2HglBV3uiguA4I"
  }
}


6. Token Request: Der Client sendet eine POST-Anfrage an den /token-Endpoint, die alle Teile kombiniert: grant_type=token-exchange, das subject_token, die client_assertion (mit der eingebetteten Attestierung) und den DPoP-Proof.

    **Token Exchange Request Body:**
    grant_type=urn:ietf:params:oauth:grant-type:token-exchange
    &subject_token=<SM(C)-B signed Subject Token>
    &subject_token_type=urn:ietf:params:oauth:token-type:jwt
    &client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
    &client_assertion=<Client_Assertion_JWT>
    &audience=<Resource Server Endpoint>
    &scope=<Resource Server scopes>

7. Validierung durch den AuthS: Der AuthS führt eine umfassende Prüfung durch: Validierung der Client Assertion (Signatur gegen den bei der DCR hinterlegten Public Key PuK.Client.Sig), des DPoP-Proofs, des Subject Token und insbesondere der eingebetteten Attestierung (Prüfung der Quote, der attestation_challenge und der PCR-Werte gegen die Sicherheits-Policy) und der Key Bindings (Client Instance Key und DPoP Key).

Hinweis: Für die Signaturprüfung der Quote muss der Authorization Server die vertrauenswürdigen TPM Stamm- und Zwischensignaturzertifikate installieren, die zum Signieren des Endorsement Key in den TPMs verwendet werden. Eine Liste der CAs wird hier bereitgestellt: [TrustedTPM_RootCA].

Beispiel Policy Engine Response Body mit "allow": true:

{
  "result": [
    {
      "expressions": [
        {
          "value": {
            "allow": true,
            "ttl": {
              "access_token": 300,
              "refresh_token": 86400
            }
          },
          "text": "data.policies.zeta.authz.decision",
          "location": {
            "row": 1,
            "col": 1
          }
        }
      ]
    }
  ]
}

Beispiel Policy Engine Response Body mit "allow": false:

{
  "result": [
    {
      "expressions": [
        {
          "value": {
            "allow": false,
            "reasons": [
              "User profession is not allowed",
              "One or more requested audiences are not allowed"
            ]
          },
          "text": "data.policies.zeta.authz.decision",
          "location": {
            "row": 1,
            "col": 1
          }
        }
      ]
    }
  ]
}

Beispiel Token Response Body:

{
  "access_token": "ey...",
  "expires_in": 300,
  "refresh_expires_in": 86400,
  "refresh_token": "ey...",
  "token_type": "DPoP",
  "not-before-policy": 0,
  "session_state": "4c1a0db3-e67d-41db-aa46-b81b4c071de9",
  "scope": "vsdservice"
}

5.12.2.5.2 Pfad B: Token-Erneuerung via Refresh Token

Dieser effiziente Pfad wird genutzt, wenn ein gültiges Refresh Token vorhanden ist.
1. Erstellen der Client Assertion (ohne Attestierung) Der Client erstellt eine einfache client_assertion. Sie beweist durch ihre Signatur mit dem Client Instance Key (PrK.Client.Sig) die Identität des Clients. Diese Assertion enthält keine Attestierungsdaten.

    // Client Assertion für Refresh-Token-Nutzung
    {
      "iss": "<client_id>",
      "sub": "<client_id>",
      "aud": "<AuthS_Token_Endpoint_URL>",
      "exp": ...,
      "jti": "..."
    }


2. Token Request: Der Client sendet eine POST-Anfrage an den /token-Endpoint mit grant_type=refresh_token, dem Refresh Token und der einfachen client_assertion.
3. Validierung durch den AuthS: Der AuthS validiert das Refresh Token, die Signatur der Client Assertion und den DPoP-Proof. Die Prüfung einer TPM-Attestierung entfällt. Bei Erfolg wird das alte Refresh Token invalidiert (Rotation).

5.12.2.5.3 Gemeinsame nachfolgende Schritte

Nach erfolgreicher Validierung in einem der beiden Pfade fragt der AuthS bei der Policy Engine (PE) an, ob der Zugriff gewährt werden soll. Ist die Entscheidung positiv, stellt der AuthS ein neues Access Token (gebunden an den DPoP-Schlüssel PuK.DPoP.Sig) und ein neues Refresh Token aus.

5.12.2.6 Ablauf der Authentifizierung bei Dienst-zu-Dienst Kommunikation

Um externen Diensten Zugriff auf den Resource Server zu ermöglichen, wird (in ZETA Stufe 2) Workload Identity Federation verwendet. Jeder Kubernetes Cluster, der ZETA Guard ausführt, stellt einen Identity Provider (IDP) bereit, der Subject Token für die im Cluster ausgeführten Workloads ausstellen kann.

Der ZETA Guard Authorization Server dient als Secure Token Service (STS) und kann per Token Exchange ein Subject Token gegen ein Access-Token austauschen. Er überprüft dabei die Gültigkeit des Subject Token, insbesondere ob der issuer uri des ausstellenden IDP registriert ist. Die Policy Engine (OPA) enthält die Liste der registrierten issuer uri und weiterer Attribute, die zur Autorisierung herangezogen werden.

Der folgende Ablauf beschreibt die Schritte, die für eine erfolgreiche Dienst-zu-Dienst-Kommunikation notwendig sind:

  • Registrierung des Issuers: Die issuer URI des externen IDP (z. B. Kubernetes IDP, in dem die Client Workload läuft), oder ein Schlüssel (mit dem Subject Token für den Token Exchange ausgestellt werden), wird bei der gematik registriert. Eine Policy zur Überprüfung und die issuer URI werden in die PIP und PAP Daten des Ziel-ZETA Guard aufgenommen.
  • Subject Token-Anforderung: Die Client Workload, oder eine andere Workload im externen Kubernetes Cluster, fordert zunächst ein Subject Token von seinem IDP an. Dieses Subject Token enthält Informationen über die Identität der Workload.
  • Token Exchange-Anfrage an ZETA Guard: Die externe Workload sendet das erhaltene Subject Token an den ZETA Guard Authorization Server (STS) und fordert im Austausch ein Access-Token an. Dieser Prozess wird als "Token Exchange" bezeichnet.
  • Validierung des Subject Token und Autorisierungsprüfung durch OPA: Der ZETA Guard Authorization Server validiert die Signatur und die Standard-Claims des Subject Token. Anschließend fragt er die Policy Engine (OPA) an, um zu überprüfen, ob der Aussteller (issuer URI) des Subject Token vertrauenswürdig ist und ob die im Token enthaltenen Attribute den definierten Richtlinien für den Zugriff auf den angefragten Resource Server entsprechen. Die Policy Engine enthält hierfür eine Liste der zuvor registrierten Issuer.
  • Ausstellung des initialen Access-Token: Nach erfolgreicher Überprüfung durch OPA stellt der ZETA Guard Authorization Server ein Access-Token aus. Dieses Token ist für den Zugriff auf den spezifischen Resource Server vorgesehen.
  • Ausstellung Token-Set: Nach erfolgreicher Überprüfung des Refresh-Token durch OPA stellt der ZETA Guard Authorization Server ein neues  Token-Set aus. Dieses Token-Set ist für den Zugriff auf den spezifischen Resource Server vorgesehen.
  • Zugriff auf den Resource Server: Die Client Workload im externen Dienst verwendet das erhaltene Access-Token, um Anfragen an den Resource Server zu stellen.
  • Validierung des Access-Token durch den PEP HTTP Proxy: Der PEP HTTP Proxy validiert bei jeder Anfrage das mitgesendete Access-Token durch Überprüfung der Signatur des ZETA Guard Authorization Servers sowie der aud und scope claims.
  • Zugriffsentscheidung und Antwort: Bei gültigem Access-Token gewährt der PEP HTTP Proxy den Zugriff und verarbeitet die Anfrage. Andernfalls wird der Zugriff verweigert und eine entsprechende Fehlermeldung zurückgegeben.

Abbildung 7: Abb_ZETA-Guard-Dienst-zu-Dienst-Kommunikation

A_28431 - ZETA Guard, Ablauf Dienst-zu-Dienst Kommunikation

Der ZETA Guard MUSS den Ablauf gemäß Abbildung Abb_ZETA-Guard-Dienst-zu-Dienst-Kommunikation unterstützen. [<=]

5.12.3 PDP Datenbank

Die Datenbank speichert Session-, Nutzer- und Client-Daten. Die Struktur und Verwaltung der Daten wird vom Authorization Server bestimmt.

A_26587-01 - PDP Datenbank - Kompatibilität

Die Komponente PDP Datenbank MUSS kompatibel zum Authorization Server sein. [<=]

Hinweis: Die vom ZETA Guard Authorization Server Keycloak unterstützten Datenbanken werden im ZETA Guard Produkthandbuch aufgelistet (siehe auch https://www.keycloak.org/server/db).

5.12.4 Sicherheits- und Datenschutzanforderungen an den PDP

A_28832 - PDP Policy Engine - Integritätsprüfung der Bundle-Signaturen

Die PDP Policy Engine MUSS sicherstellen, dass beim Import des Bundles mit den Policies und Daten die folgenden Signaturen erfolgreich validiert werden, bevor Bundle in die Policy Engine übernommen wird: 

  • Autor-Signatur
  • Freigabe-Signatur
[<=]

A_25449 - PDP- Nutzeridentität nur von einem zugelassenem IDP

Der PDP MUSS sicherstellen, dass nur Nutzeridentitäten von einem zugelassenen IDP akzeptiert werden. [<=]

A_26281-01 - PDP Authorization Server - Schlüssel für Token-Signatur

Der PDP Authorization Server MUSS für die Signatur von Token asymmetrische Schlüsselpaare (PrK.AuthS.Sig, PuK.AuthS.Sig) verwenden. Die Gültigkeitsdauer (Rotationsintervall) dieser Schlüssel MUSS in den ZETA Guard-Manifest-Dateien konfigurierbar sein.
[<=]

A_25751 - PDP Client-Registrierung - Anwendungsfälle nur für registrierte mobile Clients

Nach der erfolgreichen Registrierung des ersten mobilen Clients (Gerät/App Kombination), MUSS die Komponente Authorization Server sicherstellen, dass die folgenden Anwendungsfälle nur von einem registrierten mobilen Client durchgeführt werden können:

  • Client löschen
  • Client umbenennen
  • E-Mail-Adresse hinzufügen
  • E-Mail-Adresse aktualisieren
[<=]

A_25748-02 - PDP Client-Registrierung - Maximale Anzahl von Clients

Die Komponente Authorization Server MUSS sicherstellen, dass ein Nutzer maximal 256 Clients registrieren kann (konfigurierbares Limit).
Um eine Überlastung durch fehlerhafte Clients zu verhindern, MUSS der Authorization Server das Limit für die maximale Anzahl an Client-Registrierungen pro User durchsetzen.
Wird dieses Limit erreicht, MUSS der Authorization Server bei der Anlage einer neuen Registrierung automatisch die am längsten inaktive Client-Registrierung dieses Users löschen, um Platz für die neue Registrierung zu schaffen. [<=]

A_28808 - PDP Authorization Server - Löschfristen

Der Authorization Server (PDP) MUSS konfigurierbare Inaktivitäts-Löschfristen für User- und Client-Daten durchsetzen und diese Daten nach Ablauf der Fristen löschen (Default-Wert: 1 Jahr).
Der Authorization Server MUSS Session-Daten automatisch löschen, wenn die Session expired ist. [<=]

A_25749 - PDP Client-Registrierung - Nutzer Protokollierung

Die Komponente Authorization Server MUSS ein Nutzerprotokoll führen und die folgenden Anwendungsfälle für den Nutzer protokollieren:

  • Client hinzufügen
  • Client löschen
  • Client umbenennen
  • E-Mail-Adresse hinzufugen
  • E-Mail-Adresse aktualisieren
[<=]

A_25750 - PDP Client-Registrierung - Nutzer über sicherheitsrelevante Ereignisse informieren

Die Komponente Authorization Server MUSS sicherstellen, dass der Nutzer bei folgenden Anwendungsfällen informiert wird:

  • Client hinzufügen
  • Client löschen
  • Client umbenennen
  • E-Mail-Adresse aktualisieren
[<=]

Hinweis: Der Nutzer kann z.B. durch eine geeignete E-Mail oder App-Notifikation über die sicherheitsrelevanten Ereignisse informiert werden.

5.13 Policies und Daten

Die Policies und Daten werden in der ZETA Artifact Registry als OPA Bundles im OCI Format für die PDP Policy Engines der ZETA Guard Instanzen bereitgestellt. Die Bundles werden von der gematik in einem CI Prozess mit Quality Gates entwickelt und in die ZETA Artifact Registry deployed. Für jeden Fachdienst-Typ werden spezifische OPA Bundles erstellt. Falls es erforderlich ist, können auch pro ZETA Guard Instanz spezifische OPA Bundles erstellt werden.

Es gibt umgebungsspezifische Repositories in der ZETA Artifact Registry, sodass für Test und Entwicklung andere OPA Bundles verwendet werden können als für die Produktionsumgebung.

Unter dem label "latest" werden Bundles für die aktive Policy Engine bereitgestellt. Unter dem label "latest-sim" werden Bundles für die Simulations-Policy Engine bereitgestellt.

Im folgenden werden die Anforderungen an den Prozess zur Erstellung und Verteilung der OPA Bundles, dem dem Policies und Daten CI/CD-Prozess, festgelegt.

A_25464-02 - Policies und Daten CI/CD-Prozess - Tamper-Proof Protokollierung von Adminstrationsaktivitäten

Der Policies und Daten CI/CD-Prozess MUSS ein "Tamper-Proof" Audit-Log von allen administrativen Vorgängen umsetzen. [<=]

Hinweis: Die Tamper-Proof Protokollierung von Adminstrationsaktivitäten betrifft insbesondere Änderungen an der ZETA Artifact Registry. 

A_25777-02 - Policies und Daten CI/CD-Prozess - Löschfristen Auditeinträge des Admin Audit-Logs

Der Policies und Daten CI/CD-Prozess MUSS sicherstellen, dass die Löschung eines Auditeintrags den gesetzlichen Vorgaben entspricht und frühestens nach 12 Monaten erfolgt. [<=]

A_25778-01 - Policies und Daten CI/CD-Prozess - Kontrolle des Audit-Logs

Der Policies und Daten CI/CD-Prozess MUSS so umgesetzt werden, dass das Audit-Log mindestens alle 3 Monate im Vieraugenprinzip kontrolliert wird. Die Rolle des Prüfers DARF NICHT an der Administration der Infrastruktur zur Bereitstellung der Policies und Daten teilnehmen. Bei der Kontrolle ist insbesondere auf ungewöhnliche, nicht nachvollziehbare oder maliziöse Administratoraktivitäten zu achten. [<=]

A_25465-01 - Policies und Daten CI/CD-Prozess - Änderungen nur durch berechtigte Nutzer

Der Policies und Daten CI/CD-Prozess MUSS sicherstellen, dass nur berechtigte Nutzer Änderungen von Policies oder PIP-Daten durchführen können.  [<=]

A_25466-01 - ZETA Artifact Registry - Sicherheitsmeldung bei Aktualisierung von Policies oder PIP-Daten

Die ZETA Artifact Registry MUSS sicherstellen, dass bei der Aktualisierung der Policies oder der PIP-Daten eine Sicherheitsmeldung automatisiert über die von der gematik angebotene Schnittstelle an das TI SIEM-System übermittelt wird. [<=]

A_25467-01 - Policies und Daten CI/CD-Prozess - Änderungen nur unter 4 Augen

Der Policies und Daten CI/CD-Prozess MUSS sicherstellen, dass Änderungen in Policies oder PIP-Daten nur im Vieraugenprinzip durchgeführt werden können. [<=]

5.14 Telemetriedaten-Service

Der Telemetriedaten-Service ist eine Implementierung des OpenTelemetry-Frameworks der die Telemetriedaten aller ZETA Guard-Komponenten einsammelt (Collector) und für die Weitergabe (Exporter) an externe Systeme (Monitoring des Anbieters, gematik Telemetriedaten Schnittstelle und gematik SIEM) aufbereitet.

Zusätzlich nimmt der Telemetriedaten-Service Fehlermeldungen (Traces), Bestandsdaten (Metriken) und Selbstauskunftsdaten  (Logs) des Resource Servers entgegen und leitet sie an die gematik Telemetriedaten Schnittstelle weiter.

A_27260 - ZETA Guard, Telemetriedaten-Service, Weitergabe der Daten ohne Profilbildung

Der Telemetriedaten-Service im ZETA Guard MUSS die von den Komponenten des ZETA Guard gesammelten Telemetriedaten so verändert an das Monitoring System des Anbieters und an die gematik Telemetriedaten Schnittstelle sowie SIEM der gematik weitergeben, dass eine Profilbildung nicht mehr möglich ist.
[<=]

A_27261 - ZETA Guard, Telemetriedaten-Service, Protokoll

Der Telemetriedaten-Service im ZETA Guard MUSS zur Weitergabe der Daten das OpenTelemetry Protokoll (OTLP) über gRPC oder über HTTP/JSON verwenden. [<=]

A_27492-02 - ZETA Guard, OpenTelemetry Unterstützung

Die ZETA Guard Komponenten HTTP Proxy, Authorization Server, Policy Engine und Notification Service MÜSSEN für alle durchgeführten Operationen Telemetriedaten in Form von Traces an den Telemetriedaten-Service senden. [<=]

A_27727-01 - ZETA Guard, Telemetriedaten-Service, Lieferung

Der Telemetriedaten-Service im ZETA Guard SOLL Telemetriedaten asynchron an den gematik Telemetriedaten-Service liefern. Dafür MUSS der Telemetriedaten-Service des ZETA Guard für die Telemetriedatenlieferung von Traces an den gematik Telemetriedaten-Service als ExportProcessorType den Typ Batch verwenden (dies ist auch der Standardwert bei OpenTelemetry).
[<=]

A_27725-01 - ZETA Guard, Telemetriedaten Service, Status Codes

Der Telemetriedaten Service im ZETA Guard MUSS im Parameter http.response.status_code einen HTTP-Statuscode gemäß Tab_gemSpec_ZETA_Telemetriedaten_HTTP_Statuscodes übermitteln.

Tabelle 19: Tab_gemSpec_ZETA_Telemetriedaten_HTTP_Statuscodes

HTTP-Statuscodes
Name der Statuscodegruppe Beschreibung
1xx INFORMATIONAL Der Server hat die Anfrage erhalten und befindet sich in der Bearbeitung.
2xx
SUCCESSFUL
Die Operation wurde erfolgreich durchgeführt.
3xx REDIRECTION Der Client muss zusätzliche Maßnahmen ergreifen, um die Anfrage abzuschließen.
4xx
CLIENT_ERROR
Ein Client-seitiger Fehler verhindert die erfolgreiche Durchführung der Operation.
5xx
SERVER_ERROR
Ein Server-seitiger Fehler verhindert die erfolgreiche Durchführung der Operation.
[<=]

Hinweis: Es sind vom Anbieter, anstatt der Status Code Klassen (first digit of status code), die konkreten 3-stelligen HTTP-Statuscodes gemäß [RFC9110] zu verwenden.

A_27494-01 - Telemetriedaten-Service, Custom Collector für Selbstauskunft

Der Telemetriedaten-Service MUSS einen Custom Collector (oder einen Collector mit einem Custom Processor) für die Selbstauskunft des Resource Servers implementieren. Die Selbstauskunft des Resource Servers erfolgt für jede eigenständige Instanz als OTLP Log Record.
Der OTLP Log Record für die Selbstauskunft ist wie folgt definiert:
Body: "Selbstauskunft".
Attributes:

  • product_name – Name des Produkts
  • product_version – Aktuelle Produktversion
  • producttype_version – Version des Produkt-Typs
  • configuration_version – Konfigurationsversion
  • pod_name – Name des Pods/der Instanz des Resource Servers
  • timestamp – Der Zeitpunkt der Erstellung des Log Records (wird automatisch gesetzt).
[<=]

Beispiel: Selbstauskunft OTLP-Log-Nachricht (JSON) vom Resource Server an den Telemetriedaten-Service. Die Log-Nachricht wird unverändert an die gematik Telemetriedaten-Schnittstelle weitergeleitet.


{
  "resourceLogs": [
    {
      "scopeLogs": [
        {
          "logRecords": [
            {
              "timestamp": "1678886400000000000",
              "body": { "stringValue": "Selbstauskunft" },
              "attributes": [
                { "key": "product_name", "value": { "stringValue": "Backend-Service" } },
                { "key": "product_version", "value": { "stringValue": "1.2.0" } },
                { "key": "producttype_version", "value": { "stringValue": "1.2.3" } },
                { "key": "configuration_version", "value": { "stringValue": "cfg-rev-45" } },
                { "key": "pod_name", "value": { "stringValue": "my-app-pod-1" } }
              ]
            }
          ]
        }
      ]
    }
  ]
}

5.15 HSM Proxy

Der HSM Proxy dient als Abstraktionsschicht zwischen den ZETA Guard Kernkomponenten (insbesondere dem AuthS und dem HTTP Proxy) und den physischen oder cloudbasierten Hardware Security Modulen (HSM). Er stellt sicher, dass kryptographisches Schlüsselmaterial (Private Keys) die sichere Umgebung des HSM niemals verlässt. Die Kommunikation mit dem HSM Proxy erfolgt zustandslos über das gRPC-Protokoll.

Neben der Erzeugung von Signaturen ermöglicht der HSM Proxy ein sicheres Schlüsselmanagement durch Key Wrapping. Hierbei werden Schlüssel innerhalb der sicheren HSM-Umgebung durch Key Encryption Keys (KEK) verschlüsselt, sodass sie außerhalb des HSM gespeichert werden können, ohne die Vertraulichkeit zu gefährden.

Hinweis: Aktuell wird der HSM Proxy immer durch den Anbieter/Hersteller des TI 2.0 Dienstes bereitgestellt.

A_28829 - HSM Proxy, Schnittstelle zu den Komponenten

Der ZETA Guard HSM Proxy MUSS die Schnittstelle zu den Komponenten gemäß [hsm-proxy.proto] umsetzen. [<=]

A_28830 - HSM Proxy, Attribute Based Access Control

Der ZETA Guard HSM Proxy MUSS den Zugriff auf die Operationen der Schnittstelle nach berechtigter Komponente und key_id einschränken können.
Die berechtigten Komponenten müssen mit mTLS authentifiziert werden können. [<=]

A_28831 - HSM Proxy, key_id

Der ZETA Guard HSM Proxy MUSS die key_id nach dem Schema [Komponente]-[Zweck]-[Algorithmus]-[Version/Datum] umsetzen. [<=]

Beispiel für eine key_id: zeta-guard-keycloak-jwt-es256-v1 -> Darf nur von Keycloak genutzt werden.

5.15.1 Sicherheits- und Datenschutzanforderungen an den HSM Proxy

A_28746 - ZETA Guard - HSM Proxy in einer VAU

Falls der ZETA Guard in einer VAU umgesetzt wird, MUSS der Hersteller des TI 2.0-Dienstes sicherstellen dass der HSM-Proxy in einer VAU läuft. [<=]

A_28748 - HSM-Proxy - Zugriff auf HSM Proxy durch attestierte ZETA-Komponenten

Falls der ZETA Guard in einer VAU umgesetzt wird,  MUSS der HSM Proxy sicherstellen, dass den Zugriff auf den ZETA relevanten Schlüssel ausschließlich durch attestierte ZETA-Komponenten erfolgen kann. [<=]

A_28747 - HSM-Proxy - Zugriff auf ZETA-Schlüssel über HSM-Proxy

Falls der HSM-Proxy in einer VAU umgesetzt wird, MUSS der Anbieter des TI 2.0-Dienstes sicherstellen, dass Zugriffe auf die ZETA‑relevanten Schlüssel oder die Schnittstellen zur Nutzung der Schlüssel im HSM ausschließlich durch einen HSM‑Proxy erfolgen können, der entweder

  • gegenüber der HSM attestiert ist oder
  • gekoppelt (paired) ist, d. h., dass der Proxy im Rahmen einer dokumentierten Schlüsselzeremonie eindeutig mit dem HSM(-Cluster) bzw. der HSM(-Cluster)-Partition verbunden wird; die dabei erzeugten und zugewiesenen kryptographischen Zugriffscredentials sind für das HSM Proxy exklusiv).
  [<=]

A_28814 - HSM-Proxy - Sealing von Credentials

Der HSM-Proxy MUSS im Falle eines Pairings mit dem HSM seine lokal auf dem Server gehaltenen Zugriffs-Credentials  mittels Sealing schützen und nach einem Neustart des Systems damit nur für die korrekt gestartete Verarbeitungskontexte des HSM-Proxy wieder verfügbar machen. [<=]

A_28797-01 - HSM-Proxy - Isolation HSM Proxy

Falls das HSM-Proxy in einer VAU umgesetzt wird, MUSS die VAU mittels eines wirksamen technischen Separationsmechanismus gewährleisten, dass Verarbeitungen in anderen Verarbeitungskontexten weder direkt noch indirekt die Integrität oder Sicherheit der Verarbeitungen einem HSM‑Proxy beeinträchtigen können. [<=]

A_28816 - HSM-Proxy - Minimale Trusted-Computing-Base

Der HSM‑Proxy MUSS als gehärteter Software‑Stack umgesetzt sein und insbesondere dem Prinzip der minimalen Trusted-Computing-Base folgen, um die Härtung bzw. die notwendige Robustheit des Ergebnisses der Begutachtung zu erreichen. Die Trusted-Computing-Base DARF NICHT mehr Komponenten enthalten als für die Bereitstellung der HSM‑Proxy‑Funktionalität erforderlich. [<=]

A_28817 - HSM-Proxy – Keine Persistierung von Request/Response Daten

Der HSM‑Proxy DARF Request‑ oder Response‑Daten NICHT persistieren bzw. cachen. [<=]

A_28819 - HSM-Proxy - Integrität und Authentizität der Konfiguration und Rollback-Schutz

Der HSM-Proxy MUSS mit technischen Mitteln (wie Sealing, Signaturen und monotonen Versionszählern) sicherstellen, dass die Integrität und Authentizität geladener Konfigurationsdaten sichergestellt sind und dass ein Downgrade auf eine nicht mehr autorisierte Version der Konfiguration abgewehrt wird. [<=]

A_28820 - HSM-Proxy - Eingabe Validierung von Operationen

Der HSM-Proxy MUSS sicherstellen, dass alle Daten und Parameter, die über eine API kommuniziert werden, sicherheitstechnisch validiert werden. [<=]

A_28821 - HSM-Proxy - Schutzmaßnahmen gegen die OWASP Top 10 Risiken

Der HSM-Proxy MUSS geeignete technische Maßnahmen zum Schutz vor den Risiken in der aktuellen Version der [OWASP-Top-10-Risiken] umsetzen.  [<=]

A_28822 - HSM-Proxy - Datenschutzkonformes Logging und Monitoring

Der HSM-Proxy MUSS die für den Betrieb des Zero Trust erforderlichen Logging- und Monitoring-Informationen in solcher Art und Weise erheben und verarbeiten, dass mit technischen Mitteln ausgeschlossen ist, dass dem Anbieter eines TI 2.0-Dienstes vertrauliche oder zur Profilbildung geeignete Daten zur Kenntnis gelangen. [<=]

5.16 Betrieb

Die Komponenten des ZETA Guard werden in einer Kubernetes (K8s) Umgebung des TI 2.0 Dienst-Anbieters betrieben.

5.16.1 Anforderungen an Hersteller einer ZETA Komponente

A_27851 - ZETA Guard - Rückwärtskompatibilität

Der Hersteller des ZETA Guard MUSS sicher stellen, dass bei Änderungen an den öffentlichen Schnittstellen keine Breaking-Changes eingeführt werden, bei gleichzeitiger Wahrung der Rückwärtskompatibilität für alle aktiv unterstützten Releases. [<=]

5.16.2 Anforderungen an Hersteller eines TI 2.0-Dienstes

A_27818 - Unterstützung der Wartbarkeit des ZETA Guard-Dienstes

Der Hersteller eines Dienstes der TI2.0 MUSS regelmäßige Updates seines Produktes einplanen, damit die Aktualisierung der ZETA Guard gewährleistet ist. Ein Regelupdate erfolgt maximal einmal pro Quartal. Diese Anforderung gilt über den gesamten Lebenszyklus des Produktes hinweg. [<=]

5.16.3 Anforderungen an Anbieter eines TI 2.0-Dienstes

A_27792 - ZETA Guard - Verbot der Nutzung bestimmter ZETA Guard Versionen

Der Anbieter eines Dienstes der TI2.0 DARF eine zurückgezogene oder ungültige ZETA Guard Version NICHT produktiv einsetzen. [<=]

A_27793 - ZETA Guard - Reguläre Aktualisierung von ZETA Guard

Der Anbieter eines Dienstes der TI2.0 MUSS in der Lage sein, regelmäßig Patchupdates der integrierten ZETA Guard Version, die keine Auswirkung auf das Zusammenspiel mit dem Ressource Server haben, durchzuführen. Ein Regelupdate erfolgt maximal einmal pro Quartal. [<=]

A_27794 - ZETA Guard - Prüfung auf neue ZETA Guard Versionen

Der Anbieter eines Dienstes der TI2.0 MUSS regelmäßig auf neue freigegebene ZETA Guard Versionen prüfen und - wenn vorhanden - Aktualisierungen im Rahmen des Gültigkeitszeitraums einplanen. Ein Regelupdate erfolgt maximal einmal pro Quartal. [<=]

A_27795-01 - ZETA Guard - Gewährleistung der Verbindung zur ZETA Artifact Registry

Der Anbieter eines Dienstes der TI 2.0 MUSS gewährleisten, dass der eingesetzte ZETA Guard jederzeit Aktualisierungen der PIP-Daten und PAP-Policies sowie der Provisioning Daten über die lokale Artifact Registry von der ZETA Artifact Registry abrufen kann. [<=]

Hinweis: Der ausfallsichere Betrieb der lokalen Artifact Registry und die Verbindung zur ZETA Artifact Registry sind vom Anbieter sicherzustellen.

A_27796 - ZETA Guard - Gewährleistung der Verbindung zur Telemetriedatenlieferung der gematik

Der Anbieter eines Dienstes der TI2.0 MUSS gewährleisten, dass der eingesetzte ZETA Guard jederzeit Datenlieferungen an die gematik übermitteln kann. [<=]

Hinweis: Notwendige Freischaltungen sind vom Anbieter zu beauftragen und deren Funktionsfähigkeit sicherzustellen.

A_25773-02 - ZETA Guard - Nutzung der von der gematik bereitgestellten Container Images

Der Anbieter eines Dienstes der TI 2.0 MUSS die von der gematik bereitgestellten Container Images im ZETA Guard verwenden, um den Zugang zum TI 2.0 Dienst zu kontrollieren. [<=]

Hinweis: Ausgenommen sind die austauschbaren ZETA Guard Komponenten.

5.16.4 Anforderungen für nahtlose Aktualisierungen

Es ist durch geeignete Maßnahmen sicherzustellen, dass ein unterbrechungsfreier Betrieb, bzw. die durchgängige Verfügbarkeit zu jeder Zeit gewährleistet ist.  

A_25784 - ZETA Guard-Komponenten - Download von Aktualisierungen im Hintergrund

Die Komponenten des ZETA Guard MÜSSEN in der Lage sein, Aktualisierungen im Hintergrund herunterzuladen, ohne den laufenden Betrieb zu beeinträchtigen. [<=]

A_25785 - ZETA Guard-Komponenten - Nahtloser Übergang zu neuen Versionen

Die Komponenten des ZETA Guard MUSS einen Mechanismus bieten, der einen nahtlosen Übergang zu neuen Versionen oder Patches ermöglicht, ohne die Verfügbarkeit für Endnutzer zu unterbrechen. [<=]

A_25786 - ZETA Guard-Komponenten - Abschluss von Transaktionen vor Aktualisierung

Die Komponenten des ZETA Guard MUSS sicherstellen, dass alle aktuellen Transaktionen und Anfragen abgeschlossen oder ordnungsgemäß übernommen werden, bevor ein Update finalisiert wird. [<=]

A_25787 - ZETA Guard-Komponenten - Gewährleistung der Systemintegrität während Aktualisierungen

Die Komponenten des ZETA Guard MUSS während des gesamten Aktualisierungsprozesses die Systemintegrität und Sicherheitsrichtlinien aufrechterhalten. [<=]

A_25788 - ZETA Guard-Komponenten - Unterstützung von Rollbacks

Die Komponenten des ZETA Guard MUSS die Fähigkeit besitzen, zu einer stabilen Vorversion zurückzukehren, sollte eine Aktualisierung fehlerhaft sein oder abgebrochen werden müssen. [<=]

A_25789 - ZETA Guard-Komponenten - Schnelle Rollback-Durchführung

Die Komponenten des ZETA Guard MUSS Rollbacks schnell und ohne manuelle Eingriffe durchführen können. [<=]

5.16.5 Überwachung des Betriebsstatus

Um die Verfügbarkeit des ZETA‑Guard sicherzustellen, führt die gematik ein externes Probing durch, das von außen den allgemeinen Erreichbarkeits‑ und Betriebsstatus überprüft. Dies erfolgt im Rahmen der überwachten TI 2.0-Dienstes, die eine konkrete ZETA Guard Instanz einsetzen.

Dem Anbieter von TI 2.0-Dienstes wird empfohlen, ergänzend dazu geeignete technische Maßnahmen aufzusetzen, um interne Self‑Checks der ZETA-Guard Komponenten durchzuführen sowie Mechanismen zur Selbstüberwachung und ‑reparatur zu etablieren. Dies umfasst insbesondere automatisierte Verfahren zur Prüfung zentraler Funktionspfade, der Erreichbarkeit benötigter Abhängigkeiten sowie der Integrität interner Zustände.
Durch solche Self‑Checks können potenzielle Störungen frühzeitig erkannt, lokalisiert und häufig sogar ohne manuelle Eingriffe behoben werden. 
Dies maximiert die Betriebsstabilität, minimiert Ausfallzeiten und stärkt die Resilienz des Gesamtsystems.

Bei einer Bereitstellung in Kubernetes-Umgebungen stehen hierfür erprobte Mechanismen zur Verfügung. Beispiele umfassen:

  • Liveness‑Probes (z. B. /health/live): erkennt Hänger oder Deadlocks und startet Pods automatisch neu.
  • Readiness‑Probes (z. B. /health/ready): signalisiert, ob eine Komponente aktuell Anfragen zuverlässig bedienen kann; Pods werden erst nach erfolgreichem Probe‑Ergebnis in den Service-Traffic aufgenommen.
  • Startup‑Probes: eignen sich für Komponenten mit längerer Initialisierungsphase, um sicherzustellen, dass der Pod nicht fälschlicherweise als „defekt“ betrachtet wird.
  • Self‑Healing‑Mechanismen durch Kubernetes (z. B. RestartPolicy, ReplicaSets): ermöglichen automatische Wiederherstellung bei Ausfällen einzelner Komponenten, ohne dass ein manuelles Eingreifen nötig ist.
  • Resource‑Überwachung mittels Kubernetes‑Metriken (CPU, RAM, Netzwerk): kann frühzeitig Engpässe und Anomalien im Ressourcenverbrauch sichtbar machen.

A_27385-01 - ZETA Guard-Komponenten - Abbildung von Produkt- und Konfigurationsversionen

Der ZETA Guard MUSS als Subkomponente eines TI 2.0-Fachdienstes folgende Versionsangaben abrufbar vorhalten:

  • ZETA-Guard Modulversion gem. Semantic Versioning (Major-Minor-Patch) 
  • Konfigurationsversion gem. [gemKPT_Betr#A_20219-01] des ZETA-Guard
[<=]

A_27496 - Zeta Guard-Komponenten - Aufbereitung von Client Daten zum Monitoring

Die Komponenten des ZETA Guard MÜSSEN zu jedem Schnittstellenaufruf an den Resource-Server mindestens folgende Informationen aus der PDP Datenbank - und dem Request des Aufrufers verarbeiten und protokollieren, damit eine anschließende Zusammenführung von Monitoring-Daten aus verschiedenen Quellen (siehe [A_27494*]) im Telemetriedaten-Service ermöglicht werden kann.

Diese Daten umfassen mindestens:

  • product_id - aus dem Token Self-Assessment des aufrufenden Clientsystems
  • product_version - aus dem Token Self-Assessment des aufrufenden Clientsystems
  • professionOID - aus dem SM-B Zertifikat des aufrufenden Clientsystems
[<=]

5.16.6 Leistungs-Anforderungen

In diesem Kapitel werden die Anforderungen an Performance, Skalierbarkeit und Last an die ZETA-Guard Komponenten zusammengefasst. Die zugrunde liegenden Messungen dienen der Verifikation der Leistungsfähigkeit der Komponenten des ZETA-Guard. Da der ZETA-Guard in verschiedenen Szenarien genutzt werden kann, werden die Messungen einheitlich direkt am Eingang zum PEP bzw. PDP gemessen und durch das Service-Mesh vorgenommen. Die Latenzmessungen müssen über die Differenz zwischen Antwortzeiten beim Eingang in den PEP und dem Ausgang aus dem PEP gebildet werden.

Die geforderten Antwortzeiten bzw. Latenzen werden dabei in Perzentilen vorgegeben. Zur Methode der Perzentile siehe u.a. auch [gemSpec_Perf, Kapitel 2.1] zur Bearbeitungszeit. Dort werden grundsätzlich Mittelwerte der Bearbeitungszeiten sowie 99%-Quantile vorgegeben.

A_26486-01 - PEP HTTP Proxy - Bearbeitungszeiten

Die Komponente PEP HTTP Proxy MUSS die Bearbeitungszeitvorgaben unter Last aus der Tabelle "Tab_gemSpec_ZETA_PEP_HTTP_Proxy: Bearbeitungszeitvorgaben" erfüllen.

Die Bearbeitungszeiten lassen sich in Latenzen und Antwortzeiten unterscheiden.
PEP Latenzen sind die Zeiten, die der PEP benötigt, um die Anfragen an den Fachdienst weiterzuleiten, bzw. die Response eben zurück durchzuleiten. Die Benennung als Latenz erfolg aufgrund der Tatsache, dass der PEP hier Requests nur durchleitet, die eigentliche Beantwortung erfolgt durch den Fachdienst.
PEP Antwortzeiten beziehen sich dabei dann auf den Austausch der Nachrichten 1-4 des ASL Protokolls, die der PEP selbst beantwortet.

Tabelle 20: Tab_gemSpec_ZETA_PEP_HTTP_Proxy: Bearbeitungszeitvorgaben

Request-Typ


Messung-Typ


Mittelwert


90%


95%


99%


Request an Fachdienst ohne ASL
Latenz
75ms
100ms
150ms
1s
Request an Fachdienst mit ASL
Latenz
75ms
100ms
150ms
1s
Austausch der ASL-Nachrichten 1-4
Antwortzeit
75ms
100ms
150ms
1s
Ausliefern der .well-known (1)
Antwortzeit
7.5ms
10ms
15ms
100ms

(1) dies kann durch Caching mitigiert werden
[<=]

A_26487 - PEP HTTP Proxy -Skalierbarkeit

Die Komponente PEP HTTP Proxy MUSS horizontal skalierbar sein, sodass mit jedem zusätzlichen Pod mindestens 75% der Leistung eines einzigen Pods verfügbar werden. [<=]

A_26488 - PEP HTTP Proxy - Last

Die Komponente PEP HTTP Proxy MUSS pro Pod mehr als 300 Websocket Verbindungen und mehr als 300 Requests pro Sekunde unterstützen können. [<=]

A_26489-01 - PDP Authorization Server - Bearbeitungszeiten

Die Komponente PDP Authorization Server MUSS die Bearbeitungszeitvorgaben unter Last aus der Tabelle "Tab_gemSpec_ZETA_PDP_Auth_Server: Bearbeitungszeitvorgaben" erfüllen.

Für den PDP gibt es verschiedene Typen von Requests, die hier analog zum PEP in Perzentilen dargestellt werden. Alle Typen von Requests sind Antwortzeiten, daher ist hier kein besonderer Messung-Typ aufgeführt.

Tabelle 21: Tab_gemSpec_ZETA_PDP_Auth_Server: Bearbeitungszeitvorgaben

Request-Typ


Mittelwert


90%


95%


99%


/nonce
33ms
50ms
75ms
500ms
/register
75ms
100ms
150ms
1s
/token
75ms
100ms
150ms
1s
/refresh
75ms
100ms
150ms
1s


[<=]

A_26490 - PDP Authorization Server - Skalierbarkeit

Die Komponente PDP Authorization Server MUSS horizontal skalierbar sein, sodass mit jedem zusätzlichen Pod mindestens 75% der Leistung eines einzigen Pods verfügbar werden. [<=]

A_26491 - PDP Authorization Server - Last

Die Komponente PDP Authorization Server MUSS pro Pod über alle Endpunkte zusammen mehr als 300 Requests pro Sekunde unterstützen können. [<=]

Hinweis: Anfragen an abhängige Dienste im Hintergrund, um einen Request vollständig zu bearbeiten (z.B. OCSP), werden bei den Bearbeitungszeiten mit berücksichtigt, jedoch nicht dem abfragenden Dienst zur Last gelegt.

5.16.7 Betriebliche Schnittstellendefinition

Die Komponenten des ZETA Guard stellen Endpunkte zur Verfügung, um die grundlegende Funktionalität, eingebettet in einen Service, zu gewährleisten. Jeder Dienst, der die ZETA Guard-Komponenten betreibt, stellt damit folgende Endpunkte für einen Nutzer zur Verfügung.

A_28436 - ZETA Guard, Endpunkte im Internet

Der Anbieter eines TI 2.0 Dienstes MUSS die ZETA Guard und Kubernetes Cluster Endpunkte gemäß Tab_gemSpec_ZETA_Schnittstellendefinition_ZETA_Guard im Internet bereitstellen. [<=]

Tabelle 22: Tab_gemSpec_ZETA_Schnittstellendefinition_ZETA_Guard

Endpunkt / Anwendungsfall
Beschreibung
GET /.well-known/api-catalog Abruf des Resource Server API Catalog Well-known JSON Dokuments (https://www.rfc-editor.org/rfc/rfc9727.html)
GET /.well-known/oauth-protected-resource/<resource> Abruf des Resource Server Well-known JSON Dokuments. Default ist GET /.well-known/oauth-protected-resource/. Wenn mehrere Ressourcen vom Resource Server bereitgestellt werden, dann werden die Well-known Dokumente über den Subpath <resource> bereitgestellt.
Beispiel: GET /.well-known/oauth-protected-resource/resource1
(https://www.rfc-editor.org/rfc/rfc9728.html)
GET /.well-known/oauth-authorization-server Abruf des Autorisierungsserver Well-known JSON Dokuments
GET /.well-known/openid-federation
HOST <ZETA Guard Authorization Server>
Abruf des Entity Statement Well-known nach OpenID Federation 1.0
GET /.well-known/openid-configuration
HOST <ZETA Guard Authorization Server>
Abruf des OpenID Well-known JSON Dokuments.
Der ZETA Guard Authorization Server stellt Subject Token für Workloads im ZETA Guard aus, für den Zugriff auf das SIEM und den Telemetriedaten Empfänger der gematik.
GET /openid/v1/jwks
HOST <ZETA Guard Authorization Server>
JWKS des ZETA Guard Authorization Server
Enthält die Signatur-Zertifikate des ZETA Guard Authorization Server
GET /openid/v1/jwks
HOST <Kubernetes Cluster IDP>
JWKS des Kubernetes Cluster IDP
Enthält die Signatur-Zertifikate des IDP
Hinweis: Die Bereitstellung erfolgt nicht durch de ZETA Guard, sondern durch den Kubernetes Cluster.
GET /nonce Nonce abrufen
POST /register Dynamic Client Registration
GET /authorize Für die Autorisierung nach OAuth Authorization Code Flow
POST /token Es werden verschiedene Token Requests unterstützt:
- Token Request mit Authorization Code
- Token Exchange mit Subject Token
- Token Exchange mit Refresh Token

Hinweis: In ZETA Stufe 1 werden die Endpunkte: GET /.well-known/api-catalog und GET /.well-known/openid-federation noch nicht bereitgestellt.

Zusätzlich wird die ZETA Artifact Registry bereitgestellt, die über die lokale Artifact Registry von ZETA Guard abgefragt wird, um beispielsweise aktualisierte Policy-Informationen abzuholen. Folgende Repositories sind in der ZETA Artifact Registry definiert. 

Tabelle 23: Tab_gemSpec_ZETA_ZETA_Artifact_Registry_Repositories

ZETA Artifact Registry Repository
Beschreibung
europe-west3-docker.pkg.dev/gematik-pt-zeta-prod/zeta-policies/{application}:{label} Abruf der Policy eines Dienstes
europe-west3-docker.pkg.dev/gematik-pt-zeta-prod/zeta-helm ZETA Guard Helm Charts
europe-west3-docker.pkg.dev/gematik-pt-zeta-prod/zeta-dcr ZETA Guard Container Images, ZETA Guard Provisioning Container Image und ZETA Guard Sperrlisten

5.16.8 Prozesse zur Inbetriebnahme eines ZETA Guard

Für den Betrieb eines ZETA Guard ist es erforderlich, dass ein Registrierungsprozess der gematik durchlaufen wird. In diesem Prozess werden Informationen über den Kubernetes Cluster und den Authorization Server des ZETA Guard bereitgestellt, die eine sichere Kommunikation mit Diensten der gematik (Artifact Registry, SIEM und Telemetriedaten Empfänger) und die Integration in den Federation Master der TI ermöglichen.

A_28437-01 - ZETA Guard, Registrierung bei der gematik

Der Anbieter des TI 2.0 Dienstes MUSS den ZETA Guard Authorization Server und den Issuer des Kubernetes Cluster IDP (oder alternativ einen JWK, der für die Signatur von Subject Token im Workload Identity Federation Authorization Flow verwendet wird) bei der gematik registrieren. [<=]

5.17 Anforderungen an Dienste der TI

Dienste der TI (Resource Server), die durch einen ZETA Guard geschützt sind, erhalten nur Requests von Clients oder anderen Diensten, wenn der PDP des ZETA Guard den Zugriff gewährt und ein Access Token ausgestellt hat. Der PEP des ZETA Guards setzt durch, dass nur Requests mit gültigem Access Token zum Resource Server gelangen.

5.18 Sicherheitsleistungen des ZETA Guard für Resource Server

Der ZETA Guard bietet umfassende Sicherheitsleistungen für Resource Server in der TI 2.0, indem er das Zero Trust-Paradigma umsetzt. Seine wichtigsten Sicherheitsleistungen lassen sich wie folgt zusammenfassen:

  • Zugriffskontrolle: Der Policy Enforcement Point (PEP) fungiert als HTTP Proxy und kontrolliert den gesamten Datenverkehr zwischen Client-Anwendungen und dem Resource Server. Er lässt nur Anfragen mit gültigem Access Token durch, das vom Policy Decision Point (PDP) ausgestellt wurde. Zusätzliche Prüfungen, gesteuert durch Attribute im Access Token, können integriert werden. Optional kann konfiguriert werden, dass im Request Header PoPP ein PoPP Token vorhanden sein muss.
  • Client-Registrierung: Der ZETA Guard setzt eine sichere Client-Registrierung durch, bei der Clients durch verschiedene Mechanismen attestiert werden (Android Key and ID Attestation, Apple DCAppAttest, TPM Attestation und Software Attestation). Der Client wird in der Regel an eine TI-Identität gebunden (gID, SM(C)-B oder HBA).
  • Autorisierung und Authentifizierung: Der ZETA Guard OAuth2 Authorization Server steuert die Authentifizierung des Nutzers. Die Entscheidung zur Ausstellung des Access Token, nach erfolgreicher Client-Registrierung und Authentifizierung, wird durch die ZETA Guard Policy Engine basierend auf definierten Richtlinien (Policies) getroffen. Dies beinhaltet die Überprüfung von Nutzer- und Client-Registrierungsdaten inkl. Client-Attestierung. Unterstützte Authentifizierungsverfahren sind Token Exchange mit SM(C)-B signiertem Subject-Token sowie Authentifizierung über sektorale IDPs mit OIDC Flow.
  • Policy-Based-Access-Control: Der Policy Information Point (PIP) und der Policy Administration Point (PAP) verwalten und liefern die freigegebenen Policies an die ZETA Guard Policy Engine. Die Policies sind maschinenlesbar und definieren die Zugriffsregeln, nach denen die Entscheidung zur Ausstellung von Access und Refresh Token erfolgt. Die Integrität und Authentizität der Policies wird durch Signaturen sichergestellt.
  • Schutz vor Token-Theft: Durch den Einsatz von DPoP wird verhindert, dass gestohlene Access und Refresh Token durch Angreifer verwendet werden können, um Zugriff auf den Resource Server zu erhalten.
  • TLS Transportverschlüsselung: Alle Komponenten des ZETA Guards stellen die Vertraulichkeit und Integrität der transportierten Daten sicher, indem sie TLS an allen Endpunkten verwenden und clientseitig mTLS unterstützen.
  • Mehrschichtige Transport-Sicherheit: ZETA/ASL bietet neben TLS eine zweite Sicherungsschicht beim Transport der Daten vom Client zum ZETA Guard, um Schwachstellen in der TLS-Schicht abzufangen. Dies schützt vor bekannten und zukünftigen Schwachstellen in TLS-Protokoll und -Implementierungen. Der Betrieb der Anwendung kann fortgeführt werden, selbst wenn Schwachstellen im TLS-Protokoll entdeckt werden. Diese Funktion ist optional nutzbar.
    Datenverschlüsselung:
    Die ZETA Guard Daten (ZETA/ASL-Daten, Session-, User- und Client-Daten) werden bei der Persistenz zusätzlich verschlüsselt (SymK.DB.Enc). Der ZETA Guard kann so konfiguriert werden, dass private Schlüssel für die Datenverschlüsselung mit einem Key Encryption Key geschützt werden, der in einem Hardware Security Module (HSM) gespeichert ist.
  • VAU Unterstützung: Der ZETA Guard kann optional in einer Vertrauenswürdige Ausführungsumgebung (VAU) ausgeführt werden.
  • Monitoring und Logging: Der ZETA Guard sammelt Telemetriedaten und sicherheitsrelevante Ereignisse von PEP und PDP, um die Sicherheit kontinuierlich zu überwachen. Dies beinhaltet die Erkennung von Anomalien und potenziellen Bedrohungen. ZETA Guard sendet fachdienstspezifische Telemetriedaten und sicherheitsrelevante Ereignisse an die gematik (TI SIEM und gematik Telemetriedaten-Schnittstelle) sowie an den Anbieter des TI 2.0 Dienstes in einer anonymisierten Form, um eine Profilbildung zu verhindern.
  • Sicherheits- und Produktgutachten: Für die ZETA Guard Implementierung werden ein Sicherheits- und ein Produktgutachten bereitgestellt.
  • Produkthandbuch sowie Sicherheits- und Datenschutzkonzept: Im Produkthandbuch sind die Anforderungen an den Betrieb sowie die Konfiguration des ZETA Guard beschrieben. Im Sicherheits- und Datenschutzkonzept sind die Bedrohungen und umgesetzten Maßnahmen gegen Bedrohungen beschrieben. Dadurch wird für den Anbieter des TI 2.0 Dienstes erkennbar, welche zusätzlichen Sicherheitsleistungen zum Schutz des Dienstes und der Daten vom Anbieter erbracht werden müssen.

5.19 Weitere Leistungen des ZETA Guard für Resource Server

Der ZETA Guard übernimmt für Resource Server weitere Leistungen:

  • gematik Telemetriedaten Lieferung: Der Telemetriedaten-Service sammelt von allen Komponenten des ZETA Guard Metriken, Traces und Logdaten und bereitet diese für den Versand an das Monitoring des TI 2.0 Dienst-Anbieters und an den gematik Telemetriedaten Empfänger in anonymisierter Form auf.
  • SIEM Daten Lieferung: Der Telemetriedaten Service sammelt vom Monitoring des TI 2.0 Dienst-Anbieters SIEM Daten und leitet sie an das SIEM der gematik weiter.
  • Notification Service: Der ZETA Guard implementiert eine API um Notification-Konfigurationen für Nutzer und ihre Clients zu speichern und um Notification-Events vom Resource Server entgegenzunehmen und an die Clientsystem Notification Services weiterzuleiten.
  • Protected Resource Metadata: Über den HTTP Proxy können Clients das OAuth 2.0 Protected Resource Metadata Well-known JSON-Dokument ([RFC9728]) abfragen, um die notwendigen Informationen für die Interaktion mit diesem Resource Server zu erhalten.

6 Beispiele und Referenzimplementierungen

Die gematik stellt API-Spezifikationen und Proof-of-Concept-Implementierungen im Internet zur freien Verfügung.

Das Projekt https://dsr.gematik.solutions demonstriert eine Attestation mobiler Anwendungen auf gängigen mobilen Betriebsystemplattformen.

Im GitHub-Projekt [gemAPI_ZETA] werden die Schnittstellenspezifikationen der hier spezifizierten Zero Trust-Komponenten veröffentlicht.

7 Anhang A – Verzeichnisse

7.1 Abkürzungen

Tabelle 24: Im Dokument verwendete Abkürzungen

Kürzel Erläuterung
API Application Programming Interface
CD Continuous Delivery
CN Common Name
CTS Compatibility Test Suite
DSR Device Security Rating
eGK elektronische Gesundheitskarte
ePA elektronische Patientenakte
FBE File Based Encryption
FDE Full Disk Encryption
FIPS Federal Information Processing Standards
GesundheitsID Digitale Identität
HSM Hardware Security Module
IDP Identity Provider
IDS Intrusion Detection System
ISMS Informationssicherheitsmanagementsystem
JWT JSON Web Token
k8s Kubernetes
mTLS Mutual Transport Layer Security
OCSP Online Certificate Status Protocol
OIDC OpenID Connect, https://de.wikipedia.org/wiki/OpenID_Connect 
OTLP Open Telemetry Protocol
PAP Policy Administration Point
PAR Pushed Authorization Request
PDP Policy Decision Point
PEP Policy Enforcement Point
PIP Policy Information Point
PU Produktivumgebung
SAN Subject Alternative Name
SIEM Security Information and Event Management
SMC-B Security Module Card Typ B, (Institutionskarte, Praxiskarte)
SPIFFE Secure Production Identity Framework for Everyone
SPIRE SPIFFE Runtime Environment
TI Telematikinfrastruktur
TI-ITSM IT-Service-Management der TI
TPM Trusted Platform Module
VAU Vertrauenswürdige Ausführungsumgebung
ZETA Zero Trust Access

7.2 Glossar

Tabelle 25: Glossar der explizit im Dokument verwendeten Begriffe

Begriff Erläuterung
Authorization Server Ein Server, der Zugriffstoken ausgibt, nachdem er die Identität eines Nutzers authentifiziert und die Berechtigungen überprüft hat. In OAuth 2.0-basierten Systemen ist der Authorization Server eine zentrale Komponente zur Verwaltung von Zugriffsrechten.
Google Remote Procedure Call (gRPC) Framework für die Kommunikation zwischen verteilten Systemen. Die Daten werden in einem effizienten binären Datenformat (Protocol Buffers alias Protobuf) serialisiert und per HTTP/2 übertragen. Es ermöglicht Anwendungen, welche direkt auf Funktionen anderer Anwendungen zuzugreifen, als wären diese lokal verfügbar, unabhängig von der zugrunde liegenden Plattform oder Programmiersprache.
Demonstrating Proof of Possession (DPoP) Ein DPoP Token ist ein Sicherheitsmechanismus im OAuth 2.0-Protokoll, der den Besitz eines kryptografischen Schlüssels nachweist. Es stellt sicher, dass der Client, der ein Access Token verwendet, auch den zugehörigen privaten Schlüssel besitzt, um Missbrauch durch Dritte zu verhindern. 
Identity and Access Management (IAM) Prozesse und Technologien zur Verwaltung digitaler Identitäten und deren Zugriff auf Unternehmensressourcen.
Management Service Ein Dienst zur Verwaltung und Orchestrierung von ZETA Guard-Ressourcen, insbesondere in containerisierten Umgebungen wie Kubernetes. Er ermöglicht die Verwaltung von Services, Pods und anderen Ressourcen innerhalb Kubernetes, um die Verfügbarkeit, Skalierbarkeit und Sicherheit der Anwendungen zu gewährleisten.
Open Policy Agent (OPA) Eine Open Source Policy Engine, die es ermöglicht, Richtlinien als Code zu definieren und durchzusetzen, um Entscheidungslogik zentralisiert und flexibel in verschiedensten Software-Systemen und Anwendungen zu implementieren.
Policy Administration Point (PAP) Eine Komponente, die Sicherheitsrichtlinien erstellt, verwaltet und verteilt. Der PAP definiert und verwaltet die Richtlinien, die von der PDP Policy Engine bei der Entscheidungsfindung verwendet werden.
Policy Decision Point (PDP) Der PDP trifft die Entscheidung, ob ein Access Token ausgestellt werden darf, basierend auf den definierten Richtlinien und Informationen über den Anfragenden und den Client.
Policy Enforcement Point (PEP) Ein Punkt in einem Netzwerk, an dem Sicherheitsrichtlinien durchgesetzt werden. Der PEP überwacht und kontrolliert den Zugriff auf Ressourcen basierend auf den Entscheidungen, die vm Policy Decision Point (PDP) getroffen werden.
Policy Information Point (PIP) Eine Quelle von Attributen oder Kontextinformationen, die für die Entscheidungsfindung des Policy Decision Point (PDP) erforderlich sind. Der PIP stellt die notwendigen Daten zur Verfügung, um Zugriffsanfragen entsprechend den festgelegten Richtlinien zu bewerten.
Security Information and Event Management (SIEM) Technologien und Prozesse zur Sammlung, Analyse und Korrelation von Sicherheitsdaten aus verschiedenen Quellen, um Sicherheitsvorfälle zu erkennen und darauf zu reagieren.
Telemetriedaten Telemetriedaten sind Daten, die von entfernten oder verteilten Systemen, Geräten oder Anwendungen gesammelt und an ein zentrales System zur Überwachung, Analyse und Verwaltung übertragen werden. Im Kontext der IT spielen Telemetriedaten eine entscheidende Rolle bei der Überwachung und Sicherung von Netzwerken und Systemen.
Merkmale und Arten von Telemetriedaten:
- System- und Leistungsmetriken: Informationen über die Leistung und den Zustand von Hardware und Software, wie CPU-Auslastung, Speichernutzung, Netzwerkbandbreite und Festplattenkapazität.
- Nutzeraktivitätsdaten: Protokolle und Aufzeichnungen über Nutzeraktionen und -verhalten, einschließlich Anmeldungen, Dateizugriffe, Anwendungsnutzung und andere Interaktionen.
- Sicherheitsereignisse: Daten über sicherheitsrelevante Vorfälle, wie fehlgeschlagene Anmeldeversuche, erkannte Malware, unerlaubte Zugriffsversuche und andere sicherheitsbezogene Anomalien.
- Netzwerkverkehrsdaten: Informationen über den Datenfluss im Netzwerk, einschließlich IP-Adressen, Ports, Protokolle, Datenmengen und Verbindungen zwischen verschiedenen Systemen und Diensten.
- Konfigurationsdaten: Details zu den aktuellen Einstellungen und Konfigurationen von Systemen und Anwendungen, einschließlich Softwareversionen, installierte Patches und Sicherheitsrichtlinien.
Telemetriedaten-Service Ein Dienst, der Telemetriedaten sammelt, verarbeitet und analysiert. Telemetriedaten umfassen Informationen über die Nutzung, Leistung und Zustände von Systemen und Anwendungen. Der Dienst hilft dabei, Einblicke in das Verhalten und die Gesundheit der Infrastruktur zu gewinnen, um proaktive Maßnahmen zur Optimierung und Sicherheit zu ergreifen.
Zero Trust (ZT) Ein Sicherheitskonzept, das davon ausgeht, dass keine Entität (intern oder extern) automatisch vertraut wird. Alle Zugriffsanfragen werden überprüft, unabhängig von ihrem Ursprung.
Zero Trust/Additional Security Layer
(ZETA/ASL)
Eine auf HTTP basierende zusätzliche Verschlüsselung der Daten zwischen ZETA Client und ZETA Guard PEP. Die verschlüsselte Verbindung wird auch ZETA/ASL-Kanal genannt.

7.3 Abbildungsverzeichnis

7.4 Tabellenverzeichnis

7.5 Referenzierte Dokumente

7.5.1 Dokumente der gematik

Die nachfolgende Tabelle enthält die Bezeichnung der in dem vorliegenden Dokument referenzierten Dokumente der gematik zur Telematikinfrastruktur.

Tabelle 26: Referenzierte Dokumente der gematik

[Quelle]
Herausgeber: Titel
[access-token.yaml] Schema access-token.yaml
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/schemas/access-token.yaml 
[API-ZETA-Attestation-Service] API des ZETA Attestation Service
https://github.com/gematik/ZETA/blob/main/docs/api/v1/index.md#zeta-attestation-service-endpunkte 
[as-well-known.yaml] Schema für das OAuth Authorization Server Well-known JSON Dokument
https://raw.githubusercontent.com/gematik/zeta/main/src/schemas/as-well-known.yaml 
[client-data.yaml] Schema client-data.yaml
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/schemas/client-data.yaml 

[client-statement.yaml] Schema client-statement.yaml
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/schemas/client-statement.yaml 
[gemAPI_ZETA] gematik: OpenAPI Schnittstellen- und Schemaspezifikation ZETA
https://github.com/gematik/zeta 
[gemGlossar]
gematik: Glossar der Telematikinfrastruktur
[gemF_PushNotification] gematik: Feature: Anwendungsübergreifende Push Notification
https://gemspec.gematik.de/docs/gemF/gemF_PushNotification/latest/ 
[gemKPT_Betr] gematik: Betriebskonzept Online-Produktivbetrieb
https://gemspec.gematik.de/docs/gemKPT/gemKPT_Betr/latest/
[gemSpec_DS_Hersteller] gematik: Spezifikation Datenschutz- u. Sicherheitsanforderungen der TI an Hersteller
https://gemspec.gematik.de/docs/gemSpec/gemSpec_DS_Hersteller/latest/
[gemSpec_IDP_Sek]
gematik: Spezifikation Sektoraler Identity Provider
https://gemspec.gematik.de/docs/gemSpec/gemSpec_IDP_Sek/latest/ 
[gemSpec_Krypt] gematik: Übergreifende Spezifikation Verwendung kryptographischer Algorithmen in der
Telematikinfrastruktur
https://gemspec.gematik.de/docs/gemSpec/gemSpec_Krypt/latest/ 
[gemSpec_OM] gematik: Übergreifende Spezifikation Operations und Maintenance
https://gemspec.gematik.de/docs/gemSpec/gemSpec_OM/latest/
[gemSpec_Perf] gematik: Übergreifende Spezifikation Performance und Mengengerüst TI-Plattform
https://gemspec.gematik.de/docs/gemSpec/gemSpec_Perf/latest/
[GitHub ZETA Schemas] Schemas für zusätzliche HTTP-Header
https://github.com/gematik/zeta/tree/main/src/schemas 
[hsm-proxy.proto] Protobuf Spezifikation der HSM Proxy Schnittstelle für Komponenten
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/gRPC/hsm-proxy.proto 
[ISMS] Spezifikation Datenschutz- und Sicherheitsanforderungen der TI an Anbieter (Abschnitt 3.3)
https://gemspec.gematik.de/docs/gemSpec/gemSpec_DS_Anbieter/latest/#3.3
[JOSE] JSON Object Signing and Encryption (JOSE)
https://www.iana.org/assignments/jose/jose.xhtml 
[opr-well-known.yaml] Schema für das OAuth Protected Resource Metadata Well-known JSON Dokument
https://raw.githubusercontent.com/gematik/zeta/main/src/schemas/opr-well-known.yaml 
[pdp-decision.yaml] Schema pdp-decision.yaml 
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/schemas/pdp-decision.yaml 
[TrustedTPM_RootCA] Liste der vertrauenswürdigen TPM Stamm- und SubCA-Zertifikate
https://learn.microsoft.com/de-at/windows-server/security/guarded-fabric-shielded-vm/guarded-fabric-install-trusted-tpm-root-certificates 
[zeta-user-info.yaml] Schema zeta-user-info.yaml 
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/schemas/zeta-user-info.yaml 

[zeta-error.yaml] Schema zeta-error.yaml
https://raw.githubusercontent.com/gematik/zeta/main/src/schemas/zeta-error.yaml 

7.5.2 Weitere Referenzen

Tabelle 27: Weitere Referenzen

[Quelle]
Herausgeber (Erscheinungsdatum) Titel
[Android Platform Security Model] The Android Platform Security Model (2023)
https://research.google/pubs/the-android-platform-security-model/ (Abruf 01/2025)
[Apple Platform Security Guide] Einführung in die Sicherheit der Apple-Plattformen
https://support.apple.com/de-de/guide/security/seccd5016d31/web (Abruf 01/2025)
[BSI-Grundschutz] IT-Grundschutz - Informationssicherheit mit System
https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html (Abruf 01/2025)
[CAB-Forum] Certification Authority Browser Forum (CA/Browser Forum)
https://cabforum.org/ (Abruf 01/2025)
[CAPEC OWASP] CAPEC: OWASP Related Patterns
CAPEC - CAPEC-659: OWASP Related Patterns (Version 3.9) (mitre.org) (Abruf 01/2025)
[ExpBack] Exponential Backoff
https://en.wikipedia.org/wiki/Exponential_backoff (Abruf 01/2025)
[NIST_SP1800-35_FIG1] National Institute of Standards and Technology (NIST) NIST SP 1800-35 Publication (Figure 1 - General ZTA Reference Architecture)
https://pages.nist.gov/zero-trust-architecture/VolumeB/architecture.html (Abruf 01/2025)
[OPA Bundle] Open Policy Agent, Bundles
https://www.openpolicyagent.org/docs/latest/management-bundles/ (Abruf 01/2025)
[Open Policy Agent] Open Policy Agent
https://www.openpolicyagent.org/docs/latest/ (Abruf 01/2025)
[OWASP-Top-10-Risiken] OWASP Top 10
https://owasp.org/www-project-top-ten/ (Abruf 01/2025)
 [OWASP-Top-Ten-Kubernetes] OWASP Kubernetes Top 10
https://owasp.org/www-project-kubernetes-top-ten/ (Abruf 04/2026)
[RFC2119] Key words for use in RFCs to Indicate Requirement Levels
https://datatracker.ietf.org/doc/html/rfc2119 (Abruf 01/2025)
[RFC2986] PKCS #10: Certification Request Syntax Specification
https://datatracker.ietf.org/doc/html/rfc2986 (Abruf 01/2025)
[RFC6066] Transport Layer Security (TLS) Extensions: Extension Definitions
https://datatracker.ietf.org/doc/html/rfc6066 (Abruf 01/2025)
[RFC6749] The OAuth 2.0 Authorization Framework
https://datatracker.ietf.org/doc/html/rfc6749 (Abruf 01/2025)
[RFC7231] Hypertext Transfer Protocol (HTTP/1.1) Semantics and Content
https://datatracker.ietf.org/doc/html/rfc7231 (Abruf 01/2025)
[RFC7232] Hypertext Transfer Protocol (HTTP/1.1) Conditional Requests
https://datatracker.ietf.org/doc/html/rfc7232 (Abruf 01/2025)
[RFC7521] Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants
https://datatracker.ietf.org/doc/html/rfc7521 (Abruf 01/2025)
[RFC7523] JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants
https://datatracker.ietf.org/doc/html/rfc7523 (Abruf 01/2025)
[RFC7636] Proof Key for Code Exchange by OAuth Public Clients
https://datatracker.ietf.org/doc/html/rfc7636 (Abruf 01/2025)
[RFC8555] Automatic Certificate Management Environment (ACME)https://datatracker.ietf.org/doc/html/rfc8555#section-6.5.1 (Abruf 01/2025)
[RFC8705] OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Token
https://datatracker.ietf.org/doc/html/rfc8705 (Abruf 01/2025)
[RFC9334] Remote ATtestation procedureS (RATS) Architecture
https://www.rfc-editor.org/rfc/rfc9334.html 
[RFC9449] OAuth 2.0 Demonstrating Proof of Possession (DPoP)
https://datatracker.ietf.org/doc/html/rfc9449 (Abruf 01/2025)
[RFC9727] api-catalog: A Well-Known URI and Link Relation to Help Discovery of APIs
https://www.rfc-editor.org/rfc/rfc9727.html
[RFC9728] OAuth 2.0 Protected Resource Metadata
https://www.rfc-editor.org/rfc/rfc9728.html 
[session.yaml] Schema session.yaml
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/schemas/session.yaml   (Abruf 06/2025)
[Shared Signals] OpenID Shared Signals and Events Framework
https://openid.net/specs/openid-sse-framework-1_0.html (Abruf 01/2025)
[SPIFFE und SPIRE] Universal identity control plane for distributed systems
https://spiffe.io/ (Abruf 01/2025)
[TR-03107-1] BSI TR-03107 Elektronische Identitäten und Vertrauensdienste im E-Government
https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03107/TR-03107-1.pdf (Abruf 01/2025)
[TR-03161] BSI TR-03161 Anforderungen an Anwendungen im Gesundheitswesen
https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/Technische-Richtlinien/TR-nach-Thema-sortiert/tr03161/tr-03161.html (Abruf 01/2025)
[TR-03161-1] Technische Richtlinie TR-03161: Anforderungen an Anwendungen im Gesundheitswesen
Teil 1: Mobile Anwendungen; Version 3.0
https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03161/BSI-TR-03161-1.pdf?__blob=publicationFile&v=13 (Abruf 01/2025)
[VerifiedBoot] Verifizierter Start
https://source.android.com/docs/security/features/verifiedboot?hl=de (Abruf 01/2025)