Subskrypcje w usłudze Azure API Management

W usłudze Azure API Management subskrypcje są najczęstszym sposobem uzyskiwania dostępu do interfejsów API publikowanych za pośrednictwem wystąpienia API Management. Ten artykuł zawiera omówienie koncepcji.

Co to są subskrypcje?

Publikując interfejsy API za pośrednictwem API Management, można łatwo zabezpieczyć dostęp do interfejsu API przy użyciu kluczy subskrypcji. Deweloperzy, którzy muszą korzystać z opublikowanych interfejsów API, muszą uwzględnić prawidłowy klucz subskrypcji w żądaniach HTTP podczas wywoływania tych interfejsów API. Bez prawidłowego klucza subskrypcji wywołania to:

  • Odrzucone natychmiast przez bramę API Management.
  • Nie są przekazywane do usług zaplecza.

Aby uzyskać dostęp do interfejsów API, musisz mieć subskrypcję i klucz subskrypcji. Subskrypcja jest nazwanym kontenerem dla pary kluczy subskrypcji.

Uwaga

Regularne ponowne generowanie kluczy jest typowym środkiem ostrożności bezpieczeństwa. Podobnie jak w przypadku większości usług platformy Azure wymagających klucza subskrypcji, API Management generuje klucze w parach. Każda aplikacja korzystająca z usługi może przełączyć się z klucza A na klucz B i ponownie wygenerować klucz A z minimalnymi zakłóceniami i odwrotnie.

W dodatku

  • Deweloperzy mogą uzyskiwać subskrypcje bez zatwierdzania od wydawców interfejsu API.
  • Wydawcy interfejsu API mogą tworzyć subskrypcje bezpośrednio dla użytkowników interfejsu API.

Porada

API Management obsługuje również inne mechanizmy zabezpieczania dostępu do interfejsów API, w tym następujące przykłady:

Zakres subskrypcji

Subskrypcje mogą być skojarzone z różnymi zakresami: produktem, wszystkimi interfejsami API lub pojedynczym interfejsem API.

Subskrypcje produktu

Tradycyjnie subskrypcje w API Management były skojarzone z jednym zakresem produktu. Deweloperzy:

  • Lista produktów znajduje się w portalu deweloperów.
  • Przesłane żądania subskrypcji dla produktów, których chcieli użyć.
  • Użyj kluczy w tych subskrypcjach (zatwierdzonych automatycznie lub przez wydawców interfejsu API), aby uzyskać dostęp do wszystkich interfejsów API w produkcie.

Obecnie portal deweloperów wyświetla tylko subskrypcje zakresu produktów w sekcji Profil użytkownika .

Subskrypcje produktu

Subskrypcje dla wszystkich interfejsów API lub pojedynczego interfejsu API

Możesz również utworzyć klucze, które udzielają dostępu do jednego z następujących:

  • Pojedynczy interfejs API lub
  • Wszystkie interfejsy API w wystąpieniu API Management.

W takich przypadkach nie trzeba tworzyć produktu i dodawać do niego interfejsów API.

Subskrypcja z dostępem do wszystkich

Każde wystąpienie API Management ma niezmienną subskrypcję wszystkich interfejsów API (nazywaną również subskrypcją z dostępem do wszystkich). Ta wbudowana subskrypcja ułatwia testowanie i debugowanie interfejsów API w konsoli testowej.

Ostrzeżenie

Subskrypcja z dostępem wszystkim umożliwia dostęp do każdego interfejsu API w wystąpieniu API Management i powinien być używany tylko przez autoryzowanych użytkowników. Nigdy nie używaj tej subskrypcji na potrzeby rutynowego dostępu do interfejsu API ani osadzania klucza subskrypcji z dostępem do wszystkich w aplikacjach klienckich.

Uwaga

Jeśli używasz subskrypcji o zakresie interfejsu API lub subskrypcji z dostępem do wszystkich, wszystkie zasady skonfigurowane w zakresie produktu nie są stosowane do żądań z tej subskrypcji.

Subskrypcje autonomiczne

API Management umożliwia również autonomiczne subskrypcje, które nie są skojarzone z kontem dewelopera. Ta funkcja okazuje się przydatna w scenariuszach podobnych do kilku deweloperów lub zespołów korzystających z subskrypcji.

Tworzenie subskrypcji bez przypisywania właściciela sprawia, że jest to subskrypcja autonomiczna. Aby udzielić deweloperom i pozostałej części zespołu dostępu do klucza subskrypcji autonomicznej, wykonaj następujące czynności:

  • Ręcznie udostępnij klucz subskrypcji.
  • Użyj niestandardowego systemu, aby udostępnić klucz subskrypcji zespołowi.

Tworzenie subskrypcji w Azure Portal

Wydawcy interfejsu API mogą tworzyć subskrypcje bezpośrednio w Azure Portal.

Jak API Management obsługuje żądania z kluczami subskrypcji lub bez

Domyślnie deweloper może uzyskać dostęp tylko do produktu lub interfejsu API przy użyciu klucza subskrypcji. W niektórych scenariuszach wydawcy interfejsu API mogą chcieć opublikować produkt lub określony interfejs API publicznie bez konieczności korzystania z subskrypcji. Chociaż wydawca może włączyć niezabezpieczony dostęp do niektórych interfejsów API, zalecane jest skonfigurowanie innego mechanizmu zabezpieczania dostępu klienta.

Przestroga

Należy zachować ostrożność podczas konfigurowania produktu lub interfejsu API, który nie wymaga subskrypcji. Ta konfiguracja może być nadmiernie permisywna i może sprawić, że interfejs API będzie bardziej podatny na pewne zagrożenia bezpieczeństwa interfejsu API.

Aby wyłączyć wymaganie dotyczące subskrypcji przy użyciu portalu:

  • Wyłącz wymaganie dotyczące produktu — wyłącz wymaga subskrypcji na stronie Ustawienia produktu.
  • Wyłącz wymaganie dotyczące interfejsu API — wyłącz subskrypcję wymaganą na stronie Ustawienia interfejsu API.

Po wyłączeniu wymagania dotyczącego subskrypcji można uzyskać dostęp do wybranego interfejsu API lub interfejsów API bez klucza subskrypcji.

Gdy API Management odbiera żądanie interfejsu API od klienta bez klucza subskrypcji, obsługuje żądanie zgodnie z następującymi regułami:

  1. Najpierw sprawdź istnienie produktu, który zawiera interfejs API, ale nie wymaga subskrypcji ( otwartego produktu). Jeśli otwarty produkt istnieje, obsłuż żądanie w kontekście interfejsów API, zasad i reguł dostępu skonfigurowanych dla produktu.
  2. Jeśli otwarty produkt zawierający interfejs API nie zostanie znaleziony, sprawdź, czy interfejs API wymaga subskrypcji. Jeśli subskrypcja nie jest wymagana, obsłuż żądanie w kontekście tego interfejsu API i operacji.
  3. Jeśli nie znaleziono skonfigurowanego produktu lub interfejsu API, dostęp zostanie odrzucony.

Następne kroki

Uzyskaj więcej informacji na temat API Management: