Speciális kérelemszabályozás az Azure API Managementtel

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

A bejövő kérések szabályozásának lehetősége az Azure API Management kulcsfontosságú szerepe. Az API Management lehetővé teszi az API-szolgáltatók számára, hogy megvédjék API-jukat a visszaélésektől, és értékeket hozzanak létre a különböző API-termékszintek számára.

Sebességkorlátok és kvóták

A sebességkorlátok és kvóták különböző célokra használhatók.

Sebességkorlátok

A sebességkorlátokat általában a rövid és intenzív kötetcsúcsok elleni védelemre használják. Ha például tudja, hogy a háttérszolgáltatás szűk keresztmetszettel rendelkezik az adatbázisában nagy hívásmennyiséggel, beállíthatja rate-limit-by-key , hogy ezzel a beállítással ne engedélyezze a nagy hívásmennyiséget.

Figyelemfelhívás

A szabályozási architektúra elosztott jellege miatt a sebességkorlátozás soha nem teljesen pontos. Az engedélyezett kérelmek konfigurált és valós száma közötti különbség a kérések mennyiségének és sebességének, a háttér késésének és egyéb tényezőknek megfelelően változik.

Kvóták

A kvótákat általában a hívások gyakoriságának hosszabb ideig történő szabályozására használják. Beállíthatják például, hogy egy adott előfizető hány hívást kezdeményezhet egy adott hónapban. Az API bevételszerzéséhez a kvóták a rétegalapú előfizetések esetében is eltérően állíthatók be. Előfordulhat például, hogy egy alapszintű előfizetés legfeljebb 10 000 hívást indíthat havonta, de egy prémium szintű csomag havonta akár 100 000 000 hívást is indíthat.

Az Azure API Managementben a sebességkorlátokat általában gyorsabban propagálja a csomópontokon a kiugró értékek elleni védelem érdekében. Ezzel szemben a használatikvóta-információk hosszabb távon használatosak, ezért a megvalósításuk más.

Feljegyzés

Amikor a mögöttes számítási erőforrások újraindulnak a szolgáltatási platformon, az API Management a kvóta elérése után is kezelheti a kérelmeket rövid ideig.

Termékalapú szabályozás

Az adott előfizetésre vonatkozó sebességszabályozási képességek akkor hasznosak, ha az API-szolgáltató korlátokat alkalmaz azon fejlesztőkre, akik regisztrálták magukat az API használatára. Ez azonban nem segít például az API egyes végfelhasználóinak szabályozásában. A fejlesztő alkalmazásának egyetlen felhasználója felhasználhatja a teljes kvótát, majd megakadályozhatja, hogy a fejlesztő többi ügyfele is használni tudja az alkalmazást. Emellett számos olyan ügyfél, aki nagy mennyiségű kérést generálhat, korlátozhatja az alkalmi felhasználók hozzáférését.

Egyéni kulcsalapú szabályozás

Feljegyzés

A rate-limit-by-key szabályzatok és quota-by-key a szabályzatok nem érhetők el az Azure API Management használati szintjén. A quota-by-key szabályzat jelenleg nem érhető el a v2-szinteken.

A sebességkorlát-kulcs és a kvóta szerinti szabályzatok rugalmasabb megoldást nyújtanak a forgalomszabályozáshoz. Ezek a szabályzatok lehetővé teszik kifejezések meghatározását a forgalomhasználat nyomon követéséhez használt kulcsok azonosításához. Ennek működését egy példával szemlélteti a legegyszerűbben.

IP-cím szabályozása

Az alábbi szabályzatok egyetlen ügyfél IP-címét percenként csak 10 hívásra korlátozzák, összesen 1 000 000 hívással és 10 000 kilobájt sávszélességgel havonta.

<rate-limit-by-key  calls="10"
          renewal-period="60"
          counter-key="@(context.Request.IpAddress)" />

<quota-by-key calls="1000000"
          bandwidth="10000"
          renewal-period="2629800"
          counter-key="@(context.Request.IpAddress)" />

