MongoDB Academy · Lektion

Sicherheits-Härtung und Checkliste für den Produktivbetrieb

Lernende gehen eine Checkliste für die Produktionsbereitschaft durch, die Authentifizierung, RBAC, TLS, Verschlüsselung, Monitoring und die Backup-Strategie abdeckt.

Lektion 4 von 413 Schritte

Sicherheits-Härtung und Checkliste für den Produktivbetrieb ist eine kostenlose MongoDB Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des MongoDB Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.

Die Denkweise zur Produktionsbereitschaft

Produktionsbereitschaft ist kein Feature, sondern eine Checkliste von Maßnahmen, die vor dem ersten echten Zugriff auf Ihr System angewendet werden. Eine Bereitstellung, die alle Funktionstests besteht, aber die Härtung der Sicherheit, das Monitoring und die Überprüfung der Backups auslässt, ist nicht produktionsbereit. Diese abschließende Lektion führt durch die wichtigsten Punkte der Produktionscheckliste für eine MongoDB-Bereitstellung und behandelt Authentifizierung, RBAC, TLS, Verschlüsselung, Monitoring, Backups und Disaster Recovery.

Checkliste 1: Authentifizierung aktiviert

Vergewissern Sie sich, dass die Authentifizierung aktiviert ist und keine nicht authentifizierten Verbindungen möglich sind. Bestätigen Sie bei selbst gehostetem MongoDB, dass security.authorization: enabled in mongod.conf gesetzt ist. In Atlas ist die Authentifizierung obligatorisch und kann nicht deaktiviert werden. Testen Sie dies, indem Sie versuchen, sich ohne Zugangsdaten zu verbinden — die Verbindung muss abgewiesen werden. Stellen Sie sicher, dass kein Benutzer in Produktionskonten von Anwendungen die Rolle root oder __system besitzt.

// Verify authentication is required
// (attempt to connect without credentials — should fail)
try {
  const client = new MongoClient('mongodb://localhost:27017')
  await client.connect()
  await client.db('admin').command({ ping: 1 })
  console.log('AUTH MISSING — unauthenticated connections accepted!')
} catch (e) {
  console.log('Good: unauthenticated connections rejected')
}

// List all admin users and their roles
use admin
db.getUsers()  // verify no app user has 'root' role

Checkliste 2: RBAC nach dem Prinzip der geringsten Berechtigung

Überprüfen Sie jeden Datenbankbenutzer. Jeder Anwendungsdienst sollte ausschließlich die Rollen besitzen, die er benötigt, und zwar nur für die Datenbanken, auf die er zugreifen muss. Führen Sie für jede Datenbank db.getUsers() aus und prüfen Sie, dass kein Servicekonto dbAdminAnyDatabase, readWriteAnyDatabase oder root besitzt. Erstellen Sie eine Benutzerzugriffsmatrix, in der dokumentiert ist, welcher Dienst sich mit welchem Benutzer verbindet, welche Rollen dieser besitzt und warum. Diese Matrix ist Ihre zentrale Quelle für Zugriffsüberprüfungen.

// Audit access matrix
const accessMatrix = [
  { service: 'api-server',       user: 'apiSvc',        roles: [{ role: 'readWrite', db: 'ecommerce' }] },
  { service: 'analytics-job',   user: 'analyticsSvc',  roles: [{ role: 'read', db: 'ecommerce' }] },
  { service: 'backup-agent',    user: 'backupAgent',   roles: [{ role: 'backup', db: 'admin' }] },
  { service: 'monitoring-exp',  user: 'prometheusExp', roles: [{ role: 'clusterMonitor', db: 'admin' }] }
]

// Verify each user's actual roles match the matrix
accessMatrix.forEach(entry => {
  const user = db.getSiblingDB('admin').getUser(entry.user)
  console.log(entry.service, user ? 'OK' : 'MISSING')
})

Checkliste 3: TLS erzwungen

