stackit.guru

Secrets Management auf STACKIT

#security
security secrets encryption

Secrets Management auf STACKIT

Die sichere Verwaltung von Secrets wie Passwörtern, API-Keys und Zertifikaten ist essentiell für die Anwendungssicherheit.

Was sind Secrets?

Secrets sind sensible Informationen, die nicht im Code gespeichert werden sollten:

  • Datenbank-Passwörter
  • API-Keys und Tokens
  • SSL/TLS-Zertifikate
  • Verschlüsselungsschlüssel

:::danger Speichern Sie niemals Secrets in Git-Repositories oder im Klartext! :::

STACKIT Secrets Manager

STACKIT bietet einen zentralen Service für Secrets Management:

Secrets erstellen

# Secret erstellen
stackit secrets create \
  --name db-password \
  --value "super-secure-password" \
  --description "Production database password"

# Secret mit Datei
stackit secrets create \
  --name api-key \
  --file ./api-key.txt

Secrets in Anwendungen verwenden

// Node.js Beispiel
const { SecretsClient } = require('@stackit/secrets');

const client = new SecretsClient();
const dbPassword = await client.getSecret('db-password');

// Datenbankverbindung mit Secret
const db = await connectDatabase({
  host: 'db.stackit.cloud',
  user: 'admin',
  password: dbPassword
});

Verschlüsselung

Alle Secrets werden automatisch verschlüsselt:

  • At Rest: AES-256 Verschlüsselung
  • In Transit: TLS 1.3
  • Key Rotation: Automatische Schlüsselrotation
graph LR
    A[Application] -->|TLS| B[Secrets Manager]
    B -->|Encrypted| C[Storage]
    D[Master Key] -->|Encrypts| C

Zugriffskontrolle

Implementieren Sie das Prinzip der minimalen Rechte:

# IAM Policy für Secrets
policies:
  - name: read-db-secrets
    effect: Allow
    actions:
      - secrets:GetSecret
    resources:
      - arn:stackit:secrets:*:db-*
    principals:
      - service:app-backend

:::tip Verwenden Sie Service Accounts für Anwendungen statt persönlicher Credentials. :::

Secrets Rotation

Regelmäßige Rotation erhöht die Sicherheit:

# Automatische Rotation konfigurieren
stackit secrets rotation enable \
  --name db-password \
  --interval 90d \
  --lambda-function rotate-db-password

Rotation Best Practices

  1. Planen Sie Rotationen: Automatisieren Sie den Prozess
  2. Testen Sie Rotationen: In Staging-Umgebung
  3. Überwachen Sie Rotationen: Alerts bei Fehlern
  4. Dokumentieren Sie: Rotation-Prozeduren

Audit Logging

Überwachen Sie Zugriffe auf Secrets:

{
  "timestamp": "2024-02-05T10:30:00Z",
  "action": "GetSecret",
  "secret": "db-password",
  "principal": "app-backend",
  "result": "success",
  "sourceIP": "10.0.1.42"
}

Integration mit CI/CD

# GitHub Actions Beispiel
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Get Secrets
        run: |
          export DB_PASSWORD=$(stackit secrets get db-password)
          export API_KEY=$(stackit secrets get api-key)
      
      - name: Deploy Application
        run: ./deploy.sh

:::warning Verwenden Sie kurzlebige Tokens für CI/CD-Pipelines, keine langlebigen Credentials. :::

Notfall-Zugriff

Implementieren Sie Break-Glass-Verfahren für Notfälle:

  • Separate Notfall-Accounts mit MFA
  • Audit-Trail für Notfall-Zugriffe
  • Automatische Benachrichtigungen

Compliance und Standards

  • DSGVO: Verschlüsselung personenbezogener Daten
  • ISO 27001: Sichere Schlüsselverwaltung
  • PCI DSS: Schutz von Zahlungsdaten

Checkliste

  • Keine Secrets im Code oder Git
  • Verschlüsselung aktiviert
  • Zugriffskontrolle konfiguriert
  • Rotation implementiert
  • Audit Logging aktiviert
  • Notfall-Prozeduren dokumentiert