Omówienie własnej bramy
DOTYCZY: Developer | Premia
Brama self-hosted jest opcjonalną, konteneryzowaną wersją domyślnej bramy zarządzanej uwzględnionej w każdej usłudze API Management. Jest to przydatne w scenariuszach, takich jak umieszczanie bram w tych samych środowiskach, w których hostujesz interfejsy API. Użyj własnej bramy, aby poprawić przepływ ruchu interfejsu API i spełnić wymagania dotyczące zabezpieczeń i zgodności interfejsu API.
W tym artykule wyjaśniono, jak funkcja własnej bramy usługi Azure API Management umożliwia hybrydowe i wielochmurowe zarządzanie interfejsami API, prezentuje architekturę wysokiego poziomu i wyróżnia jej możliwości.
Aby zapoznać się z omówieniem funkcji różnych ofert bram, zobacz Brama interfejsu API w usłudze API Management.
Zarządzanie hybrydowymi interfejsami API i w wielu chmurach
Funkcja bramy hostowanej samodzielnie rozszerza obsługę usługi API Management w środowiskach hybrydowych i dla wielu chmur oraz umożliwia organizacjom wydajne i bezpieczne zarządzanie interfejsami API hostowanymi lokalnie i w różnych chmurach z poziomu jednej usługi API Management na platformie Azure.
Dzięki własnej bramie klienci mają elastyczność wdrażania konteneryzowanej wersji składnika bramy usługi API Management w tych samych środowiskach, w których hostują swoje interfejsy API. Wszystkie bramy hostowane samodzielnie są zarządzane z poziomu usługi API Management, z którą są sfederowane, zapewniając klientom widoczność i ujednolicone środowisko zarządzania we wszystkich wewnętrznych i zewnętrznych interfejsach API.
Każda usługa API Management składa się z następujących kluczowych składników:
- Płaszczyzna zarządzania, uwidoczniona jako interfejs API, używana do konfigurowania usługi za pośrednictwem witryny Azure Portal, programu PowerShell i innych obsługiwanych mechanizmów.
- Brama (lub płaszczyzna danych), która jest odpowiedzialna za użycie serwera proxy w żądaniach interfejsu API, za stosowanie zasad i zbieranie danych telemetrycznych
- Portal deweloperów używany przez deweloperów do odnajdywania, uczenia się i dołączania w celu używania interfejsów API
Domyślnie wszystkie te składniki są wdrażane na platformie Azure, powodując cały ruch interfejsu API (pokazany jako solidne czarne strzałki na poniższej ilustracji) do przepływu przez platformę Azure niezależnie od tego, gdzie są hostowane zaplecza implementowane interfejsy API. Prostota operacyjna tego modelu wiąże się z kosztem zwiększonego opóźnienia, problemów ze zgodnością i w niektórych przypadkach dodatkowych opłat za transfer danych.
Wdrażanie bram hostowanych samodzielnie w tych samych środowiskach, w których są hostowane wdrożenia interfejsu API zaplecza, umożliwia przepływ ruchu interfejsu API bezpośrednio do interfejsów API zaplecza, co zmniejsza opóźnienie, optymalizuje koszty transferu danych i zapewnia zgodność, zachowując jednocześnie korzyści wynikające z posiadania jednego punktu zarządzania, wgląd i odnajdywanie wszystkich interfejsów API w organizacji niezależnie od tego, gdzie są hostowane ich wdrożenia.
Packaging
Brama hostowana samodzielnie jest dostępna jako obraz kontenera platformy Docker oparty na systemie Linux pochodzący z usługi Rejestr Artefaktów Microsoft. Można element wdrożyć w usłudze Docker, na platformie Kubernetes lub w dowolnym innym rozwiązaniu orkiestracji kontenerów działającym w klastrze serwera w środowisku lokalnym, infrastrukturze chmury lub w celach dotyczących ocen i rozwoju na komputerze osobistym. Bramę hostowaną samodzielnie można również wdrożyć jako rozszerzenie klastra w klastrze platformy Kubernetes z obsługą usługi Azure Arc.
Obrazy kontenerów
Udostępniamy różne obrazy kontenerów dla bram hostowanych samodzielnie, aby spełnić Twoje potrzeby:
Konwencja tagów | Zalecenie | Przykład | Tag kroczący | Zalecane w środowisku produkcyjnym |
---|---|---|---|---|
{major}.{minor}.{patch} |
Użyj tego tagu, aby zawsze uruchamiać tę samą wersję bramy | 2.0.0 |
❌ | ✔️ |
v{major} |
Użyj tego tagu, aby zawsze uruchamiać wersję główną bramy z każdą nową funkcją i poprawką. | v2 |
✔️ | ❌ |
v{major}-preview |
Użyj tego tagu, jeśli zawsze chcesz uruchomić nasz najnowszy obraz kontenera w wersji zapoznawczej. | v2-preview |
✔️ | ❌ |
latest |
Użyj tego tagu, jeśli chcesz ocenić bramę hostowaną samodzielnie. | latest |
✔️ | ❌ |
beta 1 |
Użyj tego tagu, jeśli chcesz ocenić wersje zapoznawcza bramy hostowanej samodzielnie. | beta |
✔️ | ❌ |
Pełną listę dostępnych tagów można znaleźć tutaj.
1Wersje zapoznawcza nie są oficjalnie obsługiwane i są przeznaczone tylko do celów eksperymentalnych. Zobacz zasady obsługi własnej bramy.
Używanie tagów w naszych oficjalnych opcjach wdrażania
Nasze opcje wdrażania w witrynie Azure Portal używają tagu v2
, który umożliwia klientom korzystanie z najnowszej wersji obrazu kontenera bramy własnej bramy w wersji 2 ze wszystkimi aktualizacjami funkcji i poprawkami.
Uwaga
Udostępniamy polecenia i fragmenty kodu YAML jako odwołanie. Jeśli chcesz, możesz użyć bardziej szczegółowego tagu.
Podczas instalowania za pomocą naszego wykresu Helm tagowanie obrazów jest zoptymalizowane pod kątem Ciebie. Wersja aplikacji pakietu Helm przypina bramę do danej wersji i nie korzysta z elementu latest
.
Dowiedz się więcej na temat sposobu instalowania własnej bramy usługi API Management na platformie Kubernetes przy użyciu programu Helm.
Ryzyko użycia tagów rolowych
Tagi stopniowe to tagi, które są potencjalnie aktualizowane po wydaniu nowej wersji obrazu kontenera. Dzięki temu użytkownicy kontenerów mogą odbierać aktualizacje obrazu kontenera bez konieczności aktualizowania ich wdrożeń.
Oznacza to, że można potencjalnie uruchamiać różne wersje równolegle bez zauważenia go, na przykład podczas wykonywania akcji skalowania po v2
zaktualizowaniu tagu.
Przykład — v2
tag został wydany z obrazem 2.0.0
kontenera, ale gdy 2.1.0
zostanie wydany, v2
tag zostanie połączony z obrazem 2.1.0
.
Ważne
Rozważ użycie określonego tagu wersji w środowisku produkcyjnym, aby uniknąć niezamierzonego uaktualnienia do nowszej wersji.
Łączność z platformą Azure
Bramy hostowane samodzielnie wymagają wychodzącej łączności protokołów TCP/IP z platformą Azure na porcie 443. Każda brama hostowana samodzielnie musi być skojarzona z jedną usługą API Management i skonfigurowana za pośrednictwem jej płaszczyzny zarządzania. Brama hostowana samodzielnie używa łączności z platformą Azure w celu:
- Raportowania swojego stanu przez wysyłanie komunikatów pulsu co minutę
- Regularnego sprawdzania (co 10 sekund) i stosowania aktualizacji konfiguracji za każdym razem, gdy są dostępne
- Wysyłania metryk do usługi Azure Monitor, jeśli została ta opcja skonfigurowana
- Wysyłania zdarzeń do usługi Application Insights, jeśli została ta opcja ustawiona
Zależności nazwy FQDN
Aby działać prawidłowo, każda brama hostowana samodzielnie wymaga łączności wychodzącej na porcie 443 do następujących punktów końcowych skojarzonych z wystąpieniem usługi API Management opartym na chmurze:
opis | Wymagane dla wersji 1 | Wymagane dla wersji 2 | Uwagi |
---|---|---|---|
Nazwa hosta punktu końcowego konfiguracji | <apim-service-name>.management.azure-api.net |
<apim-service-name>.configuration.azure-api.net 1 |
Niestandardowe nazwy hostów są również obsługiwane i mogą być używane zamiast domyślnej nazwy hosta. |
Publiczny adres IP wystąpienia usługi API Management | ✔️ | ✔️ | Adres IP lokalizacji podstawowej jest wystarczający. |
Publiczne adresy IP tagu usługi Azure Storage | ✔️ | Opcjonalne2 | Adresy IP muszą odpowiadać podstawowej lokalizacji wystąpienia usługi API Management. |
Nazwa hosta konta usługi Azure Blob Storage | ✔️ | Opcjonalne2 | Konto skojarzone z wystąpieniem (<blob-storage-account-name>.blob.core.windows.net ) |
Nazwa hosta konta usługi Azure Table Storage | ✔️ | Opcjonalne2 | Konto skojarzone z wystąpieniem (<table-storage-account-name>.table.core.windows.net ) |
Punkty końcowe dla usługi Azure Resource Manager | ✔️ | Opcjonalne3 | Wymagane punkty końcowe to management.azure.com . |
Punkty końcowe dla integracji z firmą Microsoft Entra | ✔️ | Opcjonalnie4 | Wymagane punkty końcowe to <region>.login.microsoft.com i login.microsoftonline.com . |
Punkty końcowe na potrzeby integracji z usługą aplikacja systemu Azure Insights | Opcjonalnie5 | Opcjonalnie5 | Minimalne wymagane punkty końcowe to:
|
Punkty końcowe na potrzeby integracji z usługą Event Hubs | Opcjonalnie5 | Opcjonalnie5 | Dowiedz się więcej w dokumentacji usługi Azure Event Hubs |
Punkty końcowe na potrzeby integracji zewnętrznej pamięci podręcznej | Opcjonalnie5 | Opcjonalnie5 | To wymaganie zależy od używanej zewnętrznej pamięci podręcznej |
1W przypadku wystąpienia usługi API Management w wewnętrznej sieci wirtualnej zobacz Łączność w wewnętrznej sieci wirtualnej.
2 Wymagane tylko w wersji 2, gdy inspektor interfejsu API lub przydziały są używane w zasadach.
3Wymagane tylko w przypadku korzystania z uwierzytelniania entra firmy Microsoft w celu zweryfikowania uprawnień RBAC.
4Wymagane tylko w przypadku korzystania z uwierzytelniania Microsoft Entra lub zasad związanych z firmą Microsoft Entra.
5Wymagane tylko wtedy, gdy funkcja jest używana i wymaga informacji o publicznym adresie IP, porcie i nazwie hosta.
Ważne
- Nazwy hostów DNS muszą być rozpoznawane jako adresy IP, a odpowiednie adresy IP muszą być osiągalne.
- Skojarzone nazwy kont magazynu są wyświetlane na stronie Stan łączności sieciowej usługi w witrynie Azure Portal.
- Publiczne adresy IP bazowe skojarzonych kont magazynu są dynamiczne i mogą ulec zmianie bez powiadomienia.
Łączność w wewnętrznej sieci wirtualnej
Łączność prywatna — jeśli brama self-hosted jest wdrożona w sieci wirtualnej, włącz prywatną łączność z punktem końcowym konfiguracji w wersji 2 z lokalizacji własnej bramy, na przykład przy użyciu prywatnego systemu DNS w sieci równorzędnej.
Łączność z Internetem — jeśli brama hostowana samodzielnie musi połączyć się z punktem końcowym konfiguracji w wersji 2 za pośrednictwem Internetu, skonfiguruj niestandardową nazwę hosta dla punktu końcowego konfiguracji i uwidocznij punkt końcowy przy użyciu usługi Application Gateway.
Opcje uwierzytelniania
Aby uwierzytelnić połączenie między własną bramą a punktem końcowym konfiguracji wystąpienia usługi API Management opartego na chmurze, w ustawieniach konfiguracji kontenera bramy są dostępne następujące opcje.
Opcja | Kwestie wymagające rozważenia |
---|---|
Uwierzytelnianie Microsoft Entra | Konfigurowanie co najmniej jednej aplikacji firmy Microsoft Entra na potrzeby dostępu do bramy Zarządzanie dostępem oddzielnie na aplikację Konfigurowanie dłuższych czasów wygaśnięcia dla wpisów tajnych zgodnie z zasadami organizacji Używanie standardowych procedur firmy Microsoft Entra do przypisywania lub odwołowywania uprawnień użytkowników lub grup do aplikacji oraz rotacji wpisów tajnych |
Token dostępu bramy (nazywany również kluczem uwierzytelniania) | Token wygasa co 30 dni i musi zostać odnowiony w kontenerach Wspierane przez klucz bramy, który można obracać niezależnie (na przykład w celu odwołania dostępu) Ponowne generowanie klucza bramy powoduje unieważnienie wszystkich utworzonych za jego pomocą tokenów dostępu |
Błędy łączności
W przypadku utraty łączności z platformą Azure brama self-hosted nie może odbierać aktualizacji konfiguracji, zgłaszać jego stanu lub przekazywać dane telemetryczne.
Brama hostowana samodzielnie jest przeznaczona do "awarii statycznej" i może przetrwać tymczasową utratę łączności z platformą Azure. Można go wdrożyć z lokalną kopią zapasową konfiguracji lub bez niej. Dzięki kopii zapasowej konfiguracji bramy hostowane samodzielnie regularnie zapisują kopię zapasową najnowszej pobranej konfiguracji na trwałym woluminie dołączonym do kontenera lub zasobnika.
Po wyłączeniu kopii zapasowej konfiguracji i przerwaniu łączności z platformą Azure:
- Uruchamianie własnych bram będzie nadal działać przy użyciu kopii w pamięci konfiguracji
- Zatrzymane bramy self-hosted nie będą mogły uruchomić
Po włączeniu kopii zapasowej konfiguracji i przerwaniu łączności z platformą Azure:
- Uruchamianie własnych bram będzie nadal działać przy użyciu kopii w pamięci konfiguracji
- Zatrzymane bramy self-hosted będą mogły rozpocząć korzystanie z kopii zapasowej konfiguracji
Po przywróceniu łączności każda własna brama, której dotyczy awaria, automatycznie połączy się ponownie ze skojarzą usługą API Management i pobierze wszystkie aktualizacje konfiguracji, które wystąpiły, gdy brama była "w trybie offline".
Zabezpieczenia
Ograniczenia
Następujące funkcje znalezione w bramach zarządzanych nie są dostępne w bramach hostowanych samodzielnie:
- Wznowienie sesji PROTOKOŁU TLS.
- Renegocjacja certyfikatu klienta. Aby korzystać z uwierzytelniania certyfikatu klienta, użytkownicy interfejsu API muszą przedstawić swoje certyfikaty w ramach początkowego uzgadniania protokołu TLS. Aby zapewnić to zachowanie, włącz ustawienie Negocjuj certyfikat klienta podczas konfigurowania niestandardowej nazwy hosta bramy (nazwy domeny).
Transport Layer Security (TLS)
Ważne
To omówienie dotyczy tylko własnej bramy w wersji 1 i 2.
Obsługiwane protokoły
Brama hostowana samodzielnie zapewnia domyślnie obsługę protokołu TLS w wersji 1.2.
Klienci korzystający z domen niestandardowych mogą włączyć protokół TLS w wersji 1.0 i/lub 1.1 na płaszczyźnie sterowania.
Dostępne zestawy szyfrowania
Ważne
To omówienie dotyczy tylko własnej bramy w wersji 2.
Brama hostowana samodzielnie używa następujących zestawów szyfrowania dla połączeń klienta i serwera:
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
Zarządzanie zestawami szyfrowania
Od wersji 2.1.1 lub nowszej można zarządzać szyframi używanymi w ramach konfiguracji:
net.server.tls.ciphers.allowed-suites
Umożliwia zdefiniowanie rozdzielanej przecinkami listy szyfrów używanych na potrzeby połączenia TLS między klientem interfejsu API a bramą hostowaną samodzielnie.net.client.tls.ciphers.allowed-suites
Umożliwia zdefiniowanie rozdzielanej przecinkami listy szyfrów używanych na potrzeby połączenia TLS między własną bramą a zapleczem.
Następne kroki
- Dowiedz się więcej o różnych bramach w naszym przeglądzie bramy interfejsu API
- Dowiedz się więcej o zasadach pomocy technicznej dla własnej bramy
- Dowiedz się więcej o usłudze API Management w świecie hybrydowym i wielochmurowym
- Dowiedz się więcej na temat wskazówek dotyczących uruchamiania własnej bramy na platformie Kubernetes w środowisku produkcyjnym
- Wdrażanie własnej bramy na platformie Docker
- Wdrażanie własnej bramy na platformie Kubernetes
- Wdrażanie własnej bramy w klastrze Kubernetes z obsługą usługi Azure Arc
- Wdrażanie własnej bramy w usłudze Azure Container Apps
- Ustawienia konfiguracji własnej bramy
- Dowiedz się więcej o możliwościach obserwacji w usłudze API Management
- Dowiedz się więcej o integracji języka Dapr z własną bramą