Bestätigen Sie, dass net.tls.mode: requireTLS aktiv ist und alle Clientverbindungen verschlüsselt werden. Prüfen Sie das MongoDB-Log auf fehlgeschlagene TLS-Handshakes, die darauf hindeuten, dass Clients noch versuchen, unverschlüsselte Verbindungen herzustellen. In Atlas ist TLS standardmäßig aktiviert und kann nicht deaktiviert werden. Führen Sie bei selbst gehosteten Bereitstellungen db.adminCommand({ sslInfo: 1 }) aus (oder prüfen Sie db.serverStatus().network), um zu verifizieren, dass TLS aktiv ist. Lehnen Sie jede Bereitstellung ab, bei der TLS in der Produktion auf allowTLS gesetzt ist.

// Verify TLS is active on the server
const netStatus = db.adminCommand({ serverStatus: 1 }).network
console.log('TLS connections:', netStatus.serviceExecutorTaskStats)

// Confirm connection string includes TLS
// mongodb+srv:// always uses TLS
// Self-hosted: mongodb://host:27017/?tls=true

// Check mongod.conf programmatically
// grep 'mode: requireTLS' /etc/mongod.conf

Checkliste 4: Netzwerkisolierung

MongoDB sollte nicht direkt aus dem öffentlichen Internet erreichbar sein. Vergewissern Sie sich in Atlas, dass die IP Access List nicht 0.0.0.0/0 (alle zulassen) enthält. Verwenden Sie VPC Peering oder Private Link, um den Datenverkehr privat zu leiten. Binden Sie MongoDB bei selbst gehosteten Bereitstellungen ausschließlich an die private Netzwerkschnittstelle (net.bindIp: 127.0.0.1,10.0.0.5) und konfigurieren Sie Firewall-Regeln so, dass am Port 27017 nur IPs von Anwendungsservern zugelassen werden.

# mongod.conf — bind only to localhost and private network interface
net:
  bindIp: 127.0.0.1,10.0.0.5  # never 0.0.0.0 in production
  port: 27017

# Firewall rule (iptables example — block public access to 27017)
# iptables -A INPUT -p tcp --dport 27017 -s 10.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 27017 -j DROP

Checkliste 5: Backup und Point-in-Time-Recovery

Produktionsbereitstellungen müssen über eine verifizierte und getestete Backup-Strategie verfügen. Aktivieren Sie in Atlas Continuous Cloud Backup, das eine Point-in-Time-Recovery zu jeder Sekunde innerhalb des Aufbewahrungszeitraums ermöglicht. Konfigurieren Sie bei selbst gehosteten Bereitstellungen tägliche mongodump-Snapshots in S3 und testen Sie monatlich die Wiederherstellung. Das entscheidende Wort ist getestet — ein Backup, aus dem noch nie eine Wiederherstellung durchgeführt wurde, ist ein Backup, dem Sie nicht vertrauen können. Führen Sie vierteljährlich eine Disaster-Recovery-Übung durch.

# mongodump — daily backup to S3
mongodump \
  --uri 'mongodb://backupAgent:pass@host:27017/?authSource=admin' \
  --gzip \
  --archive=/tmp/backup-$(date +%Y%m%d).gz

# Upload to S3
aws s3 cp /tmp/backup-$(date +%Y%m%d).gz s3://my-mongo-backups/

# Verify backup integrity — test restore to a separate cluster
mongorestore \
  --uri 'mongodb://host2:27017' \
  --gzip \
  --archive=/tmp/backup-$(date +%Y%m%d).gz \
  --drop

Checkliste 6: Monitoring und Alerting

Eine produktive MongoDB-Bereitstellung benötigt Monitoring für: Hardware (CPU, I/O des Datenträgers, Netzwerk); MongoDB-spezifische Metriken (Verbindungen, Opcounters, Cache-Trefferrate, Replikations-Lag, Lock-Prozentsätze); und auf Anwendungsebene (P99-Abfragelatenz, Fehlerraten). Atlas bietet integriertes Monitoring und Alerting. Selbst gehostete Bereitstellungen sollten in Prometheus (mongodb_exporter) + Grafana oder eine gleichwertige Lösung integriert werden. Richten Sie Alerts ein, bevor Schwellenwerte überschritten werden, nicht erst danach.

