Prenumerationer i Azure API Management
GÄLLER FÖR: Alla API Management-nivåer
I Azure API Management är prenumerationer det vanligaste sättet för API-konsumenter att komma åt API:er som publicerats via en API Management-instans. Den här artikeln innehåller en översikt över konceptet.
Kommentar
En API Management-prenumeration används specifikt för att anropa API:er via API Management med hjälp av en prenumerationsnyckel. Det är inte samma sak som en Azure-prenumeration.
Vad är prenumerationer?
Genom att publicera API:er via API Management kan du enkelt skydda API-åtkomst med hjälp av prenumerationsnycklar. Utvecklare som behöver använda publicerade API:er måste inkludera en giltig prenumerationsnyckel i HTTP-begäranden när de anropar dessa API:er. Utan en giltig prenumerationsnyckel blir anropen:
- Avvisade omedelbart av API Management gateway.
- Inte vidarebefordrade till serverdelstjänsterna.
För att få åtkomst till API:er behöver utvecklare en prenumeration och en prenumerationsnyckel. En prenumeration är en namngiven container för ett par prenumerationsnycklar.
Ytterligare
- Utvecklare kan hämta prenumerationer utan att behöva godkännande från API-utgivare.
- API-utgivare kan skapa prenumerationer direkt för API-konsumenter.
Dricks
API Management stöder även andra mekanismer för att skydda åtkomsten till API:er, inklusive följande exempel:
Hantera prenumerationsnycklar
Att regelbundet återskapa nycklar är en vanlig säkerhetsåtgärd. Precis som de flesta Azure-tjänster som kräver en prenumerationsnyckel genererar API Management nycklar i par. Varje program som använder tjänsten kan växla från nyckel A till nyckel B och återskapa nyckel A med minimala störningar och vice versa.
Du kan konfigurera specifika nycklar i stället för att återskapa dem genom att anropa Azure API Management-prenumerationen – Skapa eller uppdatera Azure REST API. properties.primaryKey
Mer specifikt måste och/eller properties.secondaryKey
anges i HTTP-begärandetexten.
Kommentar
- API Management tillhandahåller inte inbyggda funktioner för att hantera livscykeln för prenumerationsnycklar, till exempel att ange förfallodatum eller automatiskt rotera nycklar. Du kan utveckla arbetsflöden för att automatisera dessa processer med hjälp av verktyg som Azure PowerShell eller Azure SDK:er.
- För att framtvinga tidsbegränsad åtkomst till API:er kan API-utgivare använda principer med prenumerationsnycklar eller använda en mekanism som ger inbyggd förfallotid, till exempel tokenbaserad autentisering.
Omfång för prenumerationer
Prenumerationer kan associeras med olika omfång: produkt, alla API:er eller ett enskilt API.
Prenumerationer för en produkt
Traditionellt har prenumerationer i API Management associerats med ett enda produktomfång . Utvecklare:
- Hittade listan över produkter på utvecklarportalen.
- Skickade prenumerationsbegäranden för de produkter som de ville använda.
- Använd nycklarna i dessa prenumerationer (godkända antingen automatiskt eller av API-utgivare) för att få åtkomst till alla API:er i produkten.
För närvarande visar utvecklarportalen endast prenumerationer för produktomfattning under avsnittet Användarprofil .
Prenumerationer för alla API:er eller ett enskilt API
Du kan också skapa nycklar som ger åtkomst till något av följande:
- Ett enda API, eller
- Alla API:er i en API Management-instans.
I dessa fall behöver du inte skapa en produkt och lägga till API:er i den först.
Prenumeration med all åtkomst
Varje API Management-instans levereras med en inbyggd prenumeration med all åtkomst som ger åtkomst till alla API:er. Den här prenumerationen med tjänstomfattning gör det enkelt för tjänstägare att testa och felsöka API:er i testkonsolen.
Varning
Prenumerationen med all åtkomst ger åtkomst till varje API i API Management-instansen och bör endast användas av behöriga användare. Använd aldrig den här prenumerationen för rutinmässig API-åtkomst eller bädda in prenumerationsnyckeln för all åtkomst i klientappar.
Kommentar
Om du använder en API-begränsad prenumeration, en prenumeration med alla API:er eller den inbyggda all-access-prenumerationen tillämpas inte principer som konfigurerats i produktomfånget på begäranden från den prenumerationen.
Fristående prenumerationer
API Management tillåter även fristående prenumerationer som inte är associerade med ett utvecklarkonto. Den här funktionen visar sig vara användbar i scenarier som liknar flera utvecklare eller team som delar en prenumeration.
Om du skapar en prenumeration utan att tilldela en ägare blir den en fristående prenumeration. Om du vill ge utvecklare och resten av teamet åtkomst till den fristående prenumerationsnyckeln:
- Dela prenumerationsnyckeln manuellt.
- Använd ett anpassat system för att göra prenumerationsnyckeln tillgänglig för ditt team.
Skapa och hantera prenumerationer i Azure Portal
API-utgivare kan skapa prenumerationer direkt i Azure Portal.
När den skapas i portalen är en prenumeration i aktivt tillstånd, vilket innebär att en prenumerant kan anropa ett associerat API med hjälp av en giltig prenumerationsnyckel. Du kan ändra prenumerationens tillstånd efter behov. Du kan till exempel pausa, avbryta eller ta bort en prenumeration (inklusive den inbyggda all-access-prenumerationen) för att förhindra API-åtkomst.
Använda en prenumerationsnyckel
En prenumerant kan använda en API Management-prenumerationsnyckel på något av två sätt:
Lägg till HTTP-huvudet Ocp-Apim-Subscription-Key i begäran och skicka värdet för en giltig prenumerationsnyckel.
Inkludera frågeparametern subscription-key och ett giltigt värde i URL:en. Frågeparametern kontrolleras endast om rubriken inte finns.
Dricks
Ocp-Apim-Subscription-Key är standardnamnet för prenumerationsnyckelrubriken och prenumerationsnyckeln är standardnamnet för frågeparametern. Om du vill kan du ändra dessa namn i inställningarna för varje API. I portalen uppdaterar du till exempel dessa namn på fliken Inställningar i ett API.
Kommentar
När den ingår i en begäranderubrik eller frågeparameter skickas prenumerationsnyckeln som standard till serverdelen och kan exponeras i serverdelsövervakningsloggar eller andra system. Om detta betraktas som känsliga data kan du konfigurera en princip i slutet av inbound
avsnittet för att ta bort prenumerationsnyckelrubriken (set-header
) eller frågeparametern (set-query-parameter
).
Aktivera eller inaktivera prenumerationskrav för API eller produktåtkomst
Som standard när du skapar ett API krävs en prenumerationsnyckel för API-åtkomst. När du skapar en produkt krävs som standard en prenumerationsnyckel för att få åtkomst till alla API:er som läggs till i produkten. I vissa scenarier kanske en API-utgivare vill publicera en produkt eller ett visst API till allmänheten utan krav på prenumerationer. Även om en utgivare kan välja att aktivera oskyddad (anonym) åtkomst till vissa API:er rekommenderar vi att du konfigurerar en annan mekanism för att skydda klientåtkomst.
Varning
Var försiktig när du konfigurerar en produkt eller ett API som inte kräver en prenumeration. Den här konfigurationen kan vara alltför tillåtande och kan göra ett API mer sårbart för vissa API-säkerhetshot.
Kommentar
Öppna produkter har inställningen Kräver prenumeration inaktiverad, vilket innebär att användarna inte behöver prenumerera på den. Därför visas inte öppna produkter på sidan Produkter i utvecklarportalen.
Du kan inaktivera prenumerationskravet när du skapar ett API eller en produkt, eller vid ett senare tillfälle.
Så här inaktiverar du prenumerationskravet med hjälp av portalen:
- Inaktivera krav för produkten – På sidan Inställningar för produkten inaktiverar du Kräver prenumeration
- Inaktivera krav för API – Inaktivera Prenumeration krävs på sidan Inställningar i API:et.
När prenumerationskravet har inaktiverats kan du komma åt det valda API:et eller API:erna utan en prenumerationsnyckel.
Så hanterar API Management begäranden med eller utan prenumerationsnycklar
API-begäran med en prenumerationsnyckel
När API Management tar emot en API-begäran från en klient med en prenumerationsnyckel hanterar den begäran enligt följande regler:
Kontrollera först om det är en giltig nyckel som är associerad med en aktiv prenumeration, antingen:
- En prenumeration som är begränsad till API:et
- En prenumeration som är begränsad till en produkt som har tilldelats till API:et
- En prenumeration som är begränsad till alla API:er
- Prenumerationen med tjänstomfattning (inbyggd prenumeration med åtkomst till allt)
Om det finns en giltig nyckel för en aktiv prenumeration i ett lämpligt omfång tillåts åtkomst. Principer tillämpas beroende på konfigurationen av principdefinitionen i det omfånget.
Om nyckeln inte är giltig men det finns en produkt som innehåller API:et men inte kräver en prenumeration (en öppen produkt) ignorerar du nyckeln och hanterar den som en API-begäran utan en prenumerationsnyckel (se nedan).
Annars nekas åtkomst (401 Åtkomst nekad fel).
API-begäran utan en prenumerationsnyckel
När API Management tar emot en API-begäran från en klient med en prenumerationsnyckel hanterar den begäran enligt följande regler:
- Kontrollera först om det finns en produkt som innehåller API:et men som inte kräver någon prenumeration (en öppen produkt). Om den öppna produkten finns hanterar du begäran i kontexten för API:er, principer och åtkomstregler som konfigurerats för den öppna produkten. Ett API kan associeras med högst en öppen produkt.
- Om en öppen produkt inklusive API:et inte hittas kontrollerar du om API:et kräver en prenumeration. Om en prenumeration inte krävs hanterar du begäran i kontexten för det API:et och den åtgärden.
- Om ingen konfigurerad produkt eller API hittas nekas åtkomst (401 Åtkomst nekad fel).
Sammanfattningstabell
I följande tabell sammanfattas hur gatewayen hanterar API-begäranden med eller utan prenumerationsnycklar i olika scenarier. Konfigurationer som potentiellt kan aktivera oavsiktlig, anonym API-åtkomst noteras.
Alla produkter som har tilldelats TILL API:et kräver en prenumeration | API kräver prenumeration | API-anrop med prenumerationsnyckel | API-anrop utan prenumerationsnyckel | Vanliga scenarier |
---|---|---|---|---|
✔️ | ✔️ | Åtkomst tillåts: • Produktomfattningsnyckel • API-omfångsnyckel • Alla API:er-omfångsnyckel • Tjänstomfattningsnyckel Åtkomst nekad: • Annan nyckel som inte är begränsad till tillämplig produkt eller API |
Åtkomst nekad | Skyddad API-åtkomst med hjälp av en prenumeration med produktomfattning eller API-omfång |
✔️ | ❌ | Åtkomst tillåts: • Produktomfattningsnyckel • API-omfångsnyckel • Alla API:er-omfångsnyckel • Tjänstomfattningsnyckel • Annan nyckel som inte är begränsad till tillämplig produkt eller API |
Åtkomst tillåten (API-kontext) | • Skyddad API-åtkomst med produktomfattande prenumeration • Anonym åtkomst till API. Om anonym åtkomst inte är avsedd konfigurerar du principer på API-nivå för att framtvinga autentisering och auktorisering. |
❌1 | ✔️ | Åtkomst tillåts: • Produktomfattningsnyckel • API-omfångsnyckel • Alla API:er-omfångsnyckel • Tjänstomfattningsnyckel Åtkomst nekad: • Annan nyckel som inte är begränsad till tillämplig produkt eller API |
Åtkomst tillåten (öppen produktkontext) | • Skyddad API-åtkomst med API-begränsad prenumeration • Anonym åtkomst till API. Om anonym åtkomst inte är avsedd konfigurerar du med produktprinciper för att framtvinga autentisering och auktorisering |
❌1 | ❌ | Åtkomst tillåts: • Produktomfattningsnyckel • API-omfångsnyckel • Alla API:er-omfångsnyckel • Tjänstomfattningsnyckel • Annan nyckel som inte är begränsad till tillämplig produkt eller API |
Åtkomst tillåten (öppen produktkontext) | Anonym åtkomst till API. Om anonym åtkomst inte är avsedd konfigurerar du med produktprinciper för att framtvinga autentisering och auktorisering |
1 Det finns en öppen produkt som är associerad med API:et.
Att tänka på
- API-åtkomst i en produktkontext är densamma, oavsett om produkten publiceras eller inte. När produkten avpubliceras döljs den från utvecklarportalen, men nya eller befintliga prenumerationsnycklar ogiltigförklaras inte.
- Om ett API inte kräver prenumerationsautentisering behandlas alla API-begäranden som innehåller en prenumerationsnyckel på samma sätt som en begäran utan en prenumerationsnyckel. Prenumerationsnyckeln ignoreras.
- API-åtkomst "kontext" avser de principer och åtkomstkontroller som tillämpas i ett visst omfång (till exempel API eller produkt).
Nästa steg
Få mer information om API Management:
- Lär dig hur API Management-principer tillämpas i olika omfång.
- Lär dig andra begrepp i API Management.
- Följ våra självstudier för att lära dig mer om API Management.
- Se vår sida med vanliga frågor och svar om du vill ha vanliga frågor.