Ihre Meinung macht den Unterschied
Jetzt Feedback zum gematik Fachportal geben!

Unterstützen Sie uns dabei, das gematik Fachportal weiter zu verbessern.
Was funktioniert gut? Wo sehen Sie Optimierungsbedarf? Nehmen Sie sich einen Moment Zeit und bringen Sie Ihre Perspektive ein.

Hier geht es zur Umfrage

gemSpec_ZETA_V1.3.0_CC


Telematikinfrastruktur 2.0





Spezifikation

Zero Trust Access (ZETA)


Version1.3.0_CC
Revision1545390
Stand16.03.2026
Statuszur Abstimmung freigegeben
Klassifizierungöffentlich_Entwurf
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_CC 16.03.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 Benutzer 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 Benutzer 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 Clientregistrierung

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. Um Clients wiedererkennbar zu machen, muss eine Registrierung dieser erfolgen. Sind in der Registrierung zusätzliche Sicherheitsmerkmale über das 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 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 Anomalieerkennung 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 Client Authorization

Menschen benutzen Clients (Kombination aus Gerät und App). Jeder Zugriff auf Daten oder Schnittstellen wird auf eine menschliche Interaktion (Authentisierung) zurückgeführt. Nach Stand der Technik erfolgt die sichere Authentifizierung meist über 2 Faktoren. Zur Wiedererkennung und sicheren Identifikation werden Menschen und Clients Authentifizierungsmerkmale ausgestellt. Die sichere Identifikation und Authentifizierung ist eine wichtige Eingangsgröße für Zugriffsentscheidungen (s. o.).

Für die Dienst zu Dienst Kommunikation ist es ebenso erforderlich den anfragenden Dienst zu identifizieren, um eine Zugriffsentscheidung treffen zu können.

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 TI2.0 Fachanwendung dargestellt. Die Zero Trust Ausprägung der Telematikinfrastruktur wird Zero Trust Access (ZETA) genannt.

In diesem Pattern greift ein Nutzer über ein Clientsystem inkl. ZETA Client auf Daten eines TI 2.0 Dienstes zu. 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 TI2.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, Provisioning Images und PIP/PAP 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.

(3) Die Policy Engine erhält die Policies und Daten aus dem lokalen Artifact Registry Cache. Ebenso bezieht der Kubernetes Cluster seine Deployment-Images aus dem lokalen Cache (28) sowie die Provisioning Daten für ZETA Guard (TSL, roots.json, TPM-Hersteller Stammzertifikate, Federation Master URL).

(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 Tokens und des DPoP Tokens (wenn vorhanden auch des PoPP Tokens) 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 Benutzer 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.

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 Benutzer 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 Benutzeranfragen auf geschützte Ressourcen. Zudem überwacht der Authorization Server die Benutzersessions, 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 Benutzern sicher und vertrauenswürdig beziehen und bei Bedarf eine (erneute) Nutzerauthentifizierung an die IDPs delegieren. Der Authorization Server stellt sicher, dass nur authentifizierte Benutzer 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 Benutzeridentitä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 Tokens, 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 Benutzeridentitä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 Benutzers 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 Clientregistrierungen

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 Benutzerrollen, 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 Benutzerrollen, 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.12 Policies und Daten) beziehen sich daher auf den Policies und Daten CI/CD-Prozess zur Entwicklung und Bereitstellung der Policies und Daten.

4.6 Clientregistrierung

Alle Clients, die mit Diensten der TI2.0 kommunizieren, sind zur Laufzeit bekannt. Mit einer Attestierung in Abhängigkeit der verfügbaren Mechanismen der Laufzeitumgebung (Client-Features, Betriebssystem) kann ein Vertrauen und eine Wiedererkennung von Clients aufgebaut werden.

Hersteller von Clients, die mit ZETA Guard geschützten Diensten kommunizieren, müssen ihre Clients bei der gematik registrieren. Nicht registrierte Clients erhalten keinen Zugriff.

Die folgenden statischen Client-Eigenschaften werden im Rahmen der dynamischen Clientregistrierung am ZETA Guard erfasst und werden einem konkreten Benutzer zugeordnet.

Tabelle 1: Statische Eigenschaften Clientsysteme auf Hersteller-/Anbieterebene

Client Eigenschaft Beschreibung
Produkt-Id Eindeutige ID der Client-Software, vergeben durch gematik
Produkt-Name Produkt-Name, vergeben durch den Hersteller
Hersteller-Id Kennung des Herstellers aus TI-ITSM
Hersteller-Name Name des Herstellers aus TI-ITSM
Produkt-Plattform Zunächst werden zwei Plattformen gesondert behandelt: Android und Apple (iOS, macOS etc.). Diese beiden Plattformen bieten Mechanismen für die Attestation der Client-Instanzen und der Umgebung, in welcher diese Clients ausgeführt werden.

Alle andere Clients werden zunächst als generische Software-Produkte eingestuft.
Produkt-Plattform-Id Plattformspezifisch eindeutige Kennung der Client-Software

Android: Package-Name und Signer-Zertifikat Fingerprint
Apple: Bundle-ID und Apple-ID
Software: Registriert durch gematik , analog zu ClientIds in E-Rezept
Attestation-Methode
Die Methode, nach welcher die Client-Software und die Ablaufumgebung attestiert werden kann.

Zunächst werden Android und Apple (iOS) unterstützt, weil diese Plattformen entsprechende Mechanismen zur Remote-Attestation anbieten. 

Windows und Linux verwenden zur Attestation der Clients TPM 2.0. Apple (MacOS) verwendet die Secure Enclave.

Der Nutzer muss sich mit einer TI-Identität authentifizieren, z. B. GesundheitsID oder SM(C)-B. Bei der Client-Registrierung werden die statischen Eigenschaften eines Clientsystems für jede Client-Instanz mit einem vom Client-Nutzer signierten Softwarestatement bekannt gemacht. Der Client erzeugt dabei eine kryptographische Identität (Client Instance Key-Pair), die Server-seitig an den Nutzer und Client gebunden wird und die für die Client-Authentifizierung am Authorization Server verwendet wird (Client Assertion JWT).

Zur Laufzeit werden die Client-Eigenschaften durch Client-Instanz-Eigenschaften ergänzt. Sie sind spezifisch für eine konkrete Installation auf einem bestimmten Client eines Benutzers. Sie sind insofern dynamisch, als dass sich der Patchlevel des Betriebssystems oder die Version der Client-Instanz durch Updates verändern kann.

Tabelle 2: Eigenschaften Clientsysteme auf Instanzebene (pro Installation)

Client-Instanz-Eigenschaften Beschreibung
Produkt-Version Aktuelle Version der Client-Software
Client-Nutzer (Owner) Informationen über den Client-Nutzer (aus dem gID id_token oder aus dem SM(C)-B Zertifikat)
Client-Eigenschaften (Posture) Aktuelle Eigenschaften der Ablaufumgebung des Clients, insbesondere:
  • Betriebssystem
  • Betriebssystem-Version
Client-Attestation Falls die Plattform die Attestation des Clients ermöglicht, wird hier die plattformspezifische Attestation angegeben. 
  • Google-Android: Key and ID Attestation
  • Apple: DCAppAttest
  • Windows und Linux: TPM Attestation
  • Software: vom Client selbst erstellte Attestation (keine Sicherheitsfunktion; dient nur betrieblichen Zwecken)

Hinweis: Für andere mobile Betriebssysteme wird die Attestation unterstützt, wenn sie verfügbar ist.

Die Auskünfte bzw. Attestation von Clientsoftware und Geräten werden vom ZETA Guard Authorization Server geprüft. Zusätzlich wird bei mobilen Clients eine Offband-Verifikation des Benutzers mit Bestätigungscode via E-Mail durchgeführt.

Die Clientattribute werden von den Plattformen der Endgeräte geliefert. Ihre Erhebung erfolgt im ZETA-Client des Endgeräts mittels plattformspezifischer Attestierungs- und Erhebungsmechanismen (siehe [Apple Platform Security Guide] und [Android Platform Security Model]). Die Attribute sind für die jeweilige Plattform und ihr Sicherheitsmodell spezifisch. Die für die Zugriffsentscheidung verwendeten Attribute werden daher im Folgenden für iOS-Geräte, Android-Geräte sowie Windows- und Linux-Geräte separat aufgeführt.