// Key Atlas alerts to configure (examples)
const alerts = [
  { metric: 'DISK_UTILIZATION',       threshold: '80%',  severity: 'WARNING' },
  { metric: 'CPU_SYSTEM_NORMALIZED',  threshold: '70%',  severity: 'WARNING' },
  { metric: 'REPLICATION_LAG',        threshold: '10s',  severity: 'CRITICAL' },
  { metric: 'CONNECTIONS',            threshold: '80%',  severity: 'WARNING' },
  { metric: 'CACHE_DIRTY_BYTES',      threshold: '20%',  severity: 'WARNING' }
]

Checkliste 7: Ausgangswerte für die Abfrageleistung

Legen Sie vor dem Launch einen Ausgangswert für die Abfrageleistung fest: Aktivieren Sie den Profiler auf Stufe 1, führen Sie eine repräsentative Last aus (mit einem Tool wie MongoDBs Load Generator oder k6) und erfassen Sie die P95- und P99-Latenzen für jeden kritischen Endpunkt. Speichern Sie diese Ausgangswerte. Führen Sie den Lasttest nach jeder Bereitstellung erneut aus und vergleichen Sie die Ergebnisse. Jede Verschlechterung des P99-Werts um mehr als 20 % löst eine Untersuchung aus, bevor die Bereitstellung alle Benutzer erreicht.

// Enable profiler and set slow query threshold
db.setProfilingLevel(1, { slowms: 50 })  // log queries > 50ms

// After load test, query profiler for summary
db.system.profile.aggregate([
  {
    $group: {
      _id: '$ns',
      avgMs:    { $avg: '$millis' },
      maxMs:    { $max: '$millis' },
      count:    { $sum: 1 },
      slowOps:  { $sum: { $cond: [{ $gt: ['$millis', 100] }, 1, 0] } }
    }
  },
  { $sort: { avgMs: -1 } }
])

Checkliste 8: Verschlüsselung ruhender Daten

Stellen Sie bei Anwendungen, die personenbezogene Daten, Zahlungsdaten oder Gesundheitsinformationen verarbeiten, sicher, dass die Verschlüsselung ruhender Daten aktiviert ist. Aktivieren Sie in Atlas in den Sicherheitseinstellungen die auf dem KMS des Cloud-Anbieters basierende Verschlüsselung. Bestätigen Sie bei selbst gehosteten Enterprise-Bereitstellungen security.enableEncryption: true und stellen Sie sicher, dass ein KMIP-Schlüsselmanager konfiguriert ist. Dokumentieren Sie, welcher Customer Master Key welchen Cluster schützt, und stellen Sie sicher, dass für den CMK selbst Zugriffskontrollen mit mehreren Personen eingerichtet sind, um eine Aussperrung zu verhindern.

// Verify Atlas encryption at rest is enabled via Atlas Admin API
curl -u 'PUBLIC_KEY:PRIVATE_KEY' --digest \
  'https://cloud.mongodb.com/api/atlas/v1.0/groups/GROUP_ID/encryptionAtRest'
// Response should show: 'awsKms.enabled': true (or azure/gcp equivalent)

// For self-hosted, check mongod.conf
// grep 'enableEncryption' /etc/mongod.conf
// Expected: enableEncryption: true

Checkliste 9: Audit-Logging

Aktivieren Sie Audit-Logging, um jede Authentifizierung, jeden Autorisierungsfehler und jedes Ereignis mit Zugriff auf sensible Daten zu protokollieren. MongoDB Enterprise und Atlas stellen Audit-Log-Streams bereit, die Sie an ein SIEM-System (Security Information and Event Management) weiterleiten können. Konfigurieren Sie Audit-Filter für die Erfassung von: allen authenticate-Aktionen, allen createUser-/dropUser-/updateUser-Aktionen und allen Vorgängen in sensiblen Collections (users, payments). Bewahren Sie Audit-Logs aus Compliance-Gründen mindestens ein Jahr lang auf.