Ha az interneten minden ügyfél egyedi IP-címet használt, ez hatékony módja lehet a felhasználó általi használat korlátozásának. Valószínű azonban, hogy több felhasználó is egyetlen nyilvános IP-címet oszt meg, mivel nat-eszközön keresztül férnek hozzá az internethez. Ennek ellenére a hitelesítés nélküli hozzáférést lehetővé tevő API-k esetében a IpAddress legjobb megoldás lehet.

Felhasználói identitás szabályozása

Ha egy végfelhasználó hitelesítve van, akkor egy szabályozási kulcs hozható létre az adott felhasználót egyedileg azonosító információk alapján.

<rate-limit-by-key calls="10"
    renewal-period="60"
    counter-key="@(context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt()?.Subject)" />

Ez a példa bemutatja, hogyan nyerheti ki az Engedélyezési fejlécet, konvertálhatja objektummá JWT , és hogyan használhatja a jogkivonat tárgyát a felhasználó azonosítására, és hogyan használhatja azt sebességkorlátozó kulcsként. Ha a felhasználói identitás a JWT többi jogcím egyikeként van tárolva, akkor az érték a helyén használható.

Kombinált szabályzatok

Bár a felhasználóalapú szabályozási szabályzatok nagyobb felügyeletet biztosítanak, mint az előfizetés-alapú szabályozási szabályzatok, továbbra is van érték, amely mindkét képességet kombinálja. A termék-előfizetési kulcs szerinti szabályozás (a hívási sebesség korlátozása előfizetés szerint és a használati kvóta beállítása előfizetés szerint) nagyszerű módszer az API-k bevételszerzésének engedélyezésére a használati szintek alapján történő díjfizetéssel. A felhasználó általi szabályozás finomabb szabályozása kiegészítő, és megakadályozza, hogy az egyik felhasználó viselkedése rontsa a másik felhasználói élményét.

Ügyfélvezérelt szabályozás

Ha a szabályozási kulcs egy szabályzatkifejezéssel van definiálva, akkor az API-szolgáltató határozza meg a szabályozás hatókörét. Előfordulhat azonban, hogy egy fejlesztő szeretné szabályozni, hogy a díjszabás hogyan korlátozza a saját ügyfeleit. Ezt az API-szolgáltató engedélyezheti egy egyéni fejléc bevezetésével, amely lehetővé teszi, hogy a fejlesztő ügyfélalkalmazása kommunikálja a kulcsot az API-val.

<rate-limit-by-key calls="100"
          renewal-period="60"
          counter-key="@(request.Headers.GetValueOrDefault("Rate-Key",""))"/>

Így a fejlesztő ügyfélalkalmazása kiválaszthatja, hogyan szeretné létrehozni a sebességkorlátozó kulcsot. Az ügyfélfejlesztők saját tarifacsomagokat hozhatnak létre a kulcskészletek felhasználókhoz való kiosztásával és a kulcshasználat elforgatásával.

Összegzés

Az Azure API Management sebesség- és kvótaszabályozást biztosít az API-szolgáltatás védelméhez és hozzáadott érték teremtéséhez. Az új szabályozási szabályzatok egyéni hatókörkezelési szabályokkal lehetővé teszik, hogy részletesebben szabályozhassa ezeket a szabályzatokat, hogy az ügyfelek még jobb alkalmazásokat hozzanak létre. A cikkben szereplő példák bemutatják az új szabályzatok használatát az ügyfél IP-címeivel, a felhasználói identitással és az ügyfél által generált értékekkel rendelkező kulcsok gyártási sebességkorlátozásával. Az üzenetnek azonban számos más része is használható, például a felhasználói ügynök, az URL-címtöredékek, az üzenet mérete.

Következő lépések

Küldjön nekünk visszajelzést gitHub-problémaként ehhez a témakörhöz. Nagyszerű lenne hallani más lehetséges kulcsértékeket is, amelyek logikus választásnak minősültek a forgatókönyvekben.