Android

Tabelle 3: Verwendete Claims für Android-Clients

Attribut Beschreibung
aktuelle Android Version aktuell auf dem Gerät laufende Android Version bzw. API Level / SDK Version
Android Version bei Veröffentlichung Android Version (API level) mit welchem das Gerät veröffentlicht / CTS durchlief
Patchlevel verschiedene Patch-Level-Angaben für OS & Co
FDE / FBE Gibt an, ob Geräteverschlüsselung unterstützt wird und ob diese aktiviert ist.
System PIN / Password /Pattern gesetzt
Gibt an, ob ein PIN/Pattern/Passwort für den Sperrbildschirm gesetzt ist.
System PIN / Password /Pattern Qualität Über den Device Policy Manager kann abgefragt werden, ob aktuell bestimmte Passwort-Komplexitätslevel erfüllt werden.
VerifiedBoot verfügbar Gibt an, ob VerifiedBoot auf dem Gerät zur Verfügung steht (siehe [VerifiedBoot]).
Mainline Patchlevel Gibt an, wann der letzte Mainline Patch installiert wurde.
Gerätehersteller / -modell Gibt Informationen zu Hersteller, Model usw. zurück.
Biometric Class Gibt Informationen zur Güte der vorhandenen biometrischen Sensoren zurück.

iOS

Tabelle 4: Verwendete Claims für iOS-Clients

Attribut
Beschreibung
System Name Name des Betriebssystems auf dem Gerät
System Version Version des Betriebssystems auf dem Gerät
utsname.machine Art und Version des Geräts, z. B. ”iPhone 15”
identifierForVendor eindeutige Kennung des Geräts für den App-Anbieter
App Version Version der App auf dem Gerät

Windows und Linux

Tabelle 5 Verwendete Claims für Windows und Linux Clients

Attribut Beschreibung
System Name Name des Betriebssystems auf dem Gerät
System Version Version des Betriebssystems auf dem Gerät
Platform Windows oder Linux
Platform Produkt-ID ID im Windows Store oder Packaging Typ Applikations-ID bei Linux
Architektur Prozessor-Architektur
Hersteller Name Hersteller Name des Geräts
Hersteller ID Hersteller ID des Geräts

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. SIEM-Systeme können auf die von der ZETA Artifact Registry bereitgestellten PIP und PAP Sicherheitsrichtlinien zugreifen und sicherstellen, dass die Überwachung entsprechend den aktuellen Richtlinien erfolgt. Anbieter von Betriebsleistungen mittels Produkttypen der TI1.0 erhalten durch eine Anbieterzulassung die Auflage, Anforderungen an ein [ISMS] zu erfüllen. Hierfür können sie bspw. SIEM-Systeme oder Intrusion Detection Systeme (IDS) verwenden. In der Weiterentwicklung zur TI 2.0 wird dieses Konzept fortgeführt, und finden die so gesammelten Informationen über den Sicherheitszustand eines Systems wieder Eingang in Zugriffsentscheidungen eines Policy Decision Points.

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 Benutzer 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 "besser geschützte Ressource" auf dem Resource Server zuzugreifen.
  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. [<=]

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 TI2.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 TI2.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 TI2.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 TI2.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. [<=]

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. [<=]

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-Tokens

ZETA Guard MUSS für Stufe 1 die anfragende IP-Adresse des Clients im Access-Token bei der Ausstellung des Access-Tokens 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.AS.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:

  • AS: 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

Zweck:

  • TLS: Verschlüsselung des externen Traffics
  • mTLS: Interne Service-to-Service Authentifizierung
  • ASL: Application Security Layer
  • Sig: Signatur (Token, Policies, Entity Statements)
  • Enc: Payload-/Daten-Verschlüsselung (JWE, DB At-Rest)
  • Att: Attestierung
  • DPoP: Signatur (DPoP Token), zum Schutz vor Token Diebstahl

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.

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 6: Tab-ZETA-Guard-Keys

