Mechanismen der Datensicherheit

Mechanismen der Datensicherheit

Einheitliches System zur Authentifizierung und Autorisierung

Das einheitliche Authentifizierungs- und Autorisierungssystem ist eine Schlüsselkomponente des Datenschutzes, die einen sicheren Zugriff auf Systemressourcen ermöglicht. Es ermöglicht Ihnen die Verwaltung von Benutzern, deren Berechtigungen und den Zugriff auf Daten auf systemweiter Ebene.

Zur Erinnerung:

  • Authentifizierung ist der Prozess der Überprüfung der Authentizität eines Benutzers (z. B. mit Hilfe eines Benutzernamens und eines Passworts).
  • Autorisierung ist der Prozess der Überprüfung der Berechtigung eines Benutzers zur Durchführung bestimmter Aktionen (z. B. Zugriff auf Daten oder Systemfunktionen).

Ein einheitliches Authentifizierungs- und Autorisierungssystem bietet folgende Vorteile:

  • Zentrale Verwaltung: Vereinfacht die Verwaltung von Benutzern und deren Berechtigungen.
  • Sicherheit: Schützt Daten vor unberechtigtem Zugriff.
  • Konsistenz: Alle Anwendungen und Systeme verwenden denselben Authentifizierungs- und Autorisierungsmechanismus.
  • Skalierbarkeit: Einfaches Hinzufügen neuer Anwendungen und Benutzer.

Systemkomponenten

Authentifizierung

  • Anmeldung und Passwort: Die traditionelle Methode der Authentifizierung.

Bei der Anmeldung muss sich der Benutzer zunächst mit einem Benutzernamen und einem Passwort identifizieren.

  • Multifaktorielle Authentifizierung (MFA): Die Verwendung mehrerer Faktoren (z. B. ein dynamisch aktualisiertes Programm-Token für die WEB-API).

Die Token-basierte Authentifizierung vereinfacht den Prozess für etablierte Benutzer. Zu Beginn sendet der Benutzer eine Anfrage an den Server mit einem Benutzernamen und einem Passwort. Der Server validiert diese dann anhand der in seiner Identitätsdatenbank registrierten Werte. Wenn die Identitäten bestätigt werden, sendet der Server ein Authentifizierungs-Token zurück (das ebenfalls in der Datenbank gespeichert ist).

Wenn derselbe Benutzer später Anfragen für den Zugriff auf geschützte Ressourcen sendet, können diese Anfragen mit einem Authentifizierungs-Token anstelle eines Benutzernamens und eines Passworts autorisiert werden. Der Server vergleicht das Token mit dem in der Datenbank registrierten Token und gewährt den Zugang.

Ermächtigung

  • Rollen und Berechtigungen: Benutzern werden Rollen zugewiesen (z. B. Zugangsadministrator, Benutzer), die ihre Berechtigungen festlegen.
  • ACL (Zugriffskontrolllisten): Zugriffskontrolllisten, die festlegen, wer Zugriff auf welche Ressourcen hat.
  • RBAC (Role-Based Access Control): Die rollenbasierte Zugriffskontrolle.
  • ABAC (Attributbasierte Zugriffskontrolle): Attributbasierte Zugangskontrolle (z. B. Tageszeit, Standort).

Speicherung von Benutzerdaten

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

Sicherheit

  • Verschlüsselung: Schützt Daten während der Übertragung und Speicherung.
  • Zugangs-Token: Verwendung dynamisch aktualisierter Software-Tokens für die Sitzungsverwaltung.
  • Auditing: Protokollierung aller Benutzeraktionen zur späteren Analyse.

Systemimplementierung

Der Benutzer gibt ein Login und ein Passwort ein, das System validiert diese und gibt ein Zugangstoken zurück. Die E-Mail-Adresse des Benutzers wird als Login verwendet.

Beispiel für eine Anfrage im Curl-Format:

Request example
1
2
3
4
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 die folgende Meldung:

Response example
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
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 interessieren wir uns für den Parameter access_token. Der Wert dieser Kopfzeile wird als Passwort für jede Anfrage verwendet. Der Wert ändert sich bei jeder Anfrage.

Hier ist ein Beispiel für eine Anfrage, die das Token aus der vorherigen Antwort verwendet:

