Files
Baradb/docs/de/security.md
T
dimgigov c95bc4cd44
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
docs: synchronize documentation across all languages
- Add mcp.md to: bg, fa, ru, tr, zh, ar
- Add index.md to Bulgarian (bg)
- Add 24 missing German (de) documentation files

Translations for all supported languages now complete.
2026-05-17 16:29:28 +03:00

4.2 KiB

Sicherheitsleitfaden

TLS/SSL-Verschlüsselung

BaraDB unterstützt TLS 1.3 für alle Protokolle (Binary, HTTP, WebSocket). Wenn kein Zertifikat bereitgestellt wird, generiert der Server automatisch ein selbstsigniertes Zertifikat beim Start für Zero-Configuration-Verschlüsselung.

Eigene Zertifikate verwenden

# Vorhandene Zertifikate bereitstellen
BARADB_TLS_ENABLED=true \
BARADB_CERT_FILE=/etc/baradb/server.crt \
BARADB_KEY_FILE=/etc/baradb/server.key \
./build/baradadb

Selbstsignierte Zertifikate generieren

openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt \
  -days 365 -nodes -subj "/CN=localhost"

Let's Encrypt (Production)

Certbot verwenden und BaraDB auf die generierten Dateien zeigen:

sudo certbot certonly --standalone -d db.example.com

BARADB_CERT_FILE=/etc/letsencrypt/live/db.example.com/fullchain.pem \
BARADB_KEY_FILE=/etc/letsencrypt/live/db.example.com/privkey.pem \
./build/baradadb

Authentifizierung

JWT-basierte Authentifizierung

BaraDB verwendet JWT (JSON Web Tokens) mit HMAC-SHA256-Signatur.

Authentifizierung aktivieren

BARADB_AUTH_ENABLED=true \
BARADB_JWT_SECRET="$(openssl rand -hex 32)" \
./build/baradadb

Tokens erstellen

import barabadb/protocol/auth

var am = newAuthManager("your-secret-key")
let token = am.createToken(JWTClaims(
  sub: "user1",
  role: "admin",
  exp: getTime() + 24.hours
))

Rollenbasierte Zugriffskontrolle

Rolle Berechtigungen
admin Voller Zugriff
write Lesen + Schreiben
read Nur Lesen
monitor Nur Metrics und Health

Tokens verwenden

curl -H "Authorization: Bearer $TOKEN" \
  http://localhost:9470/api/query \
  -d '{"query": "SELECT * FROM users"}'

Rate Limiting

Token-Bucket Rate Limiting verhindert Missbrauch:

import barabadb/protocol/ratelimit

var rl = newRateLimiter(
  rlaTokenBucket,
  globalRate = 10000,      # 10K req/s global
  perClientRate = 1000,    # 1K req/s pro IP/Token
  burstSize = 100           # 100 req Burst erlauben
)

if not rl.allowRequest("client-ip"):
  return error("Rate limit exceeded")

Netzwerksicherheit

Bind-Adresse

Standardmäßig bindet BaraDB an 127.0.0.1 (nur Localhost). Für Production:

# An alle Interfaces binden (hinter Firewall oder Reverse Proxy)
BARADB_ADDRESS=0.0.0.0 ./build/baradadb

# An spezifisches internes Interface binden
BARADB_ADDRESS=10.0.0.5 ./build/baradadb

Firewall-Regeln

# Nur Application-Server erlauben
sudo ufw allow from 10.0.0.0/8 to any port 9472
sudo ufw allow from 10.0.0.0/8 to any port 9470

# Externen Zugriff auf Management-Ports blockieren
sudo ufw deny 9471  # WebSocket (nur für internen Gebrauch)

Datenverschlüsselung at Rest

OS-Level-Verschlüsselung

LUKS für Vollständige-Festplatten-Verschlüsselung verwenden:

cryptsetup luksFormat /dev/nvme0n1p2
cryptsetup open /dev/nvme0n1p2 baradb-crypt
mkfs.ext4 /dev/mapper/baradb-crypt
mount /dev/mapper/baradb-crypt /var/lib/baradb

Applikations-Level-Verschlüsselung

BaraDB unterstützt transparente Verschlüsselung von SSTable-Dateien:

BARADB_STORAGE_ENCRYPTION_KEY="$(openssl rand -hex 32)" \
./build/baradadb

Audit Logging

Alle Abfragen und administrativen Aktionen werden geloggt:

{
  "timestamp": "2025-01-15T10:30:00Z",
  "level": "info",
  "event": "query_executed",
  "client_ip": "10.0.0.15",
  "user": "app_user",
  "query": "SELECT * FROM users WHERE id = ?",
  "duration_ms": 12,
  "rows_returned": 1
}

Audit Logging aktivieren:

BARADB_LOG_LEVEL=info \
BARADB_LOG_FORMAT=json \
BARADB_LOG_FILE=/var/log/baradb/audit.log \
./build/baradadb

Sicherheits-Checkliste

  • Standard-JWT-Geheimnis ändern
  • TLS mit gültigen Zertifikaten aktivieren
  • An spezifische Interfaces binden
  • Authentifizierung in Production aktivieren
  • Rate Limiting konfigurieren
  • Audit Logging aktivieren
  • Daten at Rest verschlüsseln (LUKS oder App-Level)
  • BaraDB als Non-Root-Benutzer ausführen
  • Firewall-Regeln restriktiv halten
  • JWT-Geheimnisse regelmäßig rotieren