Schlüssel-ID Bezeichnung & Zweck Speicherung / Betrieb OHNE VAU Speicherung / Betrieb MIT VAU (Schutzbedarf "sehr hoch")
PrK.AS.Sig
PuK.AS.Sig
AS Token-Signaturschlüssel
Zur Signatur von Access- und Refresh-Tokens sowie des Entity Statements. Der PuK wird im JWKS bereitgestellt.
PrK: Sicherer Software-Keystore des AS. PrK: Muss durch HSM geschützt sein. (Darf in den AS geladen werden, wenn z.B. mittels KEK aus dem HSM gesichert).
PrK.AS.TLS
C.AS.TLS
AS Internet-Identität (TLS)
Terminierung der externen TLS-Verbindung am Authorization Server.
Sicherer Software-Keystore. PrK: Verbleibt zwingend im HSM (via HSM-Proxy).
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 AS 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.
Sicherer Software-Keystore. PrK: Verbleibt zwingend im HSM.
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).
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 ID-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: AS als IDP des ZETA Guard mit PrK.AS.Sig und PuK.AS.Sig
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).
Sicherer Software-Keystore. Verbleibt zwingend im HSM.
PrK.K8s.mTLS
C.K8s.mTLS
Interne Mesh-Identitäten
Zur Absicherung der microservice-internen Kommunikation (z. B. AS <-> 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 AS 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 AS-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 AS-Schlüssel (PrK.AS.Sig, PrK.AS.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 7: 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 Tokens (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.Client.Att
C.Client.Att
Plattform Attestation Key
Zur Signatur des Platform-Zustands (z.B. TPM Endorsement Key, Apple AppAttest).
PrK: Hardware-gebunden (TPM / Secure Enclave).
C: Wird an den AS zur Prüfung der Systemintegrität gesendet (inkl. Zertifikatskette zur Validierung gegen Root-CA des Herstellers).
PrK.Client.SMCB
C.Client.SMCB
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 AS 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 8: Tab-Gematik-Keys

Schlüssel-ID Bezeichnung & Zweck Speicherung / Verteilung
C.TI.RootCA(PrK.TI.RootCA) 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.
C.TI.TSLSig
(PrK.TI.TSLSig)
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.
C.TI.KompCA
(PrK.TI.KompCA)
Komponenten PKI CA
Sub-CA der Root CA. Stellt die Zertifikate für die TI-Dienste (PEP, AS) aus.
C: Über die TSL als vertrauenswürdig verteilt.
C.TI.SMCB_CA
(PrK.TI.SMCB_CA)
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).
PuK.TI.FedMaster
(PrK.TI.FedMaster)
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 AS zu prüfen.
PrK: Bei der gematik.
C.TI.ImgSig.Exec
(PrK.TI.ImgSig.Exec)
Signaturzertifikat Ausführbare Images
Signatur der ausführbaren ZETA OCI Container (PEP, AS, OPA, etc.).
C: Im Admission Controller validiert (Signaturkette bis zur Root CA).
PrK: In gematik CI/CD-Pipeline.
C.TI.ImgSig.Data
(PrK.TI.ImgSig.Data)
Signaturzertifikat Daten-Images
Signatur von Datencontainern (z.B. IP-Sperrlisten, Provisioning-Daten).
C: Im Admission Controller / durch ZETA Guard validiert.
PrK: In gematik CI/CD-Pipeline.
C.TI.OPASig.Autor
(PrK.TI.OPASig.Autor)
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.
C.TI.OPASig.Frei
(PrK.TI.OPASig.Frei)
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 ID-Tokens 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 TI2.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 Clientregistrierung 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 Benutzeranmeldeaktivitäten analysiert und mit geografischen Standorten korreliert. Dabei werden Fälle markiert, in denen auf das Benutzerkonto 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 9: 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 10: 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 - Telemetriedaten Angriffserkennung

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

Tabelle 11: 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
[<=]

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-Deinsten 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. [<=]

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

A_28750 - 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 12 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.  [<=]

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 TI2.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 TI2.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_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 Benutzers 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 Benutzer 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 Benutzer über Maßnahmen zum sicheren Betrieb seines Clientsystems vor der Inbetriebnahme informieren und während des Betriebs stets zum Abruf durch den Benutzer bereithalten. [<=]

A_25336 - Hersteller Clientsystem - Regelmäßige Updates

Der Hersteller eines Clientsystems MUSS, solange das Produkt nicht abgekündigt ist, dem Benutzer 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. [<=]

A_25427 - Hersteller Clientsystem Android - Google Cloud Projekt

Der Hersteller eines Clientsystems für eine Android-basierte Betriebsumgebung MUSS ein Google Cloud Projekt führen oder eine gleichwertige alternative Plattformattestierung verwenden, um Nachweise über die Clientintegrität einer jeden Clientsysteminstallation beziehen zu können. [<=]

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 Clientregistrierung

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 - ZETA Client - Ablauf Clientregistrierung

Der mobile ZETA Client MUSS, sofern er an Schnittstellen der Telematikinfrastruktur wegen einer ungültigen/fehlenden Client-Registrierung abgewiesen wird, eine Registrierung am Authorization Server durchführen, in dem er

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

Hinweis: Für die Clientregistrierung 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 Benutzererfahrung festgelegt wird. [<=]

Hinweis: Das Client Instance Key Pair soll initial 5 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 - Clientregistrierung 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 - Clientregistrierung 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 Benutzer 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 Registrierung

Der mobile ZETA Client MUSS den Nutzer bei der Clientregistrierung 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 Clientregistrierungsdienst registrierten Clients darstellen und die Möglichkeit zur De-Registrierung einzelner Clients anbieten. [<=]

A_25734 - ZETA Client - Zugriffsprotokoll Clientregistrierung

Der ZETA Client MUSS dem Nutzer einen Einblick in das Zugriffsprotokoll der Schnittstellen des Clientregistrierungsdienstes 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 ID 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 - 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,
  • eine Anzeige der Warnungen aufgrund der Policy-Entscheidungen und
  • ein Replay-Nonce
umsetzen. [<=]

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, Clientregistrierung 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 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 Tokens 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-Tokens 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 12: 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.
Clientregistrierung 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 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.

5.9 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.Die Prüfung von DPoP Token erfolgt gemäß Vorgabe im RFC ([RFC9449]#name-checking-dpop-proofs ).
[<=]

A_26668-01 - 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 Response Header-Informationen 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:

  • 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)

[<=]

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,
  • die PIP und PAP OCI Container Images alle 60 Sekunden aktualisiert werden,
  • das ZETA Guard Provisioning Container Image mindestens alle 60 Minuten aktualisiert wird.
[<=]

Hinweis: Die Verfügbarkeit von ZETA Guard soll durch die lokale Bereitstellung der Artifact Registry erhöht werden.

5.9.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.9.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.9.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
  • Admission Controller
  • Service Mesh
[<=]

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äß Produkttypsteckbrief nachgewiesen werden. 

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 TI2.0 Dienstes in die Lage versetzt seinen eigenen externen Ingress zu verwenden.

A_28433 - ZETA Guard, Bereitstellung externer Ingress

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

5.9.1.3 Hilfskomponenten und Funktionen

Diese Komponenten und Funktionen stellen zusätzliche Funktionen zur Verbesserung der Sicherheit und zur Vereinfachung des Betriebs bereit. Sie können durch eigene Lösungen umgesetzt werden. ZETA Guard enthält fertige Images oder unterstützende Konfigurationen (z. B. Policies für einen Admission Controller) bereit.

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: Für die Komponenten Admission Controller und Service Mesh gelten Anforderungen, die im Produkttypsteckbrief aufgeführt sind.

Hinweis: Der Notification Service ist eine Hilfskomponente, die nur für mobile Clients benötigt wird. Wenn er eingesetzt wird, dann wird das gematik OCI Container Image verwendet. Eine eigene Lösung kann durch den Anbieter nicht verwendet werden.

5.9.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 /openid/v1/jwks) öffentlich erreichbar bereitstellt,
  • 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.

5.9.3 Deployment Szenarien

5.9.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 - 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 Bedingungen erfüllen:

  • Die PDP DB MUSS vom Anbieter des TI 2.0 Dienstes über alle Cluster synchronisiert bereitgestellt werden.
  • 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.9.4 Laufzeitüberwachung

Offener Punkt: ZETA Guard muss zur Laufzeit erkennen können,
  • ob die von der gematik signierten Images ausgeführt werden,
  • ob es ungewöhnliche Systemaufrufe oder Netzwerkkommunikation gibt und
  • ob die Kommunikation so wie vorgesehen durch die ZETA Guard Microservices läuft.
Die Ergebnisse der Laufzeitüberwachung werden an den Telemetriedaten-Empfänger der gematik gesendet und können an das Monitoring des TI 2-0 Dienst-Anbieters gesendet werden.
ZETA Guard soll durchsetzen, dass die Konfiguration des ZETA Guard aus einem Git Repository des Dienst-Anbieters ausgeführt wird. Dafür stellt ZETA Guard den optionalen Management Service Argo CD bereit. Der Dienst-Anbieter kann eine andere Lösung verwenden (z. B. Flex).
Die Anforderungen zur Laufzeitüberwachung und Durchsetzung der Konfiguration werden in einer folgenden Version von gemSpec_ZETA festgelegt.


5.10 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.10.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 Tokens 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 Tokens 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 Tokens 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 Tokens zu prüfen.
Der claim actorId des PoPP Token MUSS mit dem Attribut identifier 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 Tokens 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 - PEP HTTP Proxy - Umgang mit JWKS des Popp Servers

Die Komponente HTTP Proxy MUSS, falls nach Ablauf der Gültigkeitsdauer für heruntergeladene JWKS des Popp Servers, kein neues JWKS heruntergeladen werden kann,

  • das bestehende JWKS des Popp Servers für eine weitere Gültigkeitsdauer nutzen und
  • einen Fehler für das Monitoring-System des Anbieters generieren.
[<=]

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. Beim äußeren ASL Request werden das Access und DPoP Token vom PEP validiert. Beim inneren Request werden Access und DPoP Token vom PEP ebenfalls validiert für DPoP wird host und proto vom äußeren Request verwendet.

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 13: 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 Tokens gehören zu den Nutzer-Daten und werden gemäß Tabelle in den zeta-user-info Header übernommen.

Tabelle 14: 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 Tokens 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_28836 - PEP HTTP Proxy - TI Service Provider Metadata Well-known

Die Komponente HTTP Proxy MUSS ein TI Service Provider Metadata Well-known JSON Dokument wie folgt bereitstellen, damit Fach-Clients die notwendigen Informationen zur Mandantentrennung des Resource Servers finden können.
GET /.well-known/ti-service-provider-metadata
Host: <FQDN des Resource Server-Mandanten>

Das Well-known JSON Dokument MUSS mit dem Schema [ti-sp-well-known.yaml] validiert werden können.
[<=]

Hinweis: Das TI Service Provider Metadata Well-known JSON Dokument muss pro FQDN des Resource Server-Mandanten bereitgestellt werden. Am Endpunkt, der TLS in der Infrastruktur des Anbieters terminiert, kann die Weiterleitung auf den PEP HTTP Proxy zu einemm /.well-known/ti-service-provider-metadata Endpunkt zusammengefasst werden.

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.10.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.11 Policy Decision Point

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

  • Authorization Server
  • Policy Engine und
  • PDP Datenbank

zusammen.

5.11.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-02 - PDP - Sicherheitsmeldung bei Änderungen und Aktualisierung

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

5.11.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 Tokens 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 Tokens 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 15: 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 16: 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 17: 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:display_name commonName Vollständiger Name des Versicherten 
[<=]

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 - PDP Client-Registrierung mit Attestation

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

  • Android Key ID Attestation (für Google-Android Clients)
  • Apple DCAppAttest.
  • Client signiertes Client Assertion JWT (mit TPM Attestation oder Software Attestation für Windows und Linux Clients)
[<=]

A_25645 - PDP Authentifizierung mittels TI-Smartcard

Die Komponente Authorization Server MUSS die Authentifizierung per Token Exchange eines ID Tokens 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 an eine TI-Identität (KVNR oder TelematikID, festgestellt während der Authentifizierung) binden. [<=]

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_25653 - PDP Client-Registrierung - Umsetzung der Client Policy

Die Komponente Authorization Server MUSS die zulässigen Clients entsprechend der Konfiguration oder Policy (über PDP-Decision) ermitteln und nur diese gemäß der festgelegten Client Policy registrieren. Clients, die die geforderten Parameter der Client Policy nicht unterstützen bzw. nicht das geforderte Niveau erreichen, MÜSSEN abgelehnt werden. [<=]

A_25752 - PDP Client-Registrierung - Nutzer über Hintergrund zur Ablehnung der Clientregistrierung 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 Clientregistrierung 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.11.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. [<=]

A_25658-01 - PDP - Authentication über SmartCard SM(C)-B

Der PDP Authorization Server MUSS Nutzer per Token Exchange mit einem SM(C)-B signiertem Subject-Token authentifizieren können. [<=]

5.11.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.11.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.15.7 Betriebliche Schnittstellendefinition sind die Well-known und JWKS Endpunkte gelistet. 

5.11.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.11.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 (AS). 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.

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.11.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 AS: 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 AS (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 Tokens 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": "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 ID 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 AS: Der AS 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 Tokens 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.11.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": "<AS_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 AS: Der AS 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.11.2.5.3 Gemeinsame nachfolgende Schritte

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

5.11.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 ID-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 ID-Token gegen ein Access-Token austauschen. Er überprüft dabei die Gültigkeit des ID-Tokens, 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 ID 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.
  • ID-Token-Anforderung: Die Client Workload, oder eine andere Workload im externen Kubernetes Cluster, fordert zunächst ein ID-Token von seinem IDP an. Dieses ID-Token enthält Informationen über die Identität der Workload.
  • Token Exchange-Anfrage an ZETA Guard: Die externe Workload sendet das erhaltene ID-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 ID-Tokens und Autorisierungsprüfung durch OPA: Der ZETA Guard Authorization Server validiert die Signatur und die Standard-Claims des ID-Tokens. Anschließend fragt er die Policy Engine (OPA) an, um zu überprüfen, ob der Aussteller (issuer URI) des ID-Tokens 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-Tokens: 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-Tokens 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.11.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. [<=]

5.11.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.AS.Sig, PuK.AS.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.12 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.13 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_28782 - Performance - Telemetriedatenlieferung - Konfiguration Datenlieferung ZETA Guard

Das Produkt MUSS die Konfigurierbarkeit der Telemetriedatenlieferung des ZETA Guards an die gematik Telemetriedatencloud in einer ausgelagerten Konfiguration für folgende Parameter unterstützen:

Batch - BatchExportOptions

  • maxQueueSize (Default = 2048)
  • scheduledDelayMilliseconds (Default = 5000)
  • exporterTimeoutMilliseconds (Default = 30000)
  • maxExportBatchSize (Default = 512)
ExporterHelper - retry_on_failure
  • enabled (Default = true)
  • initial_interval (Default = 5s)
  • max_interval (Default = 1215s)
  • max_elapsed_time (Default = 1820s)
  • multiplier (Default = 3)
Sampler
  • otel_traces_sampler (Default always_off)
  • otel_traces_sampler_arg (Default 0)
Hinweis: Sampler Typ wird auf traceidratio gesetzt, um Sampling einzuschalten und die Ratio kann variabel einen Wert zwischen 0..1 einnehmen. Der Typ garantiert, dass der Sampling Trace vollständig ist und alle Spans für eine Auswahl enthalten sind.
[<=]

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 18: 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.14 HSM Proxy

Um die einheitliche Verwendung verschiedener HSMs für ZETA Guard Komponenten und andere Komponenten des TI 2.0 Dienstes zu ermöglichen, wird der HSM Proxy optional eingesetzt.

Der HSM Proxy stellt eine einheitliche API für die Interaktion mit Hardware Security Modules (HSM) bereit. Er ermöglicht es, kryptographische Operationen für ECC-Schlüssel durchzuführen. Dabei werden die Anwendungsfälle TLS-Offloading sowie JWT-Signatur und CBOR-Signatur unterstützt. Die Algorithmen sind auf die NIST-Standards (P-256, P-384, P-521) beschränkt.

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.14.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 TI2.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 - HSM-Proxy - Isolation HSM Proxy

Die VAU, die den HSM-Proxy hostet, MUSS ausschließlich die Funktionalität des HSM-Proxys beinhalten und darf keine weiteren Anwendungsfunktionen oder Dienste implementieren.  [<=]

A_28815 - HSM-Proxy - Dedizierte Hardware HSM Proxy

Die VAU, die den HSM‑Proxy hostet, MUSS auf einer dedizierten Hardware betrieben werden, auf der ausschliesslich die für VAU und HSM‑Proxy erforderlichen Komponenten laufen. [<=]

A_28818 - HSM-Proxy - Schutz gegen physische Manipulation des Betreibers

Der HSM-Proxy MUSS in einem verschlossenen Serverschrank betrieben werden, der ausschließlich von Personen geöffnet werden darf, die über ein spezifisches Wartungsticket für die dort installierten Komponenten verfügen. [<=]

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 TI2.0 Dienstes vertrauliche oder zur Profilbildung geeignete Daten zur Kenntnis gelangen. [<=]

A_28823 - HSM-Proxy - Keine medizinischen Informationen in Logging und Monitoring

Der HSM-Proxy 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). [<=]

5.15 Betrieb

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

5.15.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.15.2 Anforderungen an Hersteller eines TI2.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.15.3 Anforderungen an Anbieter eines TI2.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 TI2.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.15.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 Endbenutzer 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.15.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 TI2.0 Dienstes, die eine konkrete ZETA Guard Instanz einsetzen.

Dem Anbieter von TI2.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 - ZETA Guard-Komponenten - Abbildung von Produkt- und Konfigurationsversionen

Die Komponenten des ZETA Guard MUSS folgende Versionsangaben jederzeit im Betrieb vorhalten:

  • Produktversion gem. [gemSpec_OM#Tab_ProdIdent] des ZETA-Guard
  • 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.15.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 19: 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 20: 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.15.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 21: 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 ID 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 ID 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 22: 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.15.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 - 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 bei der gematik registrieren. [<=]

5.16 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.17 Anforderungen an den Test der Zero Trust-Komponenten

Offener Punkt: Die Teststrategie der gematik für die TI 2.0 Anwendungen befindet sich aktuell in der Abstimmung mit den Gesellschaftern. Das daraus abzuleitende konkrete Testkonzept für Zero Trust und die daraus resultierenden Anforderungen an die Zero Trust Umsetzung sind dadurch noch nicht für eine Vorveröffentlichung verbindlich festgelegt.
Sobald die Teststrategie der gematik abgestimmt ist, wird dieses Kapitel entsprechend angepasst.

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.
  • Clientregistrierung: Der ZETA Guard setzt eine sichere Clientregistrierung durch, bei der Clients durch verschiedene Mechanismen attestiert werden (z.B. Android Key ID Attestation, Apple DCAppAttest, TPM signiertes JWT, Client signiertes JWT). Der Client wird an eine TI-Identität gebunden (gID, SM(C)-B, eGK oder HBA). Der ZETA Guard unterstützt die Nutzer bei der Registrierung und Verwaltung der Client-Registrierungen.
  • 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 in einem Hardware Security Module (HSM) gespeichert oder mit einem Key Encryption Key geschützt werden.
  • 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 23: 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 24: Glossar der explizit im Dokument verwendeten Begriffe

Begriff Erläuterung
Authorization Server Ein Server, der Zugriffstoken ausgibt, nachdem er die Identität eines Benutzers 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.
- Benutzeraktivitätsdaten: Protokolle und Aufzeichnungen über Benutzeraktionen 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 25: 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 
[ti-sp-well-known.yaml] Schema für das TI Service Provider Metadata Well-known JSON Dokument
https://raw.githubusercontent.com/gematik/zeta/refs/heads/main/src/schemas/ti-sp-well-known.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 26: 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)
[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 Tokens
https://datatracker.ietf.org/doc/html/rfc8705 (Abruf 01/2025)
[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)