Bevált módszerek a biztonságos API kulcsok felépítéséhez

Mindannyian tudjuk, mennyire értékesek az API-k. Átjáró a többi szolgáltatás felfedezéséhez, az integrációhoz és a nagyszerű megoldások gyorsabb felépítéséhez.

Lehet, hogy épített vagy tervez API-k létrehozását más fejlesztők számára. Az API-nak valamilyen hitelesítési formára van szüksége ahhoz, hogy engedélyezett hozzáférést biztosítson a visszaadott adatokhoz.

Számos hitelesítési szabvány érhető el manapság, például API kulcsok, OAuth, JWT stb.

Ebben a cikkben megvizsgáljuk, hogyan lehet helyesen kezelni az API-kulcsokat az API-k eléréséhez.

Tehát miért API kulcsok?

Az API-kulcsok használata egyszerű, rövidek, statikusak, és csak akkor vonják le őket, ha visszavonják őket. Könnyű módot nyújtanak több szolgáltatás kommunikációjára.

Ha API-t biztosít az ügyfelek számára a fogyasztáshoz, elengedhetetlen, hogy megfelelő módon építse fel azt.

Kezdjük, és megmutatom, hogyan lehet az API kulcsokat megfelelő módon felépíteni.

API Key Generation

Mivel az API kulcs maga az alkalmazás vagy a felhasználó azonosítására szolgáló identitás, egyedinek, véletlenszerűnek és nem kitalálhatónak kell lennie. A létrehozott API kulcsoknak alfanumerikus és speciális karaktereket is kell használniuk. Ilyen API kulcs például zaCELgL.0imfnc8mVLWwsAawjYr4Rx-Af50DDqtlx.

Biztonságos API kulcstárolás

Mivel az API-kulcs közvetlen hozzáférést biztosít az adatokhoz, nagyjából olyan, mint egy jelszó, amelyet egy web- vagy mobilalkalmazás-felhasználó biztosít ugyanahhoz az adathoz való hozzáféréshez.

Gondolkodj el rajta. Az API-kulcsok tárolásának oka az, hogy megbizonyosodjunk arról, hogy a kérelemben szereplő API-kulcs érvényes-e és mi állítjuk-e ki őket (akárcsak egy jelszó).

Nem kell tudnunk a nyers API kulcsot, de csak ellenőriznünk kell, hogy a kulcs helyes-e. Tehát ahelyett, hogy a kulcsot egyszerű szövegben (rossz) tárolnánk vagy titkosítanánk, kivonatolt értékként kell tárolnunk az adatbázisunkban.

A hash érték azt jelenti, hogy még ha valaki illetéktelen hozzáférést is szerez az adatbázisunkhoz, egyetlen API-kulcs sem szivárog ki, és ez minden biztonságos. A végfelhasználó minden API-kérelemben elküldi a nyers API-kulcsot, és mi azt validálhatjuk, ha az API-kulcsot összekeverjük a kérésben, és összehasonlítjuk a kivonatolt kulcsot az adatbázisunkban tárolt kivonattal. Itt van egy hozzávetőleges megvalósítás Java-ban:

A fenti kódban az elsődleges kulcs az előtag és az API kulcs kivonatának kombinációja lesz {prefix}.{hash_of_whole_api_key}.

De tarts ki, van még más is. A hash érték tárolása sajátos használhatósági problémákat vet fel. Most szólítsuk meg ezeket.

Az API kulcs bemutatása a felhasználók számára

Mivel nem tároljuk az eredeti API kulcsot, a létrehozáskor csak egyszer tudjuk megmutatni a felhasználónak. Ezért mindenképpen figyelmeztesse a felhasználókat, hogy nem lehet újra letölteni, és új tokent kell létrehozniuk, ha elfelejtik lemásolni az API kulcsot és biztonságosan tárolni. Tehet ilyet:

Hogyan azonosíthatják a felhasználók később a létrehozott API-kulcsot

Egy másik probléma az, hogy a felhasználók hogyan azonosítják a megfelelő API kulcsot a konzolon, ha módosítaniuk vagy visszavonniuk kell. Ez úgy oldható meg, hogy előtagot ad az API kulcshoz. Figyelem a képen az első 7 karakter felett (ez az előtagunk), ponttal elválasztva.

Most tárolhatja ezt az előtagot az adatbázisban, és megjelenítheti a konzolon, így a felhasználók gyorsan azonosíthatják a megfelelő API kulcs bejegyzést, például:

Ne adjon minden erőt az API kulcsnak

Az API kulcsszolgáltatók által elkövetett egyik leggyakoribb hiba az, hogy egyetlen kulcsot biztosítanak mindenhez való hozzáféréshez , mivel ez könnyen kezelhető. Ne csináld. Tegyük fel, hogy a felhasználónak csak el kell olvasnia egy e-mailt, és generál egy API kulcsot. De ez a kulcs most már teljes hozzáféréssel rendelkezik más szolgáltatásokhoz, beleértve az adatbázisból származó rekordok törlését is.

A helyes megközelítés lehetővé teszi a végfelhasználók számára, hogy megfelelően korlátozzák az API kulcsokhoz való hozzáférést, és kiválasszák azokat a konkrét műveleteket, amelyeket az API kulcs elvégezhet. Ez hatókörök megadásával tehető meg , ahol az egyes hatókörök külön engedélyt jelentenek.

Például,

  • ha API-kulcsra van szüksége csak e-mailek küldéséhez, akkor létrehozhat egy API-kulcsot, amelynek hatóköre: „email.send”
  • Ha a végfelhasználónak több kiszolgálója van, és mindegyikük egy adott műveletet hajt végre, akkor külön API kulcs hozható létre egy adott hatókörrel.

Tehát az API kulcs létrehozása közben engedélyezze a felhasználók számára, hogy kiválasszák, milyen hozzáféréssel kell rendelkezniük az API kulcsnak, ahogy az alábbi képen látható.

Így a felhasználók több API kulcsot generálhatnak, amelyek mindegyikéhez külön hozzáférési szabályok vonatkoznak a nagyobb biztonság érdekében. Amikor pedig API-kérés érkezik, ellenőrizheti, hogy az API-kulcs rendelkezik-e a megfelelő hatókörrel az API eléréséhez. Most az adatbázis így néz ki:

Sebességkorlátozó API kulcsok

Igen, lehet, hogy már ismeri, de fontos, hogy értékelje a meghatározott API-kulcsokkal benyújtott korlátozási kérelmeket, hogy biztosítsa, hogy egyetlen rossz szereplő sem tudja levonni az API-kiszolgálókat, vagy teljesítményproblémákat okozhat, amelyek érintik a többi ügyfelet. Megfelelő sebességkorlátozó és felügyeleti megoldás fenntartja az API szolgáltatást.

Következtetés

Az API kulcsok, ha jól vannak felépítve, még mindig kiválóan alkalmasak egy másik szerverrel való kommunikációra. Amint ebben a cikkben áttekintettük, bizonyos gyakorlatok követése előnyöket kínál mind az API-fogyasztók, mind az API-szolgáltatók számára. Remélem, ez segít.

Boldog az API-k biztosítását!