Mechanismen der Datensicherheit

Einheitliche Authentifizierung und Autorisierung, Verschlüsselung und Hashing von Daten sowie Subsysteme für Auditierung und Überwachung, die Daten plattformweit schützen.

Einheitliches System für Authentifizierung und Autorisierung

Das einheitliche System für Authentifizierung und Autorisierung ist eine zentrale Komponente des Datenschutzes und gewährleistet den sicheren Zugriff auf Systemressourcen. Damit lassen sich Benutzer, ihre Berechtigungen und der Zugriff auf Daten systemweit verwalten.

Zur Erinnerung:

  • Authentifizierung ist der Vorgang, mit dem die Identität eines Benutzers überprüft wird (zum Beispiel anhand von Benutzername und Passwort).
  • Autorisierung ist der Vorgang, mit dem die Berechtigungen eines Benutzers zur Ausführung bestimmter Aktionen überprüft werden (zum Beispiel der Zugriff auf Daten oder Systemfunktionen).

Systemkomponenten

Authentifizierung

  • Benutzername und Passwort: das traditionelle Authentifizierungsverfahren. Bei der Anmeldung muss sich der Benutzer zunächst mit Benutzername und Passwort identifizieren.
  • Mehrfaktor-Authentifizierung (MFA): die Verwendung mehrerer Faktoren (zum Beispiel ein dynamisch aktualisiertes Software-Token für die Web-API).

Die tokenbasierte Authentifizierung vereinfacht den Vorgang für bereits angemeldete Benutzer. Zu Beginn sendet der Benutzer eine Anfrage mit Benutzername und Passwort an den Server. Der Server gleicht sie mit den in seiner Identitätsdatenbank hinterlegten Werten ab. Wird die Identität bestätigt, gibt der Server ein Authentifizierungs-Token zurück (das ebenfalls in der Datenbank gespeichert wird).

Fordert derselbe Benutzer später Zugriff auf geschützte Ressourcen an, können diese Anfragen mit dem Authentifizierungs-Token statt mit Benutzername und Passwort autorisiert werden. Der Server gleicht das Token mit dem in der Datenbank hinterlegten ab und gewährt den Zugriff.

Autorisierung

  • Rollen und Berechtigungen: Benutzern werden Rollen zugewiesen (zum Beispiel Zugriffsadministrator, Benutzer), die ihre Berechtigungen festlegen.
  • ACL (Access Control Lists): Listen, die festlegen, wer auf welche Ressourcen zugreifen darf.
  • RBAC (Role-Based Access Control): rollenbasierte Zugriffssteuerung.
  • ABAC (Attribute-Based Access Control): attributbasierte Zugriffssteuerung (zum Beispiel nach Tageszeit oder Standort).

Speicherung der Benutzerdaten

  • Benutzerdatenbank: speichert Informationen über Benutzer, ihre Rollen und Berechtigungen in einer einzigen Datenbank.

Sicherheit

  • Verschlüsselung: schützt Daten während der Übertragung und Speicherung.
  • Zugriffstoken: dynamisch aktualisierte Software-Token zur Sitzungsverwaltung.
  • Auditierung: Protokollierung aller Benutzeraktionen zur späteren Auswertung.

Systemumsetzung

Die Plattform nutzt einen tokenbasierten Authentifizierungsablauf. Der Benutzer meldet sich mit Benutzername und Passwort an, das System überprüft sie und gibt ein Zugriffstoken zurück; dieses Token wird anschließend mit jeder weiteren Anfrage gesendet, um den Zugriff auf geschützte Ressourcen zu autorisieren. Als Benutzername dient die E-Mail-Adresse des Benutzers.

Beispiel einer Anfrage im Curl-Format:

Request example
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api@local.net","password":"Str0ngPas$"}'\
https://server123/api/v1/auth/sign_in

Als Antwort erhalten wir folgende Nachricht:

