HashiCorp Vault – Secrets sicher verwalten 2025

Passwörter und API-Keys zentral und verschlüsselt speichern

S
SeeColors IT
11. Juni 20264 Min. Lesezeit84 Aufrufe

Vault installieren

# Ubuntu
wget -O- https://apt.releases.hashicorp.com/gpg |     gpg --dearmor |     tee /usr/share/keyrings/hashicorp-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg]     https://apt.releases.hashicorp.com $(lsb_release -cs) main" |     tee /etc/apt/sources.list.d/hashicorp.list

apt update && apt install -y vault

# Version
vault version

Dev-Server (Test, kein Produktivbetrieb!)

# Dev-Server starten (alles im RAM, kein TLS)
vault server -dev -dev-root-token-id="root"

# In neuem Terminal:
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='root'

vault status

Produktiv-Deployment (Docker)

# docker-compose.yml
services:
  vault:
    image: hashicorp/vault:1.17
    ports:
      - "8200:8200"
    environment:
      VAULT_ADDR: 'https://0.0.0.0:8200'
      VAULT_API_ADDR: 'https://vault.firma.de:8200'
    cap_add:
      - IPC_LOCK
    volumes:
      - ./vault-config:/vault/config
      - ./vault-data:/vault/data
    command: vault server -config=/vault/config/vault.hcl

Secrets speichern und lesen

# KV Secrets Engine aktivieren
vault secrets enable -path=secret kv-v2

# Secret speichern
vault kv put secret/meine-app     db_password="SuperGeheimesPasswort"     api_key="mein-api-key-12345"

# Secret lesen
vault kv get secret/meine-app
vault kv get -field=db_password secret/meine-app

# Secret aus Anwendung (HTTP API)
curl     --header "X-Vault-Token: $VAULT_TOKEN"     --request GET     $VAULT_ADDR/v1/secret/data/meine-app | jq .data.data

Dynamic Credentials (PostgreSQL)

# Database Secrets Engine aktivieren
vault secrets enable database

# PostgreSQL konfigurieren
vault write database/config/postgresql     plugin_name="postgresql-database-plugin"     allowed_roles="app-role"     connection_url="postgresql://vault-admin:password@db:5432/appdb"

# Rolle definieren (temporäre Credentials)
vault write database/roles/app-role     db_name="postgresql"     creation_statements="CREATE ROLE "{{name}}" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO "{{name}}";"     default_ttl="1h"     max_ttl="24h"

# Temporäre Credentials anfordern
vault read database/creds/app-role
# Erzeugt: username=v-app-role-AbCdEf, password=<random>, lease=1h

PKI – interne CA

# PKI Secrets Engine = interne Certificate Authority
vault secrets enable pki
vault secrets tune -max-lease-ttl=87600h pki

# Root CA generieren
vault write -field=certificate pki/root/generate/internal     common_name="Firma Internal CA"     ttl=87600h > firma-ca.crt

# Zertifikate ausstellen (automatisch)
vault write pki/roles/intern     allowed_domains="firma.local,firma.de"     allow_subdomains=true     max_ttl=720h

vault write pki/issue/intern     common_name="app.firma.local"

FAQ

Wie verwalten wir Vault-Tokens sicher?
Für Anwendungen AppRole-Authentifizierung nutzen. Kubernetes-Umgebungen nutzen den Vault Kubernetes Auth. Root-Token nur für Bootstrap, danach sicher verwahren.

Fazit

HashiCorp Vault beseitigt die Hauptursache für Datenpannen: hart-codierte Credentials in Code und Konfigurationsdateien.

Secrets Management für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Verwandte Artikel