Die Sicherheit von API-Keys beruht auf vier Gewohnheiten: Geben Sie jedem Key die kleinstmögliche Menge an Berechtigungen, bewahren Sie ihn in einem richtigen Secret Store auf, rotieren Sie ihn ohne Ausfallzeit und halten Sie einen Plan für den Tag bereit, an dem einer geleakt wird. Ein geleakter Sendeschlüssel erlaubt es jedem, in Ihrem Namen E-Mails zu versenden, und gefährdet damit neben Ihren Daten auch Ihre Absenderreputation.
Prüfen Sie die Berechtigungsnamen in Ihrem Konto. Die Berechtigungsnamen in diesem Leitfaden sind Beispiele für das Muster. Verwenden Sie die Optionen, die Ihr MigoSMTP-Konto tatsächlich bietet, und wählen Sie die engste, die funktioniert.
Warum Keys geleakt werden
| Wie es zum Leak kommt | Beispiel | Vorbeugung |
|---|---|---|
| In ein Repository committet | Eine Konfigurationsdatei mit einem Key wird in ein öffentliches oder gemeinsames Repo gepusht | Umgebungsvariablen, Ignore-Dateien und Secret Scanning verwenden |
| An den Client ausgeliefert | Ein Key in JavaScript oder einer mobilen App | Stattdessen den eigenen Server aufrufen |
| In Chat oder Tickets geteilt | Ein Key, der in einen Support-Thread eingefügt wurde | Über einen Secret Manager teilen und bei Offenlegung rotieren |
| Auf einem ausgeschiedenen Konto belassen | Ein ehemaliger Auftragnehmer besitzt den Key noch | Rotieren, wenn Personen ausscheiden |
| Versehentlich protokolliert | Ein Debug-Log gibt Request-Header aus | Secrets in Logs maskieren |
| Kompromittierter Server | Malware liest Umgebungsvariablen aus | Server patchen und begrenzen, worauf jeder Server zugreifen kann |
Schritt 1: Ein Key pro Anwendung und Umgebung
Erstellen Sie getrennte Keys für Produktion, Staging und jede Anwendung, die E-Mails versendet. Benennen Sie sie so, dass Sie sie in einem Audit-Log wiedererkennen.
| Key-Name | Genutzt von | Berechtigung |
|---|---|---|
| shop-production | Der Onlineshop, Bestell-E-Mails | Nur Senden |
| shop-staging | Testumgebung | Nur Senden, an Testadressen |
| crm-production | Das CRM, Kampagnenversand | Senden und eigene Kontakte verwalten |
| webhooks-reader | Ein Reporting-Job | Nur Ereignisse lesen |
| ops-admin | Eine namentlich bekannte Person, seltene Aufgaben | Vollzugriff mit Zwei-Faktor-Authentifizierung |
Schritt 2: Least Privilege anwenden
Fragen Sie bei jedem Key: Was muss er mindestens können? Für den E-Mail-Versand muss man weder Ihre Kontaktliste lesen noch DNS ändern oder die Abrechnung verwalten, und ein Reporting-Job sollte überhaupt nicht senden können.
- Bevorzugen Sie einen reinen Sende-Key für jedes System, das nur Nachrichten zustellt.
- Behalten Sie Konto-, Abrechnungs- und Benutzerverwaltung Personen mit Zwei-Faktor-Authentifizierung vor, nicht Keys.
- Überprüfen Sie die Berechtigungen jedes Quartal und entfernen Sie, was nicht mehr gebraucht wird.
- Wenn Ihr Konto Einschränkungen nach IP-Adresse, Domain oder Ratenlimit anbietet, nutzen Sie sie. Welche verfügbar sind, sehen Sie in den Kontosicherheitseinstellungen.
Schritt 3: Keys sicher speichern
Laden Sie den Key zur Laufzeit aus der Umgebung oder einem Secret Manager. Ein minimales Muster sehen Sie unten.
# .env (never commit this file)
MIGOSMTP_API_KEY=replace-with-your-key
# .gitignore
.env
*.pem
<?php
$key = getenv('MIGOSMTP_API_KEY');
if (!$key) {
throw new RuntimeException('API key is not configured');
}
Secret Scanning ergänzen. Aktivieren Sie Secret Scanning bei Ihrem Code-Host und lassen Sie einen Scanner in Ihrer Build-Pipeline laufen. Er fängt Keys ab, bevor sie einen gemeinsamen Branch erreichen, und alarmiert Sie, falls doch einer durchrutscht.
Schritt 4: Ohne Ausfallzeit rotieren
- Den neuen Key erstellen. Geben Sie ihm dieselben Berechtigungen und einen Namen mit Datum oder Version.
- Speichern. Legen Sie ihn in Ihrem Secret Manager oder Ihrer Umgebungskonfiguration ab.
- Bereitstellen. Veröffentlichen Sie die Änderung und starten Sie die Dienste neu, die den Key lesen.
- Verifizieren. Prüfen Sie die Zustell-Logs, um zu bestätigen, dass der Traffic den neuen Key nutzt.
- Den alten Key widerrufen. Tun Sie dies erst, nachdem der Traffic umgezogen ist. Warten Sie kurz und prüfen Sie auf Fehler.
- Dokumentieren. Halten Sie Datum, Grund und die ausführende Person fest.
Schritt 5: Auf Missbrauch überwachen
| Signal | Was es bedeuten kann | Maßnahme |
|---|---|---|
| Volumen weit über dem Normalwert | Ein geleakter Key oder eine Schleife in Ihrem Code | Den Key pausieren und untersuchen |
| Neue oder unbekannte Empfänger | Mit Ihrem Key versandter Spam oder Phishing | Den Key widerrufen und Nachrichten prüfen |
| Versand zu ungewöhnlichen Zeiten | Automatisierter Missbrauch | Quell-IP prüfen und Zugriff einschränken |
| Steigende Bounces oder Beschwerden | Schlechte Empfänger oder Missbrauch | Suppression und Quellen prüfen, siehe die Spam-Checkliste |
| Anfragen von neuen IP-Adressen | Ein Key, der außerhalb Ihrer Server genutzt wird | Eine Allowlist hinzufügen und rotieren |
Wenn ein Key geleakt wird: die erste Stunde
| Minuten | Das ist zu tun |
|---|---|
| 0 bis 10 | Den Key widerrufen. Wenn Sie noch keinen Ersatz bereitstellen können, nehmen Sie lieber einen kurzen Ausfall als fortgesetzten Missbrauch in Kauf |
| 10 bis 30 | Einen neuen Key erstellen und bereitstellen. Normalen Versand bestätigen |
| 30 bis 60 | Das Zustell-Log auf Nachrichten prüfen, die Sie nicht gesendet haben. Beschwerde- und Bounce-Raten sowie Blocklisten kontrollieren |
| Danach | Herausfinden, wie es zum Leak kam, die Quelle beseitigen, verwandte Secrets rotieren und festhalten, was Sie gelernt haben |
Wurden in Ihrem Namen E-Mails versendet, folgen Sie dem Leitfaden zur Entfernung von Blocklisten und kontaktieren Sie den Support, damit die Kontoprüfung den nötigen Kontext hat.
Vermuten Sie, dass ein Key offengelegt wurde? Widerrufen Sie ihn zuerst und kontaktieren Sie uns dann mit dem Key-Namen und dem Zeitpunkt, damit wir Ihnen helfen können, den jüngsten Versand zu prüfen.
Weiterführende Literatur und Quellen
Häufig gestellte Fragen
Warum ist ein E-Mail-API-Key so sensibel?
Wer einen Sendeschlüssel besitzt, kann E-Mails in Ihrem Namen versenden. Angreifer nutzen geleakte Keys, um innerhalb von Minuten Phishing und Spam zu verschicken, was dazu führen kann, dass Ihre Domain und IP auf Blocklisten landen und Ihr Konto gesperrt wird. Der Schaden liegt in der Reputation, und deren Reparatur dauert Wochen.
Was bedeutet Least Privilege bei API-Keys?
Es bedeutet, dass jeder Key nur das darf, was seine Aufgabe erfordert, und nicht mehr. Ein Key, den ein Webformular zum Versenden von E-Mails nutzt, sollte weder Kontakte lesen noch Domains ändern oder die Abrechnung verwalten können. Wird er geleakt, bleibt der Schaden auf das begrenzt, was dieser Key durfte.
Sollte ich einen Key für alles verwenden?
Nein. Verwenden Sie für jede Anwendung und jede Umgebung einen eigenen Key. Wird einer geleakt, widerrufen Sie nur diesen Key, und Ihre Logs zeigen, aus welchem System eine Nachricht stammt. Gemeinsam genutzte Keys machen die Reaktion auf Vorfälle langsam und riskant.
Wo sollte ich API-Keys speichern?
Verwenden Sie Umgebungsvariablen oder einen Secret Manager und laden Sie sie zur Laufzeit. Legen Sie Keys nicht im Quellcode, im Frontend einer Website oder mobilen App, in öffentlichen Repositories, in Tickets oder im Chat ab. Tragen Sie Konfigurationsdateien, die Geheimnisse enthalten, in Ihre Ignore-Datei ein.
Wie oft sollte ich Keys rotieren?
Eine gängige Regel ist alle 90 Tage für Produktions-Keys sowie sofort, wenn eine Person mit Zugriff das Unternehmen verlässt, ein Laptop verloren geht oder ein Leak vermutet wird. Wichtiger als das Intervall ist, dass Sie einen Rotationsprozess haben, den Sie bereits geübt haben.
Wie rotiere ich einen Key ohne Ausfallzeit?
Erstellen Sie einen neuen Key, legen Sie ihn in Ihrem Secret Store ab, stellen Sie die Änderung bereit, vergewissern Sie sich, dass der Traffic den neuen Key nutzt, und widerrufen Sie erst dann den alten Key. Widerrufen Sie nie zuerst, denn das verursacht einen Ausfall, während Sie bereitstellen.
Was tue ich, wenn ein Key geleakt wurde?
Widerrufen Sie den Key sofort, erstellen Sie einen Ersatz, stellen Sie ihn bereit, prüfen Sie den jüngsten Versand auf Nachrichten, die Sie nicht gesendet haben, und achten Sie auf Blocklist-Einträge und Beschwerdespitzen. Finden Sie dann heraus, wie er geleakt wurde, und schließen Sie diesen Weg.
Woran erkenne ich, dass ein Key missbraucht wird?
Achten Sie auf plötzliches Volumen, neue oder ungewöhnliche Empfänger, Versand zu ungewöhnlichen Zeiten, steigende Bounces oder Beschwerden und Anfragen von unbekannten IP-Adressen. Alarme für Volumen und Bounce-Rate geben Ihnen eine frühe Warnung.
Unterscheiden sich SMTP-Zugangsdaten von API-Keys?
Sie dienen demselben Zweck, nämlich nachzuweisen, dass Sie senden dürfen, und verlangen dieselbe Sorgfalt. Behandeln Sie SMTP-Benutzername und -Passwort wie einen API-Key: ein Satz pro Anwendung, als Secret gespeichert und nach Zeitplan rotiert. Details zur Verbindung finden Sie im Leitfaden zu den SMTP-Einstellungen.
Kann ich einen API-Key in einer mobilen App oder in JavaScript auf einer Webseite verwenden?
Nein. Alles, was an ein Gerät oder einen Browser ausgeliefert wird, lässt sich extrahieren. Versenden Sie E-Mails von Ihrem eigenen Server und lassen Sie die App oder Seite Ihren Server aufrufen, der dann die E-Mail-API mit dem Key anspricht.