Request example with token
1
2
3
4
5
6
7
8
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 die folgende Meldung:

Response example
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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":"Корректор
БК","phone":"","equipment_id":1},...
],
"total_pages":7,
"current_page":2
}

Um die Sitzung zu beenden, können Sie die Prozedur SignOut verwenden oder die notwendigen Header der letzten Anfrage speichern und beim nächsten Mal verwenden, wenn die Lebensdauer des Tokens noch nicht abgelaufen ist. Denken Sie daran, dass das letzte Token ohne Beendigung der Sitzung noch einige Zeit gültig ist, je nach den Systemeinstellungen des Servers.

Vorteile des Systems

Ein einheitliches Authentifizierungs- und Autorisierungssystem ist ein leistungsfähiges Instrument für den Datenschutz und die Zugriffskontrolle. Es bietet die folgenden Vorteile:

  • Zentrale Verwaltung: Vereinfacht die Verwaltung von Benutzern und deren Berechtigungen.
  • Sicherheit: Schützt Daten vor unberechtigtem Zugriff.
  • Konsistenz: Alle Anwendungen und Systeme verwenden denselben Authentifizierungs- und Autorisierungsmechanismus.
  • Skalierbarkeit: Einfaches Hinzufügen neuer Anwendungen und Benutzer.

Datenverschlüsselung

Um wichtige Informationen zu schützen, verwendet das System Verschlüsselung (Umwandlung von Informationen in eine Form, die ohne den entsprechenden Schlüssel nicht gelesen werden kann) und Hashing (Umwandlung von Daten in eine eindeutige Zeichenfolge fester Länge - Hash) von Daten. Dies ist einer der wichtigsten Datenschutzmechanismen, der die Vertraulichkeit, Integrität und Sicherheit von Informationen sowohl bei der Speicherung als auch bei der Übertragung gewährleistet.

Das System verwendet verschiedene Algorithmen zur Datenverschlüsselung und zum Hashing.

Anwendung der Verschlüsselung im System

Speicherverschlüsselung

  • Datenbanken: Verschlüsselung einzelner Datenbankfelder.
  • Dateien: Verschlüsseln von Dateien vor dem Speichern auf der Festplatte.

Verschlüsselung von Daten bei der Übertragung

  • HTTPS: Verwendung von SSL/TLS zur Verschlüsselung von Daten während der Netzwerkübertragung.
  • VPN: Schaffung eines sicheren Tunnels für die Datenübertragung.

Passwortverschlüsselung

Speichern von Passwort-Hashes anstelle von Passwörtern.

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

Sehen wir uns Beispiele für die Verschlüsselung/Entschlüsselung von Systemkonfigurationsdateien an:

Datenverschlüsselung

example.config
1
2
3
4
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)

Auswertung der Daten

example.config
1
2
3
4
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 unberechtigtem Zugriff.
  • Glaubwürdigkeit: Sicherstellen, dass die Daten nicht verändert wurden.
  • Authentizität: Bestätigung der Quelle der Daten.
  • Konformität: Anforderungen: Erfüllung der gesetzlichen Anforderungen.

Prüfung und Überwachung

Es wurde eine Reihe von Subsystemen entwickelt und miteinander verbunden, um Benutzer- und Systemaktivitäten zu überwachen, verdächtige Aktivitäten zu erkennen und die Einhaltung von Sicherheitsanforderungen zu gewährleisten.

Zu diesem Zweck:

  • Das System ist so organisiert, dass es Informationen über Benutzer- und Systemaktivitäten sammelt, analysiert und speichert, um Rechenschaftspflicht und Compliance zu gewährleisten.
  • Organisierte kontinuierliche Echtzeit-Überwachung des Systems und der Geräte, um Vorfälle zu erkennen und darauf zu reagieren.

