IP-whitelisting voor API-sleutels

Bird

19 aug 2015

E-mail

1 min read

IP-whitelisting voor API-sleutels

Belangrijkste punten

    • API-sleutels zijn krachtige inloggegevens — als ze worden gecompromitteerd, kunnen aanvallers e-mails verzenden, gegevens stelen of uw merk imiteren.

    • Brute-forceren van een hexadecimale sleutel van 40 tekens is in wezen onmogelijk; echte bedreigingen komen door blootstelling (MITM-aanvallen, onzekere coderepos, gelekte inloggegevens).

    • Gebruik altijd HTTPS en valideer SSL-certificaten om onderschepping van uw API-sleutels te voorkomen.

    • IP-whitelisting voegt een kritieke beschermingslaag toe door het gebruik van een sleutel te beperken tot specifieke IP's of IP-bereiken.

    • Zelfs als een aanvaller uw API-sleutel steelt, kunnen ze deze niet gebruiken tenzij ze verbinding maken vanaf een goedgekeurd IP.

    • CIDR-ondersteuning maakt het eenvoudig om hele netwerken te autoriseren zonder elke server te hoeven vermelden.

    • Vermijd het inbedden van API-sleutels in code — gebruik in plaats daarvan omgevingsvariabelen of veilige oplossingen voor geheimenbeheer.

    • Maak meerdere API-sleutels met een smal bereik in plaats van één ‘do-everything’ sleutel — elk met beperkte machtigingen en zijn eigen whitelist.

    • Maak voor integraties van derden speciale sleutels met beperkte machtigingen en beperkte IP's aan.

    • Schakel 2FA in op uw account, aangezien API-sleutels alleen via de UI kunnen worden aangemaakt.

    • Regelmatig sleutels herzien, roteren en buiten gebruik stellen om sterke operationele beveiliging te handhaven.

Q&A Hoogtepunten

  • Wat is IP-whitelisting?

    Het is een beveiligingsfunctie die het gebruik van API-sleutels beperkt tot specifieke IP-adressen of IP-bereiken.

  • Waarom gebruikt SparkPost/Bird API keys voor authenticatie?

    API-sleutels zijn eenvoudig, algemeen geaccepteerd en werken netjes met REST API's en SMTP.

  • Wat gebeurt er als iemand mijn API key steelt?

    Ze kunnen namens u post verzenden, ontvangerlijsten downloaden, sjablonen wijzigen of phishing/spam verzenden die uw merk schaadt.

  • Kunnen API keys brute-forced worden?

    Praktisch onmogelijk. Een hexadecimale string van 40 tekens heeft ~1,46e48 combinaties — brute force zou langer duren dan de leeftijd van het universum.

  • Dus hoe krijgen aanvallers normaal gesproken API keys?

    Man-in-de-middle-aanvallen (als SSL niet geverifieerd is), blootgestelde sleutels in openbare GitHub-repositories, of logs die per ongeluk sleutels lekken.

  • Hoe helpt IP-whitelisting?

    Zelfs als een aanvaller uw sleutel steelt, zal het niet werken tenzij ze verbinding maken vanaf een goedgekeurd IP-adres.

  • Kan ik hele netwerken whitelisten?

    Ja, via CIDR-notatie — ideaal voor load-balanced servers, VPNs, of statische kantoorbereiken.

  • Is whitelisting van toepassing op zowel REST als SMTP?

    Ja, het IP-adres van het binnenkomende verzoek moet overeenkomen met uw whitelist.

  • Hoeveel IP's of reeksen kan ik whitelisten?

    Zo veel als je nodig hebt — meerdere individuele IP's of blokken.

  • Moet ik één API key gebruiken voor alles?

    Nee. Creëer aparte sleutels voor verschillende systemen, teams of leveranciers. Dit verbetert de beveiliging en maakt het gemakkelijker om sleutels te roteren of in te trekken.

  • Waar moet ik API keys bewaren?

    Gebruik omgevingsvariabelen — codeer nooit sleutels rechtstreeks in bronbestanden of openbare repositories.

  • Zijn er aanvullende beveiligingsrichtlijnen?

    Schakel altijd 2FA in op uw SparkPost/Bird-account en maak speciale sleutels voor derden met minimale permissies en hun eigen whitelists.

