c95bc4cd44
- 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.
4.2 KiB
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