Zielsetzungen

  • Rechenschaftspflicht: Sicherstellen, dass alle Benutzer- und Systemaktivitäten aufgezeichnet werden.
  • Sicherheit: Erkennen und Verhindern unbefugter Aktivitäten.
  • Problem-Erkennung: Erkennen von Hardwareproblemen und Anomalien und Ergreifen von Maßnahmen zu deren Behebung.
  • Performance-Optimierung: Analysieren der Systemleistung und Auffinden von Engpässen, die eine Optimierung erfordern.
  • Vorhersage und Planung: Sammeln von Daten zur Vorhersage künftiger Arbeitsbelastungen und zur Planung von Ressourcen.
  • Einhaltung: Sicherstellung der Einhaltung gesetzlicher Vorschriften.
  • Vorfallanalyse: Analyse bereits aufgetretener Zwischenfälle und Verhinderung künftiger Zwischenfälle.

Komponenten zur Prüfung und Überwachung

Datenerhebung

  • Protokolle: Aufzeichnungen von Benutzer- und Systemaktionen auf allen Ebenen.
  • Metriken: Systemleistungsdaten (z. B. CPU-Auslastung, Speichernutzung).

Datenspeicherung

  • Log-Speicher: Sammeln von Daten aus verschiedenen Quellen, organisierte verteilte Speicherung von Protokollen und Metriken nach Themenbereichen.
  • Log Rotation: Automatische Löschung alter Protokolle, um Speicherplatz zu sparen.

Datenanalyse

  • Suchen und Filtern: Möglichkeit, Protokolle nach verschiedenen Kriterien zu suchen und zu filtern.
  • Analytik: Verwendung von Datenanalysetools (z. B. Zabbix).

Warnungen

  • Alerts: Senden von Benachrichtigungen über verdächtige Aktivitäten, Notfälle (z.B. E-Mail, Telegram-Chat).
  • Automatische Aktionen: Automatisches Reagieren auf Vorfälle (z. B. Sperren eines Nutzers).

Beispielhafte Implementierung

Protokollierung

Verwendung einer Bibliothek für die Protokollierung in der Anwendung.

Ruby on Rails
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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]
    ...
end

Erfassung von Fehlern in den Daten von Zählern

Ruby on Rails
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 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)
end

Holzlagerung

Verwendung eines zentralen Speichers für Protokolle.

Tabelle audits.

In dieser Tabelle werden Datenprotokollierungsinformationen gespeichert.

Feld Typ Beschreibung
id integer Eindeutiger Bezeichner des Datensatzes (Primärschlüssel).
auditable_id integer Referenz auf das geprüfte Objekt (equipment.id, stations.id …).
auditable_type Character varying Auditierbares Objekt (equipment, stations …).
user_id integer Verweis auf die Benutzerkennung (users.id)
action Zeichen variierend Aktion
audited_changes jsonb Geprüfte Änderungen
version integer Version der Änderungen
remote_address Zeichen variierend Gelöschte Adresse
request_uuid Zeichen variierend Der Bezeichner 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 stammenden Daten gespeichert.

Feld Typ Beschreibung
id integer Eindeutiger Bezeichner des Datensatzes (Primärschlüssel).
loggable_id integer Referenz auf das registrierte Objekt (equipment.id …).
loggable_type Character varying Registriertes Objekt (equipment …).
message integer Verweis auf den Fehlerbezeichner.
params jsonb Merkmale des Fehlers.
created_at timestamp(6) without time zone Datum/Uhrzeit der Änderung.

Protokollanalyse

Werkzeuge für die Analyse von Protokollen:

  • Einrichten von Webformularen zur Visualisierung und Analyse von Protokollen.
  • Erstellen von Dashboards zur Überwachung der Benutzeraktivitäten.

Warnungen

Maßgeschneiderte Warnmeldungen bei verdächtigen Aktivitäten:

  • Konfigurieren von Alarmen in Zabbix zur Überwachung von Metriken.
  • Versenden von Benachrichtigungen per E-Mail oder Telegram-Chat bei Alarmereignissen.

Vorteile von Auditing und Monitoring

Auditing und Monitoring sind leistungsstarke Datenschutz-Tools, mit denen Sie Benutzer- und Systemaktivitäten verfolgen, verdächtige Aktivitäten erkennen und die Einhaltung von Sicherheitsvorschriften gewährleisten können. Sie ermöglichen es Ihnen:

  • Gewährleistung der Verantwortlichkeit und Sicherheit der Daten.
  • Erkennen und Verhindern von Zwischenfällen.
  • Erfüllung gesetzlicher Anforderungen.
Zuletzt aktualisiert am