Skip to main content

Sicherheit

Sicherheit ist von größter Bedeutung bei der Automatisierung. Erfahren Sie, wie Sie Ihre Automate-Workflows sicher konfigurieren und sensible Daten schützen.

Sicherheitsgrundlagen

Credentials schützen

Speichern Sie Credentials sicher und niemals im Code.

Datenverschlüsselung

Verwenden Sie Verschlüsselung für sensible Daten.

Audit-Logging

Protokollieren Sie alle wichtigen Aktionen.

Credential-Management

Environment Variables

Nutzen Sie Environment Variables für sensible Daten:
Environment Variables konfigurieren:
  1. Navigieren Sie zu Workflow-Einstellungen
  2. Öffnen Sie “Environment Variables”
  3. Fügen Sie Variablen hinzu:
API_KEY=your-secret-key
DATABASE_PASSWORD=secure-password
WEBHOOK_SECRET=secret-token
Niemals Credentials direkt in Nodes hardcoden!
In Nodes verwenden:
{
  "url": "https://api.example.com/data",
  "headers": {
    "Authorization": "Bearer {{ $env.API_KEY }}"
  }
}
Sicherheitsrichtlinien:
  • Verwenden Sie starke, eindeutige Passwörter
  • Rotieren Sie Credentials regelmäßig
  • Nutzen Sie unterschiedliche Credentials für verschiedene Umgebungen
  • Speichern Sie Secrets nie in Git

Credential-Storage

Automate Credential Store

Nutzen Sie den integrierten Credential Store:
  • Sichere Speicherung
  • Verschlüsselt
  • Zugriffskontrolle

External Secret Manager

Für Enterprise:
  • AWS Secrets Manager
  • HashiCorp Vault
  • Azure Key Vault

Datenverschlüsselung

Sensible Daten verschlüsseln

{
  "sensitiveFields": [
    "password",
    "creditCard",
    "ssn",
    "apiKey"
  ],
  "encryption": {
    "method": "AES-256",
    "keyManagement": "Key Vault"
  }
}

HTTPS verwenden

Immer HTTPS verwenden:
  • Für alle API-Calls
  • Für Webhooks
  • Für Datenübertragung

Webhook-Sicherheit

Sichern Sie Webhooks mit Authentifizierung:
Kritisch: Webhooks ohne Authentifizierung sind ein Sicherheitsrisiko! Implementieren Sie immer mindestens eine Authentifizierungsmethode.

Authentifizierungsmethoden für Webhooks

Automate bietet mehrere Methoden zur Absicherung von Webhooks:
Benutzername und Passwort:
{
  "authentication": "basicAuth",
  "user": "webhook_user",
  "password": "{{ $env.WEBHOOK_PASSWORD }}"
}
Vorteile:
  • Einfach zu implementieren
  • Unterstützt von allen HTTP-Clients
  • Gut für interne Systeme
Nachteile:
  • Passwort muss sicher übertragen werden
  • Weniger sicher als Token-basierte Methoden
API-Key im Header:
{
  "authentication": "headerAuth",
  "name": "X-API-Key",
  "value": "{{ $env.WEBHOOK_API_KEY }}"
}
Vorteile:
  • Flexibel und anpassbar
  • Einfach zu rotieren
  • Gut für API-Integrationen
Best Practice:
  • Verwenden Sie starke, zufällige API-Keys
  • Speichern Sie Keys in Environment Variables
  • Rotieren Sie Keys regelmäßig
Bearer Token Authentifizierung:
{
  "authentication": "bearerToken",
  "token": "{{ $env.WEBHOOK_BEARER_TOKEN }}"
}
Vorteile:
  • Standard HTTP-Authentifizierungsmethode
  • Gut für OAuth2-Integrationen
  • Einfach zu implementieren
Best Practice:
  • Verwenden Sie JWT-Tokens für erweiterte Features
  • Implementieren Sie Token-Ablauf
  • Validiere Token-Signatur
JSON Web Token Validierung:
{
  "authentication": "jwtAuth",
  "secret": "{{ $env.JWT_SECRET }}",
  "algorithm": "HS256",
  "issuer": "your-app",
  "audience": "webhook-receiver"
}
Vorteile:
  • Sehr sicher
  • Unterstützt Token-Ablauf
  • Kann Claims enthalten (User-ID, Berechtigungen)
  • Standardisiert (RFC 7519)
Verwendung:
  • Für hochsensible Webhooks
  • Wenn User-Identität benötigt wird
  • Für Multi-Tenant-Systeme
HMAC-SHA256 Signatur-Validierung:
const crypto = require('crypto');

const secret = $env.WEBHOOK_SECRET;
const signature = $headers['x-signature'];
const body = JSON.stringify($json);

const expectedSignature = crypto
  .createHmac('sha256', secret)
  .update(body)
  .digest('hex');

if (signature !== expectedSignature) {
  throw new Error('Invalid signature');
}

return [{ json: { valid: true } }];
Vorteile:
  • Sehr sicher (kryptographisch signiert)
  • Verhindert Manipulation
  • Verifiziert Absender
Verwendung:
  • Für kritische Webhooks
  • Wenn Datenintegrität wichtig ist
  • Für externe Systeme

Webhook-Sicherheits-Checkliste

  • Mindestens eine Authentifizierungsmethode ist implementiert
  • Secrets sind in Environment Variables gespeichert
  • Webhook-URLs enthalten keine Secrets
  • HTTPS wird verwendet (nicht HTTP)
  • IP-Whitelisting ist konfiguriert (optional, aber empfohlen)
  • Rate Limiting ist aktiviert
  • Webhook-Signaturen werden validiert
  • Fehlgeschlagene Authentifizierungsversuche werden geloggt

