• v0.1.0 3ca09045fe

    Manuel released this 2026-08-23 10:37:31 +02:00 | 40 commits to main since this release

    Erste Fassung. Vollständiger Weg von der pgBackRest-Konfiguration bis zum
    Restore-Drill.

    Backup-Layer

    • Kommentierte pgbackrest.conf für Single-Node und Primary/Standby:
      block-inkrementelle Backups, Bundles, Prüfsummen, asynchrones WAL-Archiving.
    • Backups unkomprimiert (der PBS dedupliziert), WAL-Segmente mit zstd
      dort gibt es nichts zu deduplizieren.
    • archive-push-queue-max bewusst ungesetzt: die Option verwirft WAL und
      zerreißt still die PITR-Kette.
    • archive_timeout = 60s, damit das RPO im Leerlauf eine Minute ist und nicht
      „letztes Backup".
    • systemd-Timer für Full, Diff, Incr, verify, check, Globals- und
      DB-Dumps, alle mit OnFailure-Handler und PBS-Freeze-Sperre.

    Rollen und Einzel-DB-Restore

    • Parser für pg_dumpall-Dumps, der Passwort-Hashes mit Semikolon, quotierte
      Namen, GRANTED BY und die PG16-Mitgliedschaftsoptionen übersteht.
    • Ermittlung der benötigten Rollen aus Owner, GRANTs, Default Privileges und
      RLS-Policies, mit transitivem Abschluss in beide Richtungen.
    • Additiver Plan mit Begründung je Rolle. Bestehende Rollen werden nie
      geändert, nie gelöscht.
    • Rollen mit SUPERUSER, CREATEROLE, CREATEDB, REPLICATION oder
      BYPASSRLS werden blockiert, bis sie ausdrücklich freigegeben sind.
    • Owner- und ACL-Vergleich nach dem Restore.

    Hub und Agent

    • Der Hub schickt Absichten, keine Kommandozeilen. Das argv baut der Agent
      aus seiner eigenen Konfiguration.
    • mTLS mit beidseitiger Common-Name-Prüfung.
    • Ein einziger sudo-Eintrag ohne Wildcard; alles Privilegierte läuft über den
      walross-exec-Helper, der jede Absicht erneut prüft.
    • Langläufer als transiente systemd-Units — ein Neustart des Hubs schneidet
      kein Restore ab.
    • Lokaler read_only-Schalter je Host, unabhängig vom Rollenmodell.

    Oberfläche

    • Dashboard mit Ampel je Stanza, Backup-Liste, Aktionen mit Live-Log (SSE),
      Restore-Wizard, Rollen-Diff, Logs, Konfiguration, Audit.
    • OIDC gegen authentik mit PKCE; die Anwendung validiert das Token selbst.
    • Rollen viewer, operator, admin über den Gruppen-Claim. Kein passender
      Claim heißt: kein Zugang.
    • Maschinenzugriff über Client Credentials, /api/v1/status?format=prometheus.
    • Globaler Read-only-Modus, der auch Admins sperrt.

    Betrieb

    • install.sh (idempotent, --agent/--hub/--both, --wheels für Hosts
      ohne Internet) und uninstall.sh.
    • restore-drill.sh: Probelauf gegen eine Wegwerf-Instanz mit Owner- und
      ACL-Vergleich, --archive-mode=off fest verdrahtet.
    • Ansible-Rollen walross_agent und walross_hub samt Playbooks.
    • 135 Tests: Rollen-Extraktion, Autorisierung (jeder schreibende Endpoint mit
      viewer → 403) und Kommandoerzeugung.
    Downloads