IP-Whitelist für API-Schlüssel

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?

Author

Vogel

Kategorie

E-Mail

IP-Whitelist für API-Schlüssel

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?

Author

Vogel

Kategorie

E-Mail

IP-Whitelist für API-Schlüssel

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?

Author

Vogel

Kategorie

E-Mail

Es gibt viele Möglichkeiten, die Authentifizierung in einem API-first Produkt wie SparkPost zu implementieren, und die, die wir frühzeitig gewählt haben, ist die Verwendung von API-Schlüsseln. Ihr API-Schlüssel kann als roter Authorization-Header oder über Standard-HTTP Basic Auth injectiert werden, was es sehr einfach macht, unsere APIs zu nutzen. API-Schlüssel wie dieser sind ein gängiger Standard für Webdienste, aber wie sicher ist dieses System?


Die Risiken

Wenn bei der Verwendung eines Webdienstes ein Angreifer Ihren API-Schlüssel erlangt, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • seine E-Mails kostenlos über Ihr Konto versenden

  • Ihre Empfängerliste herunterladen und sie Spammern zur Verfügung stellen (sofern 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 Ihrer Reputation und Ihrem Geschäft sehr schaden, und im Falle von Phishing möglicherweise direkt Ihren Endbenutzern schaden. Das ist der Grund, warum es äußerst wichtig ist, sicherzustellen, dass niemand Ihren API-Schlüssel entdeckt.


Die Chancen

Habe ich Bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte 40-stellige hexadezimale Zeichenfolgen. Das ergibt insgesamt 1.4615e+48 API-Schlüssel. Wenn alle 3 Milliarden Computer und Smartphones der Welt versuchen würden, 100 API-Schlüssel pro Sekunde einzugeben, vorausgesetzt, unsere Server würden das erlauben, würde es mehr als 150.000.000.000.000.000.000.000.000.000 Jahre dauern, um alle möglichen API-Schlüssel durchzugehen. Daher macht es keinen Sinn, den API-Schlüssel zu brute-forcen.

Wie kann also jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übergeben wird, kann er durch Man-in-the-Middle-Angriffe gelesen werden, sodass Sie immer sicherstellen sollten, dass Ihr Client die SSL-Zertifikate überprüft, wenn er sich mit unseren APIs verbindet (das ist ein wesentlicher Grund, warum wir HTTPS für API-Verbindungen verlangen). Außerdem, wenn Sie nachlässig im Umgang mit öffentlichen Code-Repositories wie GitHub sind, kann Ihr API-Schlüssel leicht im Internet exponiert werden. Dies ist kein akademisches Problem: Es gibt bekannte Bots, die GitHub durchsuchen, um API-Schlüssel zu finden, und es gab erfolgreiche Angriffe durch diesen Vektor.


IP-Whitelisting zur Rettung

Beim Erstellen eines API-Schlüssels können Sie jetzt eine Liste von IPs angeben, die autorisiert sind, diesen Schlüssel zu verwenden. Sie können mehrere IPs sowie IP-Blockadressen mithilfe der CIDR-Notation angeben, sodass Sie Ihre Server nicht einzeln aufführen müssen. Wenn der API-Schlüssel verwendet wird, werden die verbindende IP-Adresse mit dieser Liste abgeglichen, um den Zugriff zu gewähren oder zu verweigern.

Mit diesem Feature, selbst wenn Ihr API-Schlüssel gefunden oder gestohlen wird, können nur Ihre Server ihn verwenden. Angesichts der Risiken und wie einfach es ist, es einzurichten, empfehlen wir allen unseren Kunden, dieses Feature zu nutzen.


Letzte Worte

Einige persönliche Empfehlungen zur Sicherheit:

  • Bewahren Sie Ihre API-Schlüssel nicht im Code auf. Es gibt viele Vorteile, sie als Umgebungsvariablen zu speichern, wie es Heroku tut

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist am besten für die Sicherheit, die Verantwortlichkeiten auf mehrere API-Schlüssel aufzuteilen, anstatt nur einen Schweizer Taschenmesser-Schlüssel zu verwenden. Dies würde Ihnen auch ermöglichen, verschiedene IP-Whitelists pro Schlüssel zu haben, für noch bessere Trennung der Verantwortlichkeiten

  • Wenn Sie mit Dritten arbeiten, teilen Sie Ihren API-Schlüssel nicht, sondern erstellen Sie einen neuen für sie, mit nur den benötigten Berechtigungen und angefügt an ihre IPs

  • Da API-Schlüssel nur über die Benutzeroberfläche erstellt werden können, ist die Aktivierung der Zwei-Faktor-Authentifizierung für Ihr SparkPost-Konto ein Muss und dauert nur 2 Minuten

Sign up

Die KI-gestützte Plattform für Marketing, Support und Finanzen

Indem Sie auf "Demo anfordern" klicken, stimmen Sie Bird's zu

Sign up

Die KI-gestützte Plattform für Marketing, Support und Finanzen

Indem Sie auf "Demo anfordern" klicken, stimmen Sie Bird's zu

Sign up

Die KI-gestützte Plattform für Marketing, Support und Finanzen

Indem Sie auf "Demo anfordern" klicken, stimmen Sie Bird's zu

Channels

Grow

Engage

Automate

APIs

Resources

Company

Socials

Wachsen

Verwalten

Automatisieren

Wachsen

Verwalten

Automatisieren