Er zijn veel manieren om authenticatie op te bouwen in een API-first product zoals SparkPost, en de methode die wij vroeg kozen is het gebruik van API-sleutels. Het injecteren van uw API-sleutel als een ruwe Authorization-header of via standaard HTTP Basic Auth maakt het zeer eenvoudig om onze APIs te gebruiken. API-sleutels zoals deze zijn een gemeenschappelijke standaard voor webservices, maar hoe veilig is dit systeem?

Er zijn veel manieren om authenticatie op te bouwen in een API-first product zoals SparkPost, en de methode die wij vroeg kozen is het gebruik van API-sleutels. Het injecteren van uw API-sleutel als een ruwe Authorization-header of via standaard HTTP Basic Auth maakt het zeer eenvoudig om onze APIs te gebruiken. API-sleutels zoals deze zijn een gemeenschappelijke standaard voor webservices, maar hoe veilig is dit systeem?

Er zijn veel manieren om authenticatie op te bouwen in een API-first product zoals SparkPost, en de methode die wij vroeg kozen is het gebruik van API-sleutels. Het injecteren van uw API-sleutel als een ruwe Authorization-header of via standaard HTTP Basic Auth maakt het zeer eenvoudig om onze APIs te gebruiken. API-sleutels zoals deze zijn een gemeenschappelijke standaard voor webservices, maar hoe veilig is dit systeem?

De risico's

Bij het gebruik van elke webservice, als een aanvaller uw API-sleutel bemachtigt, kan hij namens u handelen en dingen doen zoals (in ons geval):

  • hun e-mail gratis via uw account versturen

  • uw ontvangerslijst downloaden en aan spammers doorgeven (als ze zelf geen spammers zijn)

  • uw sjablonen bewerken om phishing-links te injecteren

  • spam of phishing namens u versturen

Elk van deze uitkomsten kan zeer schadelijk zijn voor uw reputatie en voor uw bedrijf, en in het geval van phishing mogelijk rechtstreeks schade toebrengen aan uw eindgebruikers. Dit is de reden waarom het uiterst belangrijk is ervoor te zorgen dat niemand uw API-sleutel kan ontdekken.

Bij het gebruik van elke webservice, als een aanvaller uw API-sleutel bemachtigt, kan hij namens u handelen en dingen doen zoals (in ons geval):

  • hun e-mail gratis via uw account versturen

  • uw ontvangerslijst downloaden en aan spammers doorgeven (als ze zelf geen spammers zijn)

  • uw sjablonen bewerken om phishing-links te injecteren

  • spam of phishing namens u versturen

Elk van deze uitkomsten kan zeer schadelijk zijn voor uw reputatie en voor uw bedrijf, en in het geval van phishing mogelijk rechtstreeks schade toebrengen aan uw eindgebruikers. Dit is de reden waarom het uiterst belangrijk is ervoor te zorgen dat niemand uw API-sleutel kan ontdekken.

Bij het gebruik van elke webservice, als een aanvaller uw API-sleutel bemachtigt, kan hij namens u handelen en dingen doen zoals (in ons geval):

  • hun e-mail gratis via uw account versturen

  • uw ontvangerslijst downloaden en aan spammers doorgeven (als ze zelf geen spammers zijn)

  • uw sjablonen bewerken om phishing-links te injecteren

  • spam of phishing namens u versturen

Elk van deze uitkomsten kan zeer schadelijk zijn voor uw reputatie en voor uw bedrijf, en in het geval van phishing mogelijk rechtstreeks schade toebrengen aan uw eindgebruikers. Dit is de reden waarom het uiterst belangrijk is ervoor te zorgen dat niemand uw API-sleutel kan ontdekken.

De kansen

Heb ik bruteforce gehoord? Onze API-sleutels zijn willekeurig gegenereerde 40-cijferige hexadecimale strings. Dit maakt een totaal van 1.4615e+48 API-sleutels. Als alle 3 miljard computers en smartphones in de wereld 100 API-sleutels per seconde zouden proberen, ervan uitgaande dat onze servers dat zouden toestaan, zou het doorlopen van alle mogelijke API-sleutels meer dan 150.000.000.000.000.000.000.000.000.000 jaar duren. Dus brute force van de API-sleutel heeft gewoon geen zin.