Response example
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Referrer-Policy: strict-origin-when-cross-origin Content-Type: application/json; charset=utf-8 access-token: tgervk9_9xicJYpmSsnnNA
token-type: Bearer
client: D-Uv3ER53873olhnNLjL9w
expiry: 1615227012
uid: api@local.net
ETag: W/"5b9bcc76f7223b72b79d9f2d31ff0fd5"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: c18e06b4-e5bd-40b5-875d-7ac958e2fbb5
X-Runtime: 0.391069
Transfer-Encoding: chunked
{"data":{"id":6,"email":"api@local.
net","provider":"email","uid":"api@local.net","name":"API user"}}

In dieser Antwort interessiert uns der Parameter access_token. Der Wert dieses Headers wird als Passwort für jede Anfrage verwendet und ändert sich mit jeder Anfrage.

Hier ein Beispiel einer Anfrage, die das Token aus der vorherigen Antwort verwendet:

Request example with token
curl -i --header "access-token: tgervk9_9xicJYpmSsnnNA" \
--header "token-type: Bearer" \
--header "client: D-Uv3ER53873olhnNLjL9w" \
--header "uid: api@local.net" \
--request GET \
--header "Content-Type: application/json" \
--data '{"page":"2"}' \
https://server123/api/v1/stations

Als Antwort erhalten wir folgende Nachricht:

Um die Sitzung zu beenden, können Sie die Prozedur SignOut verwenden oder die erforderlichen Header aus der letzten Anfrage speichern und beim nächsten Mal wiederverwenden, sofern das Token noch nicht abgelaufen ist. Beachten Sie, dass das letzte Token ohne Beendigung der Sitzung noch eine gewisse Zeit gültig bleibt, abhängig von den Systemeinstellungen des Servers.

Vorteile des Systems

Ein einheitliches System für Authentifizierung und Autorisierung ist ein leistungsfähiges Werkzeug für Datenschutz und Zugriffssteuerung. Es bietet folgende Vorteile:

  • Zentrale Verwaltung: vereinfacht die Verwaltung von Benutzern und ihren Berechtigungen.
  • Sicherheit: schützt Daten vor unbefugtem Zugriff.
  • Einheitlichkeit: alle Anwendungen und Systeme nutzen denselben Authentifizierungs- und Autorisierungsmechanismus.
  • Skalierbarkeit: ermöglicht das einfache Hinzufügen neuer Anwendungen und Benutzer.

Datenverschlüsselung

Zum Schutz kritischer Informationen setzt das System Verschlüsselung (die Umwandlung von Informationen in eine Form, die ohne den passenden Schlüssel nicht gelesen werden kann) und Hashing (die Umwandlung von Daten in eine eindeutige Zeichenfolge fester Länge – einen Hash) ein. Dies ist einer der zentralen Datenschutzmechanismen und gewährleistet die Vertraulichkeit, Integrität und Sicherheit von Informationen sowohl bei der Speicherung als auch bei der Übertragung.

Das System verwendet verschiedene Algorithmen zur Verschlüsselung und zum Hashing von Daten.

Einsatz der Verschlüsselung im System

Verschlüsselung bei der Speicherung

  • Datenbanken: Verschlüsselung einzelner Datenbankfelder.
  • Dateien: Verschlüsselung von Dateien vor dem Speichern auf dem Datenträger.

Verschlüsselung von Daten bei der Übertragung

  • HTTPS: Einsatz von SSL/TLS zur Verschlüsselung von Daten bei der Netzwerkübertragung.
  • VPN: Aufbau eines sicheren Tunnels für die Datenübertragung.

Passwortverschlüsselung

Speicherung von Passwort-Hashes anstelle der Passwörter selbst.

Beispiele für die Ver- und Entschlüsselung von Daten

Betrachten wir Beispiele für die Ver- und Entschlüsselung von Systemkonfigurationsdateien.

Datenverschlüsselung

example.config
mkdir_p(encrypted_dir_path)
encrypted = Rails.application.encrypted(encrypted_file_path, key_path: 'config/system.key')
encrypted.write(File.read(decrypted_file_path))
File.delete(decrypted_file_path)

Datenentschlüsselung

example.config
mkdir_p(decrypted_dir_path)
File.write(decrypted_file_path,
  Rails.application.encrypted(encrypted_file_path, key_path: 'config/system.key').read
)

Vorteile der Datenverschlüsselung

  • Vertraulichkeit: Schutz der Daten vor unbefugtem Zugriff.
  • Integrität: Sicherstellung, dass die Daten nicht verändert wurden.
  • Authentizität: Bestätigung der Herkunft der Daten.
  • Compliance-Anforderungen: Erfüllung gesetzlicher Vorgaben.

Auditierung und Überwachung

Mehrere Subsysteme überwachen die Aktivität von Benutzern und System, erkennen verdächtiges Verhalten und stellen die Einhaltung der Sicherheitsanforderungen sicher. Gemeinsam:

  • erfassen, analysieren und speichern sie Informationen über die Aktivität von Benutzern und System, um Nachvollziehbarkeit und Compliance zu gewährleisten;
  • überwachen sie System und Geräte kontinuierlich in Echtzeit, um Vorfälle zu erkennen und darauf zu reagieren.

Ziele

  • Nachvollziehbarkeit: Sicherstellung, dass jede Aktivität von Benutzern und System aufgezeichnet wird.
  • Sicherheit: Erkennung und Verhinderung unbefugter Aktivitäten.
  • Problemerkennung: Identifizierung von Hardwareproblemen und Anomalien sowie Einleitung von Korrekturmaßnahmen.
  • Leistungsoptimierung: Analyse der Systemleistung und Aufspüren von Engpässen, die einer Optimierung bedürfen.
  • Prognose und Planung: Erfassung von Daten zur Vorhersage künftiger Lasten und zur Ressourcenplanung.
  • Compliance: Sicherstellung der Einhaltung gesetzlicher Vorgaben.
  • Vorfallanalyse: Auswertung eingetretener Vorfälle, um künftige zu verhindern.

Komponenten von Auditierung und Überwachung

Datenerfassung

  • Protokolle: Aufzeichnungen von Benutzer- und Systemaktionen auf allen Ebenen.
  • Metriken: Daten zur Systemleistung (zum Beispiel CPU-Auslastung, Speicherverbrauch).

Datenspeicherung

  • Protokollspeicherung: Erfassung von Daten aus verschiedenen Quellen, mit verteilter Speicherung von Protokollen und Metriken nach Themenbereichen gegliedert.
  • Protokollrotation: automatisches Löschen alter Protokolle zur Einsparung von Speicherplatz.

Datenanalyse

  • Suche und Filterung: die Möglichkeit, Protokolle nach verschiedenen Kriterien zu durchsuchen und zu filtern.
  • Analytik: Einsatz von Werkzeugen zur Datenanalyse (zum Beispiel Zabbix).

Benachrichtigungen

  • Benachrichtigungen: Versand von Meldungen über verdächtige Aktivitäten und Notfälle (zum Beispiel per E-Mail oder Telegram-Chat).
  • Automatische Maßnahmen: automatische Reaktion auf Vorfälle (zum Beispiel das Sperren eines Benutzers).

Beispielumsetzung

Protokollierung

Einsatz einer Bibliothek zur Protokollierung in der Anwendung.

Erfassung von Fehlern in den Daten der Zähler

Protokollspeicherung

Einsatz einer zentralen Speicherung für Protokolle.

Tabelle audits

In dieser Tabelle werden Informationen zur Datenprotokollierung gespeichert.

FeldTypBeschreibung
idintegerEindeutige Kennung des Datensatzes (Primärschlüssel).
auditable_idintegerVerweis auf das auditierte Objekt (equipment.id, stations.id …).
auditable_typecharacter varyingAuditierbares Objekt (equipment, stations …).
user_idintegerVerweis auf die Benutzerkennung (users.id)
actioncharacter varyingAktion
audited_changesjsonbAuditierte Änderungen
versionintegerVersion der Änderungen
remote_addresscharacter varyingRemote-Adresse
request_uuidcharacter varyingKennung des Ereignisses.
created_attimestamp(6) without time zoneDatum/Uhrzeit der Änderung.
Tabelle error_logs

In dieser Tabelle werden Informationen über Fehler in den von den Zählern eingehenden Daten gespeichert.

FeldTypBeschreibung
idintegerEindeutige Kennung des Datensatzes (Primärschlüssel).
loggable_idintegerVerweis auf das registrierte Objekt (equipment.id …).
loggable_typecharacter varyingRegistriertes Objekt (equipment …).
messageintegerVerweis auf die Fehlerkennung.
paramsjsonbMerkmale des Fehlers.
created_attimestamp(6) without time zoneDatum/Uhrzeit der Änderung.

Protokollanalyse

Werkzeuge zur Analyse von Protokollen:

  • Einrichtung von Webformularen zur Visualisierung und Analyse von Protokollen.
  • Erstellung von Dashboards zur Überwachung der Benutzeraktivität.

Benachrichtigungen

Angepasste Benachrichtigungen bei verdächtigen Aktivitäten:

  • Konfiguration von Benachrichtigungen in Zabbix zur Überwachung von Metriken.
  • Versand von Meldungen per E-Mail oder Telegram-Chat bei Alarmereignissen.

Vorteile von Auditierung und Überwachung

Auditierung und Überwachung sind leistungsfähige Datenschutzwerkzeuge, mit denen sich die Aktivität von Benutzern und System nachverfolgen, verdächtiges Verhalten erkennen und die Einhaltung der Sicherheitsanforderungen sicherstellen lässt. Sie ermöglichen Folgendes:

  • Nachvollziehbarkeit und Sicherheit der Daten zu gewährleisten;
  • Vorfälle zu erkennen und zu verhindern;
  • gesetzliche Vorgaben zu erfüllen.

Verwandte Themen

Zuletzt aktualisiert am

War diese Seite hilfreich?