Biała lista IP dla kluczy API
Ptak
19 sie 2015
1 min read

Kluczowe Wnioski
Klucze API to potężne dane uwierzytelniające — jeśli zostaną skompromitowane, atakujący mogą wysyłać e-maile, kraść dane lub podszywać się pod Twoją markę.
Siłowe łamanie klucza szesnastkowego o długości 40 znaków jest praktycznie niemożliwe; prawdziwe zagrożenia wynikają z jego ujawnienia (ataki MITM, niepewne repozytoria kodu, ujawnione dane uwierzytelniające).
Zawsze używaj HTTPS i weryfikuj certyfikaty SSL, aby zapobiec przechwyceniu swoich kluczy API.
Biała lista adresów IP dodaje krytyczną warstwę ochrony, ograniczając użycie klucza do określonych adresów IP lub zakresów adresów IP.
Nawet jeśli atakujący ukradnie Twój klucz API, nie mogą go użyć, chyba że łączą się z zatwierdzonego IP.
Obsługa CIDR ułatwia autoryzację całych sieci bez wyliczania każdego serwera.
Unikaj osadzania kluczy API w kodzie — zamiast tego używaj zmiennych środowiskowych lub bezpiecznych rozwiązań do zarządzania tajemnicami.
Twórz wiele kluczy API o wąskim zakresie zamiast jednego klucza „zrób wszystko” — każdy z ograniczonymi uprawnieniami i własną białą listą.
Dla integracji zewnętrznych twórz dedykowane klucze z ograniczonymi uprawnieniami i ograniczonymi IP.
Włącz 2FA na swoim koncie, ponieważ klucze API mogą być tworzone tylko przez interfejs użytkownika.
Regularnie przeglądaj, rotuj i wycofuj klucze, aby utrzymać silne bezpieczeństwo operacyjne.
Q&A Highlights
Co to jest IP whitelisting?
To funkcja zabezpieczająca, która ogranicza użycie klucza API do określonych adresów IP lub zakresów adresów IP.
Dlaczego SparkPost/Bird używa kluczy API do uwierzytelniania?
Klucze API są proste, powszechnie stosowane i dobrze współpracują z REST APIs i SMTP.
Co się stanie, jeśli ktoś ukradnie mój klucz API?
Mogą wysyłać pocztę w Twoim imieniu, pobierać listy odbiorców, modyfikować szablony lub wysyłać phishing/spam, który szkodzi Twojej marce.
Czy klucze API mogą być brute-forced?
Praktycznie niemożliwe. 40-znakowy ciąg szesnastkowy ma ~1.46e48 kombinacji — brutalne wymuszanie trwałoby dłużej niż wiek wszechświata.
Więc jak zwykle atakujący uzyskują klucze API?
Ataki typu man-in-the-middle (jeśli SSL nie jest zweryfikowany), ujawnione klucze w publicznych repozytoriach GitHub lub logi przypadkowo ujawniające klucze.
Jak pomaga IP whitelisting?
Nawet jeśli atakujący ukradnie twój klucz, nie zadziała, chyba że łączą się z zatwierdzonego IP.
Czy mogę umieścić na białej liście całe sieci?
Tak, poprzez notację CIDR — idealną dla serwerów z równoważeniem obciążenia, VPN-ów lub statycznych zakresów biurowych.
Czy whitelisting dotyczy zarówno REST, jak i SMTP?
Tak, adres IP przychodzącego żądania musi pasować do Twojej białej listy.
Ile adresów IP lub zakresów mogę dodać do whitelisty?
Tyle, ile potrzebujesz — wiele pojedynczych IP lub bloków.
Czy powinienem używać jednego klucza API do wszystkiego?
Nie. Utwórz oddzielne klucze dla różnych systemów, zespołów lub dostawców. Poprawia to bezpieczeństwo i ułatwia rotację lub unieważnienie kluczy.
Gdzie powinienem przechowywać klucze API?
Używaj zmiennych środowiskowych — nigdy nie koduj kluczy na stałe w plikach źródłowych ani publicznych repozytoriach.
Jakieś dodatkowe praktyki zabezpieczeń?
Zawsze włącz 2FA na swoim koncie SparkPost/Bird i twórz dedykowane klucze dla stron trzecich z minimalnymi uprawnieniami i ich własnymi listami dozwolonych.
Istnieje wiele sposobów na tworzenie uwierzytelnienia w produkcie API-first jak SparkPost, a ten, który wybraliśmy na wczesnym etapie, to użycie kluczy API. Wstrzyknięcie klucza API jako surowego nagłówka Authorization lub za pośrednictwem standardowego uwierzytelnienia HTTP Basic sprawia, że nasze API są bardzo łatwe w użyciu. Takie klucze API są standardem dla usług internetowych, ale jak bezpieczny jest ten system?
Ryzyka
Kiedy korzystasz z jakiejkolwiek usługi internetowej, jeśli atakujący zdobędzie twój klucz API, może działać w twoim imieniu i robić rzeczy takie jak (w naszym przypadku):
wysyłać swoje e-maile za darmo za pośrednictwem twojego konta
pobierać listę twoich odbiorców i przekazywać ją do spamerów (jeśli sami nie są spamerami)
edytować twoje szablony, aby wstrzyknąć linki phishingowe
wysyłać spam lub phishing w twoim imieniu
Każdy z tych rezultatów może być bardzo szkodliwy dla twojej reputacji i dla twojego biznesu, a w przypadku phishingu potencjalnie bezpośrednio zaszkodzić twoim użytkownikom końcowym. Dlatego niezwykle ważne jest, aby upewnić się, że nikt nie jest w stanie odkryć twojego klucza API.
Szanse
IP whitelisting na ratunek
Kiedy tworzysz klucz API, możesz teraz określić listę IP, które są autoryzowane do korzystania z tego klucza. Możesz określić kilka IP, a także bloki IP, używając notacji CIDR, więc nie musisz wymieniać swoich serwerów indywidualnie. Gdy klucz API jest używany, dla REST API lub SMTP, dopasujemy łączące się IP do tej listy, aby zezwolić na dostęp lub go odmówić.
Dzięki tej funkcji, nawet jeśli Twój klucz API zostanie znaleziony lub skradziony, tylko Twoje serwery będą mogły go używać. Ze względu na ryzyko i łatwość jego skonfigurowania, zdecydowanie zalecamy wszystkim naszym klientom korzystanie z tej funkcji.
Ostatnie słowa
Kilka osobistych rekomendacji dotyczących bezpieczeństwa:
Nie przechowuj swoich kluczy API w kodzie. Istnieje wiele korzyści z przechowywania ich jako zmienne środowiskowe, tak jak robi to Heroku
Możesz tworzyć nielimitowaną ilość kluczy API, a dla bezpieczeństwa najlepiej podzielić obowiązki pomiędzy kilka kluczy API, zamiast używać jednego klucza uniwersalnego. Umożliwiłoby to również posiadanie różnych białych list IP dla każdego klucza, dla jeszcze lepszego rozdzielenia zadań
Jeśli współpracujesz z podmiotami trzecimi, nie udostępniaj swojego klucza API, ale stwórz dla nich nowy, z tylko niezbędnymi uprawnieniami, i przypisany do ich IP
Ponieważ klucze API mogą być tworzone tylko poprzez interfejs użytkownika, włączenie dwuskładnikowego uwierzytelniania na koncie SparkPost jest koniecznością i zajmuje tylko 2 minuty