# mongod.conf — enable audit logging (Enterprise)
auditLog:
  destination: file
  format: JSON
  path: /var/log/mongodb/audit.json
  filter: '{
    atype: {
      $in: ["authenticate", "authCheck", "createUser", "dropUser",
            "logout", "createCollection", "dropCollection"]
    }
  }'

Checkliste 10: Runbook und Disaster-Recovery-Plan

Dokumentieren Sie betriebliche Abläufe in einem Runbook: wie Sie sich im Notfall mit MongoDB verbinden, wie Sie ein ausgefallenes Mitglied eines Replikatsatzes neu starten, wie Sie ein manuelles Failover durchführen, wie Sie aus einem Backup wiederherstellen und wie der Eskalationsweg aussieht. Üben Sie diese Abläufe in einer Staging-Umgebung. Legen Sie ein Recovery Time Objective (RTO) fest — wie lange darf die Datenbank ausfallen — sowie ein Recovery Point Objective (RPO) — wie viel Datenverlust ist akzeptabel. Das kontinuierliche Backup von Atlas ermöglicht ein RPO von wenigen Sekunden.

// Runbook checklist (document in your team wiki)
const runbook = {
  emergencyConnect: 'mongosh mongodb+srv://adminUser:***@cluster.mongodb.net',
  checkReplicaStatus: 'rs.status()',
  triggerManualFailover: 'rs.stepDown()  // on current primary',
  viewReplicationLag: 'rs.printSlaveReplicationInfo()',
  restoreFromBackup: 'atlas backups restores start --clusterName prod',
  contactList: ['dba-oncall@company.com', '+1-800-DBA-HELP'],
  rto: '15 minutes',
  rpo: '5 seconds (continuous backup)'
}

Kurzer Check

Testen Sie Ihr Verständnis der Konzepte aus dieser Lektion zu MongoDB & NoSQL Databases.

Zusammenfassung der Lektion

In der letzten Lektion dieses Abschlussprojekts haben Sie die Checkliste für die Produktionsreife abgeschlossen: Authentifizierung, RBAC mit minimalen Berechtigungen, TLS, Netzwerkisolierung, Sicherung + getestete Wiederherstellung, Überwachung, Referenzwert für die Abfrageleistung, Verschlüsselung ruhender Daten, Audit-Protokollierung und eine schriftliche Betriebsanleitung. Herzlichen Glückwunsch — Sie haben nun den gesamten Track zu MongoDB und NoSQL-Datenbanken abgeschlossen, vom ersten Einfügen eines Dokuments bis zur Bereitstellung eines Sharding-Clusters in der Produktion. Nutzen Sie diese Kenntnisse und bauen Sie etwas Großartiges!

Kostenlos starten

Lerne JavaScript mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Sicherheits-Härtung und Checkliste für den Produktivbetrieb“ kostenlos?

Ja — der vollständige Text von „Sicherheits-Härtung und Checkliste für den Produktivbetrieb“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des MongoDB Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Sicherheits-Härtung und Checkliste für den Produktivbetrieb“?

Lernende gehen eine Checkliste für die Produktionsbereitschaft durch, die Authentifizierung, RBAC, TLS, Verschlüsselung, Monitoring und die Backup-Strategie abdeckt. Du übst MongoDB Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um MongoDB Academy zu starten?

Keine Vorkenntnisse erforderlich. MongoDB Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Sicherheits-Härtung und Checkliste für den Produktivbetrieb“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser MongoDB Academy-Lektion Code schreiben und ausführen?

Ja. Jede MongoDB Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Anforderungsanalyse und Schemaentwurf
  2. Indexstrategie und Validierung des Abfrageplaners
  3. Skalierungsplan: Vom Replikatsatz zum Sharded Cluster
  4. Sicherheits-Härtung und Checkliste für den Produktivbetrieb
← Zurück zu MongoDB Academy