Zusätzliche Sicherheitsmaßnahmen

Beschränken Sie Zugriff auf bekannte IPs:Beschränken Sie den Zugriff auf Ihre Webhooks auf bekannte IP-Adressen, um unbefugten Zugriff zu verhindern.
const allowedIPs = ['192.168.1.100', '10.0.0.50'];
const clientIP = $headers['x-forwarded-for'] || $headers['x-real-ip'];

{{ allowedIPs.includes(clientIP) }}
Best Practice: Verwenden Sie IP-Whitelisting zusätzlich zu anderen Authentifizierungsmethoden für zusätzliche Sicherheit.
Begrenzen Sie Request-Rate:Rate Limiting verhindert Missbrauch und DDoS-Angriffe, indem die Anzahl der Requests pro Zeitintervall begrenzt wird.Implementierung:
  • Konfigurieren Sie Rate Limits im Webhook-Node
  • Implementieren Sie Backoff bei Überschreitung
  • Loggen Sie Rate-Limit-Verletzungen für Monitoring
const rateLimit = 100; // Requests pro Minute
const currentCount = $workflow.staticData.requestCount || 0;
const lastReset = $workflow.staticData.lastReset || Date.now();

// Reset nach 1 Minute
if (Date.now() - lastReset > 60000) {
  $workflow.staticData.requestCount = 0;
  $workflow.staticData.lastReset = Date.now();
}

if (currentCount >= rateLimit) {
  throw new Error('Rate limit exceeded');
}

$workflow.staticData.requestCount = currentCount + 1;
Verhindern Sie Replay-Angriffe:Timestamp-Validierung stellt sicher, dass Requests nicht zu alt sind und verhindert Replay-Angriffe, bei denen alte Requests erneut gesendet werden.
const requestTime = parseInt($headers['x-timestamp']);
const currentTime = Date.now();
const maxAge = 5 * 60 * 1000; // 5 Minuten

{{ Math.abs(currentTime - requestTime) < maxAge }}
Empfehlung: Verwenden Sie eine maximale Alter von 5-15 Minuten, abhängig von Ihrer Anwendungslogik.
Verhindern Sie doppelte Requests:Nonce (Number Used Once) Validierung stellt sicher, dass jeder Request nur einmal verarbeitet wird, auch wenn er mehrfach gesendet wird.
const nonce = $headers['x-nonce'];
const seenNonces = $workflow.staticData.seenNonces || [];

if (seenNonces.includes(nonce)) {
  throw new Error('Duplicate request');
}

seenNonces.push(nonce);
$workflow.staticData.seenNonces = seenNonces.slice(-1000);
Best Practice: Kombinieren Sie Nonce-Validierung mit Timestamp-Validierung für maximale Sicherheit.

Beispiel: Sichere Webhook-Konfiguration

Vollständiges Beispiel mit mehreren Sicherheitsebenen:
{
  "path": "/webhook/secure",
  "httpMethod": "POST",
  "authentication": "headerAuth",
  "name": "X-API-Key",
  "value": "{{ $env.WEBHOOK_API_KEY }}",
  "responseMode": "responseNode"
}

Input-Validierung

Daten validieren

// Validiere E-Mail-Format
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(input.email)) {
  throw new Error('Invalid email format');
}

// Validiere Datentypen
if (typeof input.userId !== 'string') {
  throw new Error('userId must be string');
}

// Validiere Wertebereich
if (input.amount < 0 || input.amount > 10000) {
  throw new Error('Amount out of range');
}

SQL-Injection verhindern

Bei Datenbankabfragen:
  • Verwenden Sie Parameterized Queries
  • Niemals User-Input direkt in SQL einfügen
  • Validieren Sie alle Inputs
const query = 'SELECT * FROM users WHERE id = ?';
const result = await db.query(query, [userId]);

Audit-Logging

Wichtige Events protokollieren

{
  "timestamp": "2024-01-15T10:30:00Z",
  "event": "workflow_executed",
  "workflow": "welcome-email",
  "user": "user@example.com",
  "status": "success",
  "executionTime": 2.5,
  "ipAddress": "192.168.1.1"
}

Best Practices

Principle of Least Privilege

Gewähren Sie nur die minimal notwendigen Berechtigungen.

Regelmäßige Audits

Führen Sie regelmäßige Sicherheitsaudits durch.

Credential Rotation

Rotieren Sie Credentials regelmäßig.

Security Updates

Halten Sie Automate und Dependencies aktuell.

Backup-Sicherheit

Verschlüsseln Sie Backups und schützen Sie sie.

Monitoring

Überwachen Sie auf verdächtige Aktivitäten.

Sicherheits-Checkliste

  • Alle Credentials sind in Environment Variables gespeichert
  • Keine hardcodierten Secrets im Code
  • HTTPS wird für alle Verbindungen verwendet
  • Input-Validierung ist implementiert
  • Audit-Logging ist aktiviert
  • Backups sind verschlüsselt
  • Security Updates werden regelmäßig installiert

Häufige Sicherheitsfehler

Problem: Credentials sind direkt im CodeLösung:
  • Verwenden Sie Environment Variables
  • Nutzen Sie Credential Store
  • Niemals in Git committen
Problem: HTTP statt HTTPS verwendetLösung:
  • Immer HTTPS verwenden
  • Validiere SSL-Zertifikate
  • Nutzen Sie TLS 1.2+
Problem: User-Input wird nicht validiertLösung:
  • Validiere alle Inputs
  • Nutzen Sie Whitelisting
  • Sanitize User-Input

Weiterführende Themen: Lesen Sie auch unsere Seiten zu Compliance & Security für weitere Sicherheitsrichtlinien.