Hoe kan iemand dan je API-sleutel vinden? Omdat de sleutel als een header wordt doorgegeven, kan hij worden gelezen met man-in-the-middle-aanvallen, dus je moet er altijd voor zorgen dat je client de SSL-certificaten controleert wanneer je verbinding maakt met onze APIs (dit is een belangrijke reden waarom we https vereisen voor API-verbindingen). Ook, als je onzorgvuldig bent met je gebruik van openbare code repositories zoals github, kan je API-sleutel gemakkelijk in de openbaarheid terechtkomen. Dit is geen academisch probleem: er zijn bekende bots die github doorzoeken om API-sleutels te vinden, en er zijn succesvolle aanvallen geweest via die vector.

Heb ik bruteforce gehoord? Onze API-sleutels zijn willekeurig gegenereerde 40-cijferige hexadecimale strings. Dit maakt een totaal van 1.4615e+48 API-sleutels. Als alle 3 miljard computers en smartphones in de wereld 100 API-sleutels per seconde zouden proberen, ervan uitgaande dat onze servers dat zouden toestaan, zou het doorlopen van alle mogelijke API-sleutels meer dan 150.000.000.000.000.000.000.000.000.000 jaar duren. Dus brute force van de API-sleutel heeft gewoon geen zin.

Hoe kan iemand dan je API-sleutel vinden? Omdat de sleutel als een header wordt doorgegeven, kan hij worden gelezen met man-in-the-middle-aanvallen, dus je moet er altijd voor zorgen dat je client de SSL-certificaten controleert wanneer je verbinding maakt met onze APIs (dit is een belangrijke reden waarom we https vereisen voor API-verbindingen). Ook, als je onzorgvuldig bent met je gebruik van openbare code repositories zoals github, kan je API-sleutel gemakkelijk in de openbaarheid terechtkomen. Dit is geen academisch probleem: er zijn bekende bots die github doorzoeken om API-sleutels te vinden, en er zijn succesvolle aanvallen geweest via die vector.

Heb ik bruteforce gehoord? Onze API-sleutels zijn willekeurig gegenereerde 40-cijferige hexadecimale strings. Dit maakt een totaal van 1.4615e+48 API-sleutels. Als alle 3 miljard computers en smartphones in de wereld 100 API-sleutels per seconde zouden proberen, ervan uitgaande dat onze servers dat zouden toestaan, zou het doorlopen van alle mogelijke API-sleutels meer dan 150.000.000.000.000.000.000.000.000.000 jaar duren. Dus brute force van de API-sleutel heeft gewoon geen zin.

Hoe kan iemand dan je API-sleutel vinden? Omdat de sleutel als een header wordt doorgegeven, kan hij worden gelezen met man-in-the-middle-aanvallen, dus je moet er altijd voor zorgen dat je client de SSL-certificaten controleert wanneer je verbinding maakt met onze APIs (dit is een belangrijke reden waarom we https vereisen voor API-verbindingen). Ook, als je onzorgvuldig bent met je gebruik van openbare code repositories zoals github, kan je API-sleutel gemakkelijk in de openbaarheid terechtkomen. Dit is geen academisch probleem: er zijn bekende bots die github doorzoeken om API-sleutels te vinden, en er zijn succesvolle aanvallen geweest via die vector.

IP-whitelisting te hulp

Wanneer u een API-sleutel maakt, kunt u nu een lijst met IP's opgeven die gemachtigd zijn om deze sleutel te gebruiken. U kunt meerdere IP's specificeren, evenals IP-blokken, met behulp van de CIDR-notatie, zodat u uw servers niet afzonderlijk hoeft op te sommen. Wanneer de API-sleutel wordt gebruikt, voor REST API's of SMTP, zullen we het verbindende IP vergelijken met deze lijst om toegang toe te staan of te weigeren.

Met deze functie, zelfs als uw API-sleutel wordt gevonden of gestolen, zullen alleen uw servers in staat zijn om deze te gebruiken.

Veelvoorkomende API-sleutelbedreigingen en Mitigaties

Bedreiging

Beschrijving

Aanbevolen Mitigatie

Sleutelblootstelling in openbare code-repositories

API-sleutels die naar GitHub zijn gecommitteerd, kunnen door bots worden verzameld

