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:
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api@local.net","password":"Str0ngPas$"}'\
https://server123/api/v1/auth/sign_inAls Antwort erhalten wir folgende Nachricht:
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:
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/stationsAls Antwort erhalten wir folgende Nachricht:
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: Bmh2GVrxr6aW0Hngor4gPw
token-type: Bearer
client: D-Uv3ER53873olhnNLjL9w
expiry: 1615311367
uid: api@local.net
ETag: W/"ba0df406b647bd92f0bf3a18916714c1"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 35a26441-ae78-48fa-8b2e-e92d2605133b
X-Runtime: 0.167748
Transfer-Encoding: chunked
{"data": [
{"id":1,"name":"865293041101853","equipment_brand_name":"Corrector
BK","phone":"","equipment_id":1},...
],
"total_pages":7,
"current_page":2
}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
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
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.
# Logs all changes to models
gem "audited"
# Logging settings
Audited.config do |config|
config.audit_class = CustomAudit
end
class CustomAudit < Audited::Audit
default_scope { order(created_at: :desc) }
ACTION_NAME = { 'Create' => 'create',
'Update' => 'update',
'Destroy' => 'destroy' }.freeze
end
# Metering device
class Equipment < ApplicationRecord
audited except: [:password]
...
endErfassung von Fehlern in den Daten der Zähler
# data model for error collection
class ErrorLog < ApplicationRecord
enum message: { invalid_equipment_serial_number: 0,
invalid_equipment_software_version: 1,
...
}
belongs_to :loggable, polymorphic: true
belongs_to :loggable_equipment, class_name: 'Equipment', foreign_key: :loggable_id, optional: true
validates :loggable_type, :loggable_id, :message, presence: true
end
# Event log
unless valid_value?(serial_number)
message_params = {equipment: equipment, new_serial_number: serial_number}
message2logger(loggable_obj: equipment, message: :invalid_equipment_serial_number, params: message_params)
endProtokollspeicherung
Einsatz einer zentralen Speicherung für Protokolle.
Tabelle audits
In dieser Tabelle werden Informationen zur Datenprotokollierung gespeichert.
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | Eindeutige Kennung des Datensatzes (Primärschlüssel). |
auditable_id | integer | Verweis auf das auditierte Objekt (equipment.id, stations.id …). |
auditable_type | character varying | Auditierbares Objekt (equipment, stations …). |
user_id | integer | Verweis auf die Benutzerkennung (users.id) |
action | character varying | Aktion |
audited_changes | jsonb | Auditierte Änderungen |
version | integer | Version der Änderungen |
remote_address | character varying | Remote-Adresse |
request_uuid | character varying | Kennung des Ereignisses. |
created_at | timestamp(6) without time zone | Datum/Uhrzeit der Änderung. |
Tabelle error_logs
In dieser Tabelle werden Informationen über Fehler in den von den Zählern eingehenden Daten gespeichert.
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | Eindeutige Kennung des Datensatzes (Primärschlüssel). |
loggable_id | integer | Verweis auf das registrierte Objekt (equipment.id …). |
loggable_type | character varying | Registriertes Objekt (equipment …). |
message | integer | Verweis auf die Fehlerkennung. |
params | jsonb | Merkmale des Fehlers. |
created_at | timestamp(6) without time zone | Datum/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
War diese Seite hilfreich?
Danke für dein Feedback!