docs(adr): ADR-0016 — notfallhandbuch stays lab-internal, no mirror
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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
546e444a14
commit
6f74642659
@@ -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)
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user