From 6f74642659b6c4eefe77ffa9b6207e3dce90f950 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Fri, 14 Aug 2026 12:00:00 +0000 Subject: [PATCH] =?UTF-8?q?docs(adr):=20ADR-0016=20=E2=80=94=20notfallhand?= =?UTF-8?q?buch=20stays=20lab-internal,=20no=20mirror?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Standing exception to ADR-0001 (everything is push-mirrored to Gitea). The handbook necessarily maps the infrastructure, the backup locations and where the keys are kept; mirroring it onto the internet-facing host that is itself one of the covered failure cases would hand a post-compromise attacker their next step. Confidentiality over availability, with a local clone closing the availability gap. Records the rejected alternatives so the question does not reopen. Co-Authored-By: Claude Opus 4.8 --- STATUS.md | 3 +- .../0016-notfallhandbuch-nicht-spiegeln.md | 72 +++++++++++++++++++ ...estore-ist-nie-geprobt-sicherungen-sind.md | 7 +- 3 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 docs/adr/0016-notfallhandbuch-nicht-spiegeln.md diff --git a/STATUS.md b/STATUS.md index de2b389..dc3baf3 100644 --- a/STATUS.md +++ b/STATUS.md @@ -45,7 +45,7 @@ Verteilung: M1 7 · M2 19 · M4 2 · M5 4 _none active_ -## ADRs (15) +## ADRs (16) | ADR | Status | Title | |---|---|---| @@ -64,6 +64,7 @@ _none active_ | [0013](docs/adr/0013-gruppenregeln-kanonisch-mit-pruefung.md) | accepted | ADR-0013: Gruppenregeln kanonisch im management-Repo, Komponenten zeigen und werden geprüft | | [0014](docs/adr/0014-wikijs-loest-docusaurus-ab.md) | accepted | 0014 — Wiki.js löst Docusaurus ab: abgeschottete Betriebs-/Anwenderdoku, docs-as-code | | [0015](docs/adr/0015-wiki-git-storage-ueber-gitea-kanonisieren.md) | accepted | 0015 — Wiki.js Git-Storage: Inhalt fließt Cluster→Gitea→kanonisiert nach git.lab | +| [0016](docs/adr/0016-notfallhandbuch-nicht-spiegeln.md) | accepted | 0016 — Das Notfallhandbuch bleibt lab-intern und wird nicht gespiegelt | ## Open AARs (2) diff --git a/docs/adr/0016-notfallhandbuch-nicht-spiegeln.md b/docs/adr/0016-notfallhandbuch-nicht-spiegeln.md new file mode 100644 index 0000000..52fc14a --- /dev/null +++ b/docs/adr/0016-notfallhandbuch-nicht-spiegeln.md @@ -0,0 +1,72 @@ +--- +type: adr +id: "0016" +status: accepted +date: 2026-08-14 +supersedes: null +superseded_by: null +related: + - "docs/adr/0001-gitlab-kanonisch-push-mirror.md" + - "docs/issues/0030-der-restore-ist-nie-geprobt-sicherungen-sind.md" +--- + +# 0016 — Das Notfallhandbuch bleibt lab-intern und wird nicht gespiegelt + +**Status:** akzeptiert · **Datum:** 2026-08-14 · **Entscheider:** sorb + +## Kontext + +ADR-0001 legt fest: git.lab ist kanonisch, **alle** Repos werden per Push-Mirror nach +Gitea (`rohana.axion1337.de`) beliefert. Das dient der Verfügbarkeit — Gitea ist von +überall erreichbar, git.lab nur im Lab bzw. über VPN. + +Am 2026-08-14 entstand mit `axion1337.chat/notfallhandbuch` ein Repo, dessen Inhalt +qualitativ anders ist als Code oder Konfiguration: Es beschreibt die Wiederherstellung +der Plattform und damit zwangsläufig **den Aufbau der Infrastruktur, den Ablageort der +Sicherungen (Storage Box, Borg-Repos) und wo die Schlüssel zu finden sind** (Vault, +`sops-age`, die Kette bis zur Borg-Passphrase). Werte enthält es nicht — aber die +vollständige Landkarte dorthin. + +Rein aus Verfügbarkeitssicht wäre ein Mirror besonders naheliegend: git.lab ist genau +dann nicht erreichbar, wenn man das Handbuch am dringendsten braucht. Diese Empfehlung +wurde in #0030 zunächst auch so gegeben. + +## Entscheidung + +**Das Notfallhandbuch wird bewusst NICHT nach Gitea gespiegelt** und bleibt +ausschließlich auf git.lab — eine dauerhafte Ausnahme von ADR-0001. + +Begründung: Gitea/rohana ist aus dem Internet erreichbar und Teil des Stacks, den das +Handbuch wiederherstellen soll. Wird dieser Stack kompromittiert, wäre ein dort +gespiegeltes Notfallhandbuch genau die Aufklärung, die ein Angreifer für den nächsten +Schritt braucht — Backup-Ziele, Schlüsselverwahrung, Wiederanlaufpfade. Ein Angreifer +mit rohana-Zugriff soll **nicht** zusätzlich erfahren, wo die Sicherungen liegen. + +**Vertraulichkeit geht hier vor Verfügbarkeit.** + +Die Verfügbarkeitslücke wird stattdessen über einen **lokalen Clone** geschlossen +(Laptop, verschlüsselter Datenträger), der nach Änderungen aktualisiert wird. Das ist +eine Kopie unter eigener Kontrolle, kein öffentlich erreichbarer Spiegel. + +## Konsequenzen + +- **Kein Mirror einrichten** — auch nicht „der Vollständigkeit halber" oder beim + Vereinheitlichen der Mirror-Konfiguration. Die Begründung steht zusätzlich im README + des Repos, weil dort zuerst hinschaut, wer die Lücke bemerkt. +- Ohne Lab-Zugang (unterwegs, Lab offline) ist das Repo nicht abrufbar. **Der lokale + Clone ist damit Teil des Notfallkonzepts**, nicht bloß Bequemlichkeit — veraltet er, + verliert man im Ernstfall den aktuellen Stand. +- Das Handbuch darf weiterhin **keine Secret-Werte** enthalten, nur Fundorte. Die + Vertraulichkeit dieses Repos ist eine zusätzliche Schutzschicht, kein Ersatz für die + Secrets-Hygiene. +- Andere Repos bleiben von dieser Ausnahme unberührt; ADR-0001 gilt für sie weiter. + +## Verworfene Alternativen + +- **Mirror wie bei allen anderen Repos:** verworfen — verlagert das Handbuch auf genau + den Host, dessen Kompromittierung einer der abgedeckten Fälle ist. +- **Mirror in ein privates Gitea-Repo:** verworfen — der Schutz stünde und fiele mit der + Gitea-Rechteverwaltung, also erneut mit der Integrität des kompromittierten Systems. +- **Handbuch ohne Fundorte schreiben** (damit es gefahrlos spiegelbar wäre): verworfen — + ein Notfallhandbuch, das verschweigt, wo die Sicherungen und Schlüssel liegen, ist im + Ernstfall wertlos. diff --git a/docs/issues/0030-der-restore-ist-nie-geprobt-sicherungen-sind.md b/docs/issues/0030-der-restore-ist-nie-geprobt-sicherungen-sind.md index ebe5829..7ee2fd0 100644 --- a/docs/issues/0030-der-restore-ist-nie-geprobt-sicherungen-sind.md +++ b/docs/issues/0030-der-restore-ist-nie-geprobt-sicherungen-sind.md @@ -7,7 +7,7 @@ milestone: M1 priority: medium area: security gitlab_iid: "30" -related: [] +related: [docs/adr/0016-notfallhandbuch-nicht-spiegeln.md] --- # Der Restore ist nie geprobt — Sicherungen sind bisher eine Vermutung @@ -187,6 +187,5 @@ spiegeln, war damit falsch — sie hatte nur die Verfügbarkeit im Blick.) Die V einen Mirror. Begründung steht im README des Notfallhandbuchs, damit sie nicht erneut "wegoptimiert" wird. -Das ist eine **dauerhafte Ausnahme von der Spiegel-Topologie** (ADR-0001) — nach dem Framework -(ADR-Pflicht auch für dauerhafte Regel-Ausnahmen) wäre dafür ein eigener ADR fällig; bislang nur -hier und im README festgehalten. +Das ist eine **dauerhafte Ausnahme von der Spiegel-Topologie** (ADR-0001) und daher als +**ADR-0016** festgehalten.