Skip to content

S3-zu-S3-Backups (S3 to S3 Backups)

Zweck

Diese Seite dokumentiert die aktuelle Implementierung der Objekt-Backups in der Produktionsumgebung:

  • Quelle: IONOS S3 (Produktion)
  • Ziel: Hetzner Object Storage (Backup)
  • Laufzeit: Kubernetes CronJobs im Namespace s3backup

Hauptziele:

  • Stündliche anbieterübergreifende Replikation
  • Unveränderliche Backup-Aufbewahrung (Immutable Retention) auf dem Ziel
  • Betriebsbereiter Wiederherstellungspfad bei versehentlichem Löschen oder Datenbeschädigung

Aktuelles Setup

Quelle (Primär)

  • Anbieter: IONOS S3
  • Rolle: Aktiver Produktions-Objektspeicher
  • Schutzstufe: Nur Hardware-Redundanz des Anbieters

Wichtig: Hardware-Redundanz schützt nicht vor logischen Vorfällen wie:

  • versehentliches Löschen
  • versehentliches Überschreiben
  • Missbrauch von Zugangsdaten
  • Ransomware-ähnliche Datenänderungen

Ziel (Backup, Hetzner)

  • Anbieter: Hetzner Object Storage (S3-kompatibel)
  • Versionierung: Aktiviert
  • Object Lock: Aktiviert
  • Aufbewahrung (Retention): 14 Tage
  • Sperrmodus (Lock Mode): Compliance

Der Compliance-Modus bedeutet, dass gesperrte Objektversionen vor Ablauf der Aufbewahrungsfrist nicht gekürzt oder gelöscht werden können, selbst von einem Administrator nicht.

Zeitpläne und Jobs

Beide Jobs laufen stündlich (0 * * * *) mit concurrencyPolicy: Forbid.

1) ConnectCloud

  • CronJob: s3backup-ionos-connectcloud-to-hetzner
  • Vertragsprefix (Contract Prefix): connectcloud

2) ELO

  • CronJob: s3backup-ionos-elo-to-hetzner
  • Vertragsprefix: elo

Laufzeit und Skript-Verhalten

Container-Laufzeit:

  • Image: alpine:3.20
  • Entrypoint installiert rclone, aws-cli, ca-certificates und führt dann /config/backup.sh aus

Gemeinsames Skript-Verhalten (s3backup-config ConfigMap):

  1. Validiert die Hetzner-Zugangsdaten und Vertragsparameter.
  2. Erstellt eine temporäre Hetzner-rclone-Remote-Konfiguration.
  3. Listet Quell-Buckets vom konfigurierten IONOS-Remote auf.
  4. Filtert ausgeschlossene Buckets (gemäß Vertrag).
  5. Kopiert jeden Bucket mit rclone copy.
  6. Führt Bucket-Kopien parallel aus (BUCKET_PARALLELISM, derzeit 6).
  7. Beendet mit einem Exit-Code ungleich Null, wenn eine oder mehrere Bucket-Kopien fehlschlagen.

Behandlung von Ziel-Buckets

Für jeden Quell-Bucket:

  • Der Zielname wird auf ${CONTRACT_PREFIX}-${source_bucket} normalisiert.
  • Der Bucket wird bei Bedarf erstellt, falls er fehlt.
  • Beim Erstellen wendet das Skript Folgendes an:
    • Versioning: Enabled (Versionierung: Aktiviert)
    • Object-Lock Standardaufbewahrung: COMPLIANCE, 14 Tage

Dies erzwingt eine unveränderliche Aufbewahrung auf der Ebene des Ziel-Buckets für neu geschriebene Objekte.

Datenfluss

  1. Der CronJob startet stündlich.
  2. Der Job liest Bucket-/Objektdaten aus IONOS S3 über eine vertragsspezifische rclone.conf.
  3. Der Job kopiert diese in die Hetzner-Buckets mit entsprechendem Präfix.
  4. Hetzner speichert Versionen und wendet die Object-Lock-Aufbewahrung an (14 Tage, Compliance).

Grundlegendes Ziel:

  • RPO (Recovery Point Objective): bis zu 1 Stunde für Objektdaten.

Sicherheit und Isolation

  • Es existiert eine providerübergreifende Grenze (IONOS -> Hetzner).
  • Hetzner-Zugangsdaten werden aus dem Secret s3backup-hetzner-s3 injiziert.
  • Vertragsspezifische IONOS-Zugangsdaten werden über dedizierte Secrets bereitgestellt.
  • Die Backup-Laufzeit ist im Namespace s3backup isoliert.

Wiederherstellungsstrategie

Die Quelle der Wahrheit (Source of Truth) für Wiederherstellungen bei Vorfällen ist der Hetzner-Backup-Bucket.

Typischer Wiederherstellungsablauf:

  1. Identifizieren des betroffenen Objektsatzes und des Vorfalls-Zeitstempels.
  2. Auswählen der korrekten Objektversionen von Hetzner (zum Zeitpunkt des Vorfalls oder davor).
  3. Zunächst Wiederherstellung in einen Staging-Pfad oder eine isolierte Umgebung.
  4. Validieren der Integrität und des Anwendungshaltens.
  5. Übertragen der wiederhergestellten Objekte zurück in die Produktionspfade.

Überwachung und Verifizierung

Mindestkontrollen:

  • Überwachung des Status von CronJob/Job für beide Verträge
  • Alarmierung bei fehlgeschlagenen stündlichen Durchläufen
  • Überprüfung der Protokolle auf übersprungene/ausgeschlossene Buckets und fehlgeschlagene Bucket-Kopien
  • Periodische Wiederherstellungstests auf Objektebene

Empfohlener Testrhythmus:

  • Monatlich: Stichprobenartiger Wiederherstellungstest
  • Quartalsweise: Größere Wiederherstellungsübung für kritische Buckets

Zusammenfassung

Die aktuelle Implementierung bietet ein stündliches, anbieterübergreifendes S3-Backup von IONOS zu Hetzner mit einer unveränderlichen 14-tägigen Aufbewahrung im Compliance-Modus. ELO-Testbuckets sind explizit vom Backup-Umfang ausgeschlossen.