Files
2025-11-24 21:28:25 +01:00

2.7 KiB

Secrets Management

Anleitung zur Verwaltung von Secrets für die Infrastruktur-Stacks.

Übersicht

Secrets werden als Dateien in secrets/ Verzeichnissen pro Stack gespeichert und via Docker Secrets in Container eingebunden.

Secrets-Struktur

infrastructure/
├── traefik/secrets/
│   └── acme_email.txt
├── gitea/secrets/
│   ├── postgres_password.txt
│   └── redis_password.txt
└── postgresql/secrets/
    └── postgres_password.txt

Secrets-Generierung

Passwort-Generierung

# Sichere Passwort-Generierung (32 Bytes, Base64)
openssl rand -base64 32 > secrets/password.txt
chmod 600 secrets/password.txt

E-Mail für Let's Encrypt

# Traefik ACME E-Mail
echo "your-email@example.com" > traefik/secrets/acme_email.txt
chmod 600 traefik/secrets/acme_email.txt

Setup pro Stack

Traefik

cd traefik
echo "your-email@example.com" > secrets/acme_email.txt
chmod 600 secrets/acme_email.txt

Gitea

cd gitea
openssl rand -base64 32 > secrets/postgres_password.txt
openssl rand -base64 32 > secrets/redis_password.txt
chmod 600 secrets/*.txt

PostgreSQL

cd postgresql
openssl rand -base64 32 > secrets/postgres_password.txt
chmod 600 secrets/postgres_password.txt

Sicherheitsrichtlinien

  1. Nie committen: Secrets-Dateien sind gitignored
  2. Sichere Berechtigungen: Immer chmod 600 für Secrets-Dateien
  3. Rotation: Passwörter regelmäßig rotieren (empfohlen: alle 90 Tage)
  4. Backup: Secrets sicher aufbewahren (verschlüsselt)

Secrets-Rotation

Passwort ändern

  1. Neues Passwort generieren
  2. Passwort in Secrets-Datei aktualisieren
  3. Stack neu starten: docker compose restart
  4. Services aktualisieren, die das Passwort nutzen

Beispiel (PostgreSQL):

# Neues Passwort generieren
openssl rand -base64 32 > secrets/postgres_password.txt.new

# Passwort in Datenbank ändern
docker compose exec postgres psql -U postgres -c "ALTER USER postgres WITH PASSWORD '$(cat secrets/postgres_password.txt.new)';"

# Secrets-Datei aktualisieren
mv secrets/postgres_password.txt.new secrets/postgres_password.txt

# Stack neu starten
docker compose restart

Backup von Secrets

Wichtig: Secrets müssen sicher gesichert werden!

# Secrets verschlüsselt sichern (z.B. mit GPG)
tar czf secrets-backup.tar.gz infrastructure/*/secrets/
gpg -c secrets-backup.tar.gz
rm secrets-backup.tar.gz

# Oder mit Ansible Vault
ansible-vault encrypt secrets-backup.tar.gz

Wiederherstellung

# Secrets aus Backup wiederherstellen
gpg -d secrets-backup.tar.gz.gpg | tar xzf -
# Oder
ansible-vault decrypt secrets-backup.tar.gz
tar xzf secrets-backup.tar.gz
chmod 600 infrastructure/*/secrets/*