Files
infrastructure/VAULT_RESET.md
2026-01-09 13:48:41 +00:00

89 lines
3.1 KiB
Markdown

# Vault Reset Guide
Dieses Dokument beschreibt, wie du HashiCorp Vault komplett zurücksetzt, falls das **Root Token** verloren gegangen ist oder die Instanz irreparabel beschädigt scheint.
**⚠️ ACHTUNG: DATENVERLUST!**
Dieser Vorgang löscht unwiderruflich:
* Alle gespeicherten Secrets (Passwörter, Tokens).
* Alle konfigurierten User, Policies und Engines.
* Das Zertifikat (CA).
Du musst anschließend alle Secrets neu einspielen (via `setup_vault_secrets.sh`).
---
## Schritt 1: Vault Container & Daten löschen
Führe dies auf deinem Management-Host (`vm-management-200`) aus. Wir nutzen SSH, um die Daten auf dem Vault-Server (`vm-docker-apps-301`) zu löschen.
```bash
# 1. Container stoppen und entfernen
ssh -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11 "docker stop vault-prod && docker rm vault-prod"
# 2. Persistente Daten löschen (File Storage & Zertifikate)
ssh -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11 "sudo rm -rf /opt/vault/file/* /opt/vault/certs/*"
```
---
## Schritt 2: Neu-Deployment
Jetzt lassen wir Ansible den Container neu starten. Da die Verzeichnisse leer sind, wird das `entrypoint.sh` Skript:
1. Neue Zertifikate generieren.
2. Vault neu initialisieren.
3. Neue Unseal-Keys und ein neues Root-Token erstellen.
```bash
# Wechsel in das Ansible Verzeichnis
cd infrastructure/ansible
# Playbook ausführen (ignoriere 'Permission denied' Fehler bei Secrets, da Vault leer ist)
ansible-playbook -i inventory.ini deploy.yml
```
---
## Schritt 3: Neue Zugangsdaten abholen
Der neue Vault ist nun gestartet. Wir müssen uns die neuen "Schlüssel zum Königreich" holen.
```bash
# 1. Neues Root Token auslesen
# (ACHTUNG: Speichere dieses Token sofort in deinem Passwort-Manager!)
ssh -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11 "sudo cat /opt/vault/file/init_keys.json"
# 2. Neues CA Zertifikat holen
# (Sonst vertraut dein PC dem neuen Vault nicht)
scp -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11:/opt/vault/certs/ca.crt ../../vault-ca.crt
```
---
## Schritt 4: Secrets wiederherstellen
Nun nutzen wir unser Setup-Skript, um die Secrets aus deiner (hoffentlich noch vorhandenen oder neu erstellten) `bootstrap.tfvars` wieder einzuspielen.
1. **Vorbereitung:**
Falls du `terraform/bootstrap.tfvars` gelöscht hattest, musst du sie neu erstellen (siehe `README.md` -> Phase 1).
2. **Import:**
```bash
cd ../.. # Ins Root des Repos
./setup_vault_secrets.sh
```
* Gib das **neue** Root-Token ein (aus Schritt 3).
* Das Skript aktiviert die Engines und schreibt die Secrets neu.
---
## Schritt 5: Clients aktualisieren
Da wir eine neue CA haben, musst du das Zertifikat ggf. neu verteilen:
* **Browser:** Importiere das neue `vault-ca.crt` in Firefox/Chrome.
* **Linux Desktop:** Kopiere es nach `/usr/local/share/ca-certificates/` und führe `update-ca-certificates` aus.
* **Terraform:** Das Environment (`VAULT_CACERT`) zeigt meist eh auf die Datei im Repo (`./vault-ca.crt`), die wir in Schritt 3 überschrieben haben -> Sollte direkt gehen.
🎉 **Fertig!** Dein Vault ist frisch aufgesetzt.