
Es gibt viele Möglichkeiten, die Authentifizierung in einem API-first-Produkt wie SparkPost zu gestalten, und diejenige, die wir frühzeitig gewählt haben, ist die Verwendung von API-Schlüsseln. Das Einfügen Ihres API-Schlüssels als rohe Autorisierungs-Header oder über die Standard-HTTP Basic Auth macht es sehr einfach, unsere APIs zu nutzen. API-Schlüssel wie diese sind ein gängiger Standard für Webservices, aber wie sicher ist dieses System?
Es gibt viele Möglichkeiten, Authentifizierung in einem API-first-Produkt wie SparkPost zu implementieren, und diejenige, die wir früh gewählt haben, ist die Verwendung von API-Schlüsseln. Die Einbindung Ihres API-Schlüssels als eine rohe Authorization-Header oder über standardmäßige HTTP Basic Auth macht es sehr einfach, unsere APIs zu nutzen. Solche API-Schlüssel sind ein gängiger Standard für Webservices, aber wie sicher ist dieses System?
Die Risiken
Bei der Nutzung eines Webdienstes, wenn ein Angreifer Ihren API-Schlüssel erlangt, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):
ihre E-Mails kostenlos über Ihr Konto senden
Ihre Empfängerliste herunterladen und an Spammer weitergeben (falls sie nicht selbst Spammer sind)
ihre Vorlagen bearbeiten, um Phishing-Links einzufügen
Spam oder Phishing in Ihrem Namen senden
Jedes dieser Ergebnisse könnte Ihrem Ruf und Ihrem Geschäft erheblich schaden, und im Fall von Phishing könnte es potenziell direkt Ihren Endbenutzern Schaden zufügen. Deshalb ist es äußerst wichtig sicherzustellen, dass niemand Ihren API-Schlüssel entdecken kann.
Die Chancen
IP-Whitelisting zur Rettung
Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die zur Verwendung dieses Schlüssels berechtigt sind. Sie können mehrere IPs sowie IP-Blöcke mit der CIDR-Notation angeben, sodass Sie Ihre Server nicht einzeln auflisten müssen. Wenn der API-Schlüssel verwendet wird, sei es für REST-APIs oder SMTP, werden wir die verbindende IP mit dieser Liste abgleichen, um den Zugriff zu erlauben oder zu verweigern.
Mit dieser Funktion können selbst bei Auffinden oder Diebstahl Ihres API-Schlüssels nur Ihre Server diesen verwenden. Angesichts der Risiken und wie einfach es ist, diese Funktion einzurichten, empfehlen wir nachdrücklich allen unseren Kunden, diese Funktion zu nutzen.
Letzte Worte
Einige persönliche Empfehlungen zur Sicherheit:
Bewahren Sie Ihre API-Schlüssel nicht im Code auf. Es hat viele Vorteile, sie als Umgebungsvariablen zu halten, wie es Heroku tut.
Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist für die Sicherheit am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur einen Allzweck-Schlüssel zu verwenden. Dadurch können Sie auch unterschiedliche IP-Whitelists pro Schlüssel haben, für eine noch bessere Trennung der Aufgaben.
Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie einen neuen für sie, mit nur den erforderlichen Berechtigungen, und an ihre IPs gebunden.
Da API-Schlüssel nur über die Benutzeroberfläche erstellt werden können, ist das Aktivieren der Zwei-Faktor-Authentifizierung auf Ihrem SparkPost-Konto ein Muss und dauert nur 2 Minuten.