Bewaar sleutels in omgevingsvariabelen; roteer gelekte sleutels onmiddellijk

Man-in-the-middle onderschepping

API-sleutel gelezen tijdens onveilige verbindingen

Zorg er altijd voor dat HTTPS wordt afgedwongen en valideer SSL-certificaten

Gestolen API-sleutel gebruikt vanaf aanvallerinfrastructuur

Aanvaller kan e-mail verzenden, gegevens stelen of sjablonen wijzigen

Gebruik IP-whitelisting om te beperken welke IP's de sleutel kunnen gebruiken

Overmachtigde “zwitsers zakmes” API-sleutels

Een enkele sleutel verleent te veel privileges bij compromittering

Maak meerdere smalscope-sleutels met beperkte rechten

Derdenintegraties die een gedeelde sleutel misbruiken

Externe partners kunnen per ongeluk uw sleutel blootstellen of misbruiken

Genereer speciale sleutels voor elke partner met beperkte IP's en rechten

Gezien de risico's en hoe gemakkelijk het op te zetten is, raden we onze klanten ten zeerste aan om deze functie te gebruiken.

Wanneer u een API-sleutel maakt, kunt u nu een lijst met IP's opgeven die gemachtigd zijn om deze sleutel te gebruiken. U kunt meerdere IP's specificeren, evenals IP-blokken, met behulp van de CIDR-notatie, zodat u uw servers niet afzonderlijk hoeft op te sommen. Wanneer de API-sleutel wordt gebruikt, voor REST API's of SMTP, zullen we het verbindende IP vergelijken met deze lijst om toegang toe te staan of te weigeren.

Met deze functie, zelfs als uw API-sleutel wordt gevonden of gestolen, zullen alleen uw servers in staat zijn om deze te gebruiken.

Veelvoorkomende API-sleutelbedreigingen en Mitigaties

Bedreiging

Beschrijving

Aanbevolen Mitigatie

Sleutelblootstelling in openbare code-repositories

API-sleutels die naar GitHub zijn gecommitteerd, kunnen door bots worden verzameld

Bewaar sleutels in omgevingsvariabelen; roteer gelekte sleutels onmiddellijk

Man-in-the-middle onderschepping

API-sleutel gelezen tijdens onveilige verbindingen

Zorg er altijd voor dat HTTPS wordt afgedwongen en valideer SSL-certificaten

Gestolen API-sleutel gebruikt vanaf aanvallerinfrastructuur

Aanvaller kan e-mail verzenden, gegevens stelen of sjablonen wijzigen

Gebruik IP-whitelisting om te beperken welke IP's de sleutel kunnen gebruiken

Overmachtigde “zwitsers zakmes” API-sleutels

Een enkele sleutel verleent te veel privileges bij compromittering

Maak meerdere smalscope-sleutels met beperkte rechten

Derdenintegraties die een gedeelde sleutel misbruiken

Externe partners kunnen per ongeluk uw sleutel blootstellen of misbruiken

Genereer speciale sleutels voor elke partner met beperkte IP's en rechten

Gezien de risico's en hoe gemakkelijk het op te zetten is, raden we onze klanten ten zeerste aan om deze functie te gebruiken.

Wanneer u een API-sleutel maakt, kunt u nu een lijst met IP's opgeven die gemachtigd zijn om deze sleutel te gebruiken. U kunt meerdere IP's specificeren, evenals IP-blokken, met behulp van de CIDR-notatie, zodat u uw servers niet afzonderlijk hoeft op te sommen. Wanneer de API-sleutel wordt gebruikt, voor REST API's of SMTP, zullen we het verbindende IP vergelijken met deze lijst om toegang toe te staan of te weigeren.

Met deze functie, zelfs als uw API-sleutel wordt gevonden of gestolen, zullen alleen uw servers in staat zijn om deze te gebruiken.

Veelvoorkomende API-sleutelbedreigingen en Mitigaties

Bedreiging

Beschrijving

Aanbevolen Mitigatie

Sleutelblootstelling in openbare code-repositories

API-sleutels die naar GitHub zijn gecommitteerd, kunnen door bots worden verzameld

Bewaar sleutels in omgevingsvariabelen; roteer gelekte sleutels onmiddellijk

Man-in-the-middle onderschepping

API-sleutel gelezen tijdens onveilige verbindingen

Zorg er altijd voor dat HTTPS wordt afgedwongen en valideer SSL-certificaten

Gestolen API-sleutel gebruikt vanaf aanvallerinfrastructuur

Aanvaller kan e-mail verzenden, gegevens stelen of sjablonen wijzigen

Gebruik IP-whitelisting om te beperken welke IP's de sleutel kunnen gebruiken

Overmachtigde “zwitsers zakmes” API-sleutels

Een enkele sleutel verleent te veel privileges bij compromittering

Maak meerdere smalscope-sleutels met beperkte rechten

Derdenintegraties die een gedeelde sleutel misbruiken

Externe partners kunnen per ongeluk uw sleutel blootstellen of misbruiken

Genereer speciale sleutels voor elke partner met beperkte IP's en rechten

Gezien de risico's en hoe gemakkelijk het op te zetten is, raden we onze klanten ten zeerste aan om deze functie te gebruiken.

Laatste woorden

Enkele persoonlijke aanbevelingen rondom beveiliging:

  • Houd uw API-sleutels niet in de code. Er zijn veel voordelen aan het bewaren ervan als omgevingsvariabelen, zoals Heroku doet

  • U kunt een onbeperkt aantal API-sleutels aanmaken en het is voor de beveiliging het beste om de verantwoordelijkheden over meerdere API-sleutels te verdelen, in plaats van slechts één alles-in-één sleutel. Dit stelt u ook in staat om verschillende IP-witte lijsten per sleutel te hebben, voor een nog betere scheiding van verantwoordelijkheden

  • Als u met derden werkt, deel uw API-sleutel dan niet, maar maak een nieuwe voor hen aan, met alleen de benodigde rechten, en gekoppeld aan hun IP's

  • Aangezien API-sleutels alleen via de UI aangemaakt kunnen worden, is 2-factor-authenticatie inschakelen op uw SparkPost-account een must en kost slechts 2 minuten

Enkele persoonlijke aanbevelingen rondom beveiliging:

  • Houd uw API-sleutels niet in de code. Er zijn veel voordelen aan het bewaren ervan als omgevingsvariabelen, zoals Heroku doet

  • U kunt een onbeperkt aantal API-sleutels aanmaken en het is voor de beveiliging het beste om de verantwoordelijkheden over meerdere API-sleutels te verdelen, in plaats van slechts één alles-in-één sleutel. Dit stelt u ook in staat om verschillende IP-witte lijsten per sleutel te hebben, voor een nog betere scheiding van verantwoordelijkheden

  • Als u met derden werkt, deel uw API-sleutel dan niet, maar maak een nieuwe voor hen aan, met alleen de benodigde rechten, en gekoppeld aan hun IP's

  • Aangezien API-sleutels alleen via de UI aangemaakt kunnen worden, is 2-factor-authenticatie inschakelen op uw SparkPost-account een must en kost slechts 2 minuten

Enkele persoonlijke aanbevelingen rondom beveiliging:

  • Houd uw API-sleutels niet in de code. Er zijn veel voordelen aan het bewaren ervan als omgevingsvariabelen, zoals Heroku doet

  • U kunt een onbeperkt aantal API-sleutels aanmaken en het is voor de beveiliging het beste om de verantwoordelijkheden over meerdere API-sleutels te verdelen, in plaats van slechts één alles-in-één sleutel. Dit stelt u ook in staat om verschillende IP-witte lijsten per sleutel te hebben, voor een nog betere scheiding van verantwoordelijkheden

  • Als u met derden werkt, deel uw API-sleutel dan niet, maar maak een nieuwe voor hen aan, met alleen de benodigde rechten, en gekoppeld aan hun IP's

  • Aangezien API-sleutels alleen via de UI aangemaakt kunnen worden, is 2-factor-authenticatie inschakelen op uw SparkPost-account een must en kost slechts 2 minuten

Andere nieuws

Lees meer uit deze categorie

A person is standing at a desk while typing on a laptop.

Het complete AI-native platform dat met uw bedrijf meegroeit.

A person is standing at a desk while typing on a laptop.

Het complete AI-native platform dat met uw bedrijf meegroeit.