opcje sieci Azure Functions

W tym artykule opisano funkcje sieciowe dostępne w ramach opcji hostingu dla Azure Functions. Poniższe opcje sieciowe można podzielić na funkcje sieciowe dla ruchu przychodzącego i wychodzącego. Funkcje ruchu przychodzącego umożliwiają ograniczenie dostępu do aplikacji, natomiast funkcje ruchu wychodzącego umożliwiają łączenie aplikacji z zasobami zabezpieczonymi przez sieć wirtualną i kontrolowanie sposobu kierowania ruchu wychodzącego.

Modele hostingu mają różne poziomy izolacji sieci. Wybranie prawidłowego rozwiązania pomaga spełnić wymagania dotyczące izolacji sieci.

Funkcja Plan Elastycznego Zużycia Plan zużycia Plan Premium Dedykowany plan/ASE Container Apps1
Ograniczenia dostępu przychodzącego 2
Prywatne punkty końcowe (przychodzące)
Punkty końcowe usługi (ruch przychodzący)
Integracja z siecią wirtualną (ruch wychodzący) 3
Połączenia hybrydowe ✅ (tylko Windows) ✅ (tylko Windows) ✅ (tylko Windows)
  1. Aby uzyskać więcej informacji, zobacz Networking w środowisku Azure Container Apps.
  2. Zarządzana za pomocą konfiguracji ruchu przychodzącego środowiska usługi Container Apps.
  3. Plan dedykowany/środowisko ASE obsługuje również integrację z siecią wirtualną wymaganą przez obecność bramy.

Zasoby szybkiego startu

Skorzystaj z poniższych zasobów, aby szybko rozpocząć pracę z Azure Functions scenariuszami sieciowymi. Te zasoby są przywołyne w całym artykule.

Ograniczenia dostępu przychodzącego

Możesz użyć ograniczeń dostępu, aby zdefiniować listę adresów IP uporządkowaną według priorytetów, które mają dozwolony lub zablokowany dostęp do aplikacji. Lista może zawierać adresy IPv4 i IPv6 lub określone podsieci sieci wirtualnej z użyciem service endpoints. Jeśli lista zawiera co najmniej jeden wpis, na końcu listy istnieje niejawny wpis „odmów wszystkim”. Ograniczenia adresów IP współpracują ze wszystkimi opcjami hostingu funkcji.

Uwaga

Za pomocą ograniczeń sieci możesz wdrożyć tylko w ramach swojej sieci wirtualnej lub po dodaniu adresu IP maszyny, której używasz do uzyskiwania dostępu do portalu Azure, do listy Safe Recipients. Jednak nadal można zarządzać funkcją przy użyciu portalu.

Aby dowiedzieć się więcej, zobacz Azure App Service statyczne ograniczenia dostępu.

W przypadku uruchamiania w usłudze Container Apps dostęp przychodzący jest zarządzany za pośrednictwem konfiguracji ruchu przychodzącego środowiska Container Apps zamiast ograniczeń dostępu do usługi App Service. Aby uzyskać więcej informacji, zobacz ograniczenia IP w Azure Container Apps.

Prywatne punkty końcowe (przychodzące)

Azure prywatny punkt końcowy to interfejs sieciowy, który łączy Cię prywatnie i bezpiecznie z usługą obsługiwaną przez Azure Private Link. Prywatny punkt końcowy używa prywatnego adresu IP z Twojej sieci wirtualnej, skutecznie przenosząc usługę do sieci wirtualnej.

Możesz użyć prywatnego punktu końcowego dla funkcji hostowanych w planach Flex Consumption, Elastic Premium i Dedicated (App Service).

Jeśli chcesz wykonywać wywołania do prywatnych punktów końcowych, upewnij się, że wyszukiwania DNS są rozpoznawane jako prywatny punkt końcowy. To zachowanie można wymusić na jeden z następujących sposobów:

  • Integracja z Azure DNS strefami prywatnymi. Jeśli sieć wirtualna nie ma niestandardowego serwera DNS, odbywa się to automatycznie.
  • Zarządzaj prywatnym punktem końcowym na serwerze DNS używanym przez aplikację. Aby zarządzać prywatnym punktem końcowym, musisz znać adres punktu końcowego i użyć rekordu A, aby odwołać się do punktu końcowego, do którego próbujesz uzyskać dostęp.
  • Skonfiguruj własny serwer DNS, aby przekazywać dalej do prywatnych stref Azure DNS.

Aby dowiedzieć się więcej, zobacz korzystanie z prywatnych punktów końcowych dla aplikacji webowych.

Aby wywołać inne usługi, które mają połączenie prywatnego punktu końcowego, takie jak magazyn lub magistrala usług, należy skonfigurować aplikację tak, aby wykonywać wywołania wychodzące do prywatnych punktów końcowych. Aby uzyskać więcej informacji na temat używania prywatnych punktów końcowych z kontem magazynu dla aplikacji funkcji, odwiedź stronę Ograniczanie konta magazynu do sieci wirtualnej.

Punkty końcowe usługi (ruch przychodzący)

Za pomocą punktów końcowych usługi można ograniczyć wiele usług Azure do wybranych podsieci sieci wirtualnej w celu zapewnienia wyższego poziomu zabezpieczeń. Regionalna integracja sieci wirtualnej umożliwia aplikacji funkcjonalnej dostęp do usług Azure zabezpieczonych za pomocą punktów końcowych usług. Ta konfiguracja jest obsługiwana we wszystkich planach obsługujących integrację sieci wirtualnej. Wykonaj następujące kroki, aby uzyskać dostęp do zabezpieczonego punktu końcowego usługi:

  1. Skonfiguruj regionalną integrację sieci wirtualnej z aplikacją funkcji, aby nawiązać połączenie z określoną podsiecią.
  2. Przejdź do usługi docelowej i skonfiguruj punkty końcowe usługi dla podsieci integracyjnej.

Aby dowiedzieć się więcej, zobacz Punkty końcowe usługi sieci wirtualnej.

Korzystanie z punktów końcowych usługi

Aby ograniczyć dostęp do określonej podsieci, utwórz regułę ograniczeń z typem Virtual Network. Następnie możesz wybrać subskrypcję, sieć wirtualną i podsieć, do której chcesz zezwolić lub odmówić dostępu.

Jeśli punkty końcowe usługi nie są jeszcze włączone z Microsoft.Web dla wybranej podsieci, zostaną automatycznie włączone, chyba że zaznaczysz pole wyboru „Ignoruj brakujące punkty końcowe usługi Microsoft.Web”. Scenariusz, w którym można włączyć punkty końcowe usługi w aplikacji, ale nie podsieć, zależy głównie od tego, czy masz uprawnienia do włączania ich w podsieci.

Jeśli potrzebujesz, aby ktoś inny włączył punkty końcowe usługi na podsieci, zaznacz pole wyboru Ignoruj brak punktów końcowych usługi Microsoft.Web. Aplikacja jest skonfigurowana dla punktów końcowych usługi, które można włączyć później w podsieci.

 Zrzut ekranu przedstawiający okienko

Nie można użyć punktów końcowych usługi, aby ograniczyć dostęp do aplikacji uruchamianych w App Service Environment. Gdy aplikacja znajduje się w App Service Environment, możesz kontrolować dostęp do niej, stosując reguły dostępu do adresów IP.

Aby dowiedzieć się, jak skonfigurować punkty końcowe usługi, zobacz Ustanawianie prywatnego dostępu do witryny w Azure Functions.

Integracja z siecią wirtualną (ruch wychodzący)

W tej sekcji szczegółowo opisano funkcje obsługiwane przez usługę Functions, które kontrolują wychodzące dane z aplikacji.

Integracja z siecią wirtualną zapewnia aplikacji funkcji dostęp do zasobów w sieci wirtualnej. Po zintegrowaniu aplikacja kieruje ruch wychodzący przez sieć wirtualną. Dzięki temu aplikacja może uzyskiwać dostęp do prywatnych punktów końcowych lub zasobów przy użyciu reguł zezwalających na ruch tylko z wybranych podsieci. Gdy miejsce docelowe jest adresem IP spoza sieci wirtualnej, źródłowy adres IP będzie nadal wysyłany z jednego z adresów wymienionych we właściwościach aplikacji, chyba że skonfigurowano bramę translatora adresów sieciowych.

Azure Functions obsługuje integrację regionalnej sieci wirtualnej, co jest zalecanym podejściem. Aby dowiedzieć się, jak skonfigurować integrację sieci wirtualnej, zobacz Włączanie integracji z siecią wirtualną.

Azure Functions obsługuje dwa rodzaje integracji sieci wirtualnej:

Aby dowiedzieć się, jak skonfigurować integrację sieci wirtualnej, zobacz Włączanie integracji z siecią wirtualną.

Regionalna integracja sieci wirtualnej (wychodząca)

Korzystanie z regionalnej integracji sieci wirtualnej umożliwia aplikacji dostęp do:

  • Zasoby w tej samej sieci wirtualnej co aplikacja.
  • Zasoby w sieciach wirtualnych powiązanych przez połączenia równorzędne z siecią wirtualną, z którą aplikacja jest zintegrowana.
  • Zabezpieczone punkty końcowe usług.
  • Zasoby w połączeniach Azure ExpressRoute.
  • Zasoby między połączeniami równorzędnymi, które obejmują połączenia Azure ExpressRoute.
  • Prywatne punkty końcowe.

W przypadku korzystania z regionalnej integracji sieci wirtualnej można użyć następujących funkcji sieciowych Azure:

Uwaga

Kiedy kierujesz cały ruch wychodzący do swojej sieci wirtualnej, podlega on grupom zabezpieczeń sieci (NSGs) i trasom zdefiniowanym przez użytkownika (UDRs), które są stosowane do twojej podsieci integracyjnej. Po zintegrowaniu sieci wirtualnej ruch wychodzący aplikacji funkcji do publicznych adresów IP jest nadal wysyłany z adresów wymienionych we właściwościach aplikacji, chyba że podano trasy kierujące ruch w innym miejscu.

Regionalna integracja sieci wirtualnej nie może używać portu 25.

Zagadnienia dotyczące planu Flex Consumption:

  • Aplikacja i sieć wirtualna muszą być w tym samym regionie.
  • Upewnij się, że dostawca zasobów Azure jest włączony dla subskrypcji, postępując zgodnie z tymi instrukcjami. Jest to wymagane w przypadku delegowania podsieci. Portal Azure i Azure CLI wymuszają tę rejestrację przy tworzeniu aplikacji Flex Consumption, ponieważ integracja z siecią wirtualną może być włączona w dowolnym momencie po utworzeniu aplikacji.
  • Delegowanie podsieci wymagane podczas uruchamiania w planie Flex Consumption jest Microsoft.App/environments. Różni się to od planów Elastic Premium i Dedicated (App Service), które mają inne wymagania dotyczące delegowania.
  • W przypadku jednej aplikacji funkcjonalnej można zaplanować użycie maksymalnie 40 adresów IP, nawet jeśli aplikacja wymaga skalowania ponad tę liczbę. Jeśli na przykład masz 15 aplikacji funkcji Flex Consumption, które są zintegrowane w tej samej podsieci, musisz zaplanować 15 × 40 = 600 maksymalnie wykorzystywanych adresów IP. Ten limit podlega zmianie i nie jest wymuszany.
  • Podsieć nie może być już używana do innych celów (takich jak punkty końcowe prywatne lub usługi czy delegowane do jakiegokolwiek innego planu hostingowego lub usługi). Chociaż możesz współużytkować tę samą podsieć z wieloma aplikacjami Flex Consumption, zasoby sieciowe są współużytkowane przez te aplikacje funkcji, co może prowadzić do wpływu na wydajność innych aplikacji w tej samej podsieci.
  • Nie można współużytkować tej samej podsieci między środowiskiem usługi Container Apps i aplikacją Flex Consumption.
  • Plan Flex Consumption obecnie nie obsługuje podsieci o nazwach zawierających znaki podkreślenia (_).

Zagadnienia dotyczące planów Elastic Premium, Dedicated (App Service) i Container Apps :

  • Ta funkcja jest dostępna dla usług Elastic Premium i App Service Premium V2 i Premium V3. Jest również dostępne w warstwie Standard, ale tylko w nowszych wdrożeniach usługi App Service. Jeśli korzystasz ze starszego wdrożenia, możesz używać tej funkcji tylko w ramach planu usługi App Service Premium V2. Jeśli chcesz upewnić się, że możesz użyć funkcji w planie usługi App Service w warstwie Standard, utwórz aplikację w planie usługi App Service Premium V3. Te plany są obsługiwane tylko w przypadku naszych najnowszych wdrożeń. Możesz skalować w dół, jeśli chcesz po tym.
  • Aplikacje planu izolowanego, które znajdują się w App Service Environment nie mogą korzystać z tej funkcji.
  • Aplikacja i sieć wirtualna muszą być w tym samym regionie.
  • Funkcja wymaga podsieci /28 lub większej w sieci wirtualnej Azure Resource Manager.
  • Wiele planów usługi App Service może używać podsieci integracji.
  • Plan usługi App Service może zawierać maksymalnie dwie integracje sieci wirtualnej w regionie. Wiele aplikacji w tym samym planie usługi App Service może używać tej samej podsieci integracji.
  • Wybrana podsieć nie może być jeszcze używana do innych celów, takich jak prywatne punkty końcowe lub punkty końcowe usługi, ani być delegowana do innego planu hostingu lub usługi.
  • Można współdzielić tę samą podsieć dla więcej niż jednej aplikacji w planie usługi App Service. Ponieważ zasoby sieciowe są współużytkowane we wszystkich aplikacjach, jedna aplikacja funkcji może mieć wpływ na wydajność innych w tej samej podsieci.
  • Nie można usunąć sieci wirtualnej ze zintegrowaną aplikacją. Usuń integrację przed usunięciem sieci wirtualnej.
  • Nie można zmienić subskrypcji aplikacji ani planu, gdy istnieje aplikacja korzystająca z regionalnej integracji sieci wirtualnej.

Włącz integrację z siecią wirtualną

  1. W aplikacji funkcji w portalu Azure w obszarze Settings wybierz pozycję Networking. Następnie w obszarze Virtual Network Integration wybierz Nie skonfigurowano do dodania.

  2. Wybierz Dodaj integrację sieci wirtualnej.

    Zrzut ekranu przedstawiający stronę integracji sieci wirtualnej, na której można włączyć integrację sieci wirtualnej w aplikacji.

  3. Lista rozwijana zawiera wszystkie wirtualne sieci Azure Resource Manager w ramach subskrypcji w tym samym regionie. Wybierz sieć wirtualną, z którą chcesz się zintegrować.

    Wybierz sieć wirtualną

    • Plany hostingu Flex Consumption i Elastic Premium obsługują tylko regionalną integrację sieci wirtualnej. Jeśli sieć wirtualna znajduje się w tym samym regionie, utwórz nową podsieć lub wybierz pustą, wstępnie istniejącą podsieć.

    • Aby wybrać sieć wirtualną w innym regionie, musisz mieć bramę sieci wirtualnej skonfigurowaną z włączoną funkcją punkt-do-sieci. Integracja sieci wirtualnej między regionami jest obsługiwana tylko w przypadku planów dedykowanych, ale globalne połączenia równorzędne współpracują z regionalną integracją sieci wirtualnej.

Podczas integracji aplikacja jest uruchamiana ponownie. Po zakończeniu integracji zostaną wyświetlone szczegółowe informacje dotyczące sieci wirtualnej, z którą się integrujesz. Domyślnie opcja Route All jest włączona, a cały ruch jest kierowany do sieci wirtualnej.

Jeśli wolisz mieć tylko ruch prywatny (RFC1918 ) kierowany, wykonaj kroki opisane w tym artykule usługi App Service.

Podsieci

Integracja sieci wirtualnej zależy od dedykowanej podsieci. Podczas aprowizacji podsieci Azure zastrzega sobie pięć pierwszych adresów IP do użytku wewnętrznego. Sposób korzystania z pozostałych adresów IP zależy od planu hostingu. Ponieważ nie można zmienić rozmiaru podsieci po przypisaniu, użyj podsieci, która jest wystarczająco duża, aby uwzględnić dowolną skalę, jaką może osiągnąć aplikacja.

Poniższa tabela zawiera podsumowanie wymagań dotyczących podsieci dla każdego planu hostingu:

Plan hostingu Integracja z VNet Minimalny rozmiar podsieci Zalecany rozmiar podsieci Delegowanie podsieci
Zużycie elastyczne Wsparte /27 /27 (pojedyncza aplikacja), /26 (wiele aplikacji) Microsoft.App/environments
Elastic Premium (Windows) Wsparte /28 /24 Microsoft.Web/serverFarms
Elastic Premium (Linux) Wsparte /28 /26 Microsoft.Web/serverFarms
Dedykowane (App Service) Wsparte /28 /26 albo większy Microsoft.Web/serverFarms
Container Apps Zarządzane przez środowisko Zobacz Sieć usługi Container Apps Zobacz Sieć usługi Container Apps Microsoft.App/environments
Zużycie Niewspierane N/A N/A N/A

Pamiętaj, aby wybrać plan hostingu w górnej części artykułu, aby uzyskać szczegółowe informacje dotyczące planu.

W przypadku uruchamiania w Azure Container Apps integracja sieci wirtualnej jest zarządzana za pośrednictwem środowiska usługi Container Apps. Ustalanie rozmiaru i konfiguracji podsieci jest określane przez środowisko usługi Container Apps, a nie bezpośrednio przez aplikację funkcji. Aby uzyskać więcej informacji, zobacz Networking w środowisku Azure Container Apps.

W planach Elastic Premium i Dedicated (App Service), każda uruchomiona instancja aplikacji funkcyjnej zużywa jeden adres IP z podsieci. W przypadku skalowania w górę lub w dół wymagana przestrzeń adresowa może tymczasowo podwoić się, aby uwzględnić przejście. Jeśli wiele aplikacji współużytkuje tę samą podsieć, łączne użycie adresów IP to suma wszystkich instancji tych aplikacji oraz tymczasowe podwojenie liczby używanych adresów IP podczas zdarzeń skalowania.

Scenariusze użycia adresów IP

Scenario Zapotrzebowanie na adresy IP
Jedna aplikacja, jedno wystąpienie Jeden adres IP
Jedna aplikacja, pięć wystąpień Pięć adresów IP
Jedna aplikacja, skalowanie z pięciu do dziesięciu wystąpień Maksymalnie 20 adresów IP (tymczasowe, podczas operacji skalowania)
Trzy aplikacje, po pięć instancji każdej 15 adresów IP

Zalecenia dotyczące zakresu CIDR

Rozmiar bloku CIDR Maksymalna liczba dostępnych adresów Maksymalna skala pozioma (instancje)1
/28 11 5
/27 27 13
/26 59 29
/25 123 612
/24 251 1253
  1. Przyjęto założenie, że w pewnym momencie należy skalować w górę lub w dół rozmiar lub jednostkę SKU.
  2. Mimo że liczba adresów IP obsługuje 61 wystąpień, poszczególne aplikacje w planie dedykowanym mają maksymalnie 30 wystąpień.
  3. Mimo że liczba adresów IP obsługuje 125 wystąpień, poszczególne aplikacje w planie Elastic Premium mają maksymalnie 100 wystąpień.

Dodatkowe zagadnienia

  • Aby uniknąć problemów z pojemnością podsieci dla planów Elastic Premium usługi Functions, należy użyć /24 z 256 adresami dla Windows i /26 z 64 adresami dla systemu Linux. Podczas tworzenia podsieci w portalu Azure w ramach integracji z siecią wirtualną wymagany jest minimalny rozmiar /24 i /26 odpowiednio dla Windows i systemu Linux.
  • Każdy plan usługi App Service może obsługiwać maksymalnie dwie podsieci, które mogą być używane na potrzeby integracji z siecią wirtualną. Wiele aplikacji z jednego planu usługi App Service może dołączyć do tej samej podsieci, ale aplikacje z innego planu nie mogą używać tej samej podsieci.

W planie Flex Consumption ruch sieciowy wychodzący z wystąpień aplikacji funkcji jest kierowany przez wspólne bramy, które są dedykowane dla podsieci. Co najwyżej 27 bram udostępnionych (27 adresów IP) jest używanych na podsieć, niezależnie od liczby zintegrowanych aplikacji. Jeśli podsieć jest używana w przypadku zbyt wielu wystąpień lub aplikacji wykonujących obciążenia intensywnie korzystające z operacji we/wy, mogą wystąpić problemy z pojemnością sieci, takie jak zwiększone opóźnienia i przekroczenia limitu czasu. Nie będzie to miało wpływu na skalowanie w poziomie aplikacji.

Ważne

Integrowanie aplikacji funkcji Flex Consumption z rozmiarem podsieci mniejszym niż /27 lub integrowanie wielu aplikacji z podsiecią o rozmiarze /27 zmniejsza dostępną pojemność sieci wychodzącej dla nich. Jeśli planujesz to zrobić, przetestuj aplikacje przy użyciu obciążeń w skali produkcyjnej, aby upewnić się, że ograniczenia pojemności sieci nie są przestrzegane.

Zalecenia dotyczące zakresu CIDR

Rozmiar bloku CIDR Adresy do użytku Maksymalna liczba wystąpień Zalecenie
/27 27 1 000 Zalecane dla jednej aplikacji funkcyjnej
/26 59 1,000+ Zalecane w przypadku wielu aplikacji lub skalowania powyżej 1000 wystąpień*

* Skontaktuj się z grupą produktów, aby zażądać zwiększenia maksymalnej liczby wystąpień.

Sieciowe grupy zabezpieczeń

Sieciowe grupy zabezpieczeń umożliwiają kontrolowanie ruchu między zasobami w sieci wirtualnej. Możesz na przykład utworzyć regułę zabezpieczeń, która blokuje ruch wychodzący z aplikacji przed dotarciem do zasobu w sieci wirtualnej lub przed opuszczeniem tej sieci. Te reguły zabezpieczeń dotyczą aplikacji, które skonfigurowały integrację sieci wirtualnej. Aby zablokować ruch do adresów publicznych, musisz mieć włączoną integrację sieci wirtualnej i opcję Route All. Reguły ruchu przychodzącego w grupie zabezpieczeń sieci nie mają zastosowania do twojej aplikacji, ponieważ integracja z siecią wirtualną wpływa tylko na ruch wychodzący z tej aplikacji.

Aby kontrolować ruch przychodzący do aplikacji, użyj funkcji Ograniczenia dostępu. Sieciowa grupa zabezpieczeń zastosowana do podsieci integracji obowiązuje niezależnie od jakichkolwiek tras zastosowanych do tej podsieci. Jeśli aplikacja funkcji jest zintegrowana z siecią wirtualną z włączoną funkcją Route All i nie masz żadnych tras wpływających na ruch adresów publicznych w podsieci integracyjnej, cały ruch wychodzący nadal podlega grupom zabezpieczeń sieci przypisanym do tej podsieci. Gdy opcja Route All nie jest włączona, sieciowe grupy zabezpieczeń stosowane są tylko do ruchu RFC1918.

Trasy

Możesz używać tablic tras do kierowania ruchu wychodzącego z aplikacji dokądkolwiek zechcesz. Domyślnie tabele tras wpływają tylko na ruch docelowy RFC1918. Po włączeniu opcji Route All wszystkie wywołania wychodzące zostają objęte wpływem tej funkcji. Po wyłączeniu opcji Route All tabele tras wpływają tylko na ruch prywatny (RFC1918). Trasy ustawione w podsieci integracji nie będą mieć wpływu na odpowiedzi na przychodzące żądania aplikacji. Typowe miejsca docelowe mogą obejmować urządzenia zapory lub bramy.

Jeśli chcesz kierować cały ruch wychodzący lokalnie, możesz użyć tabeli tras do wysyłania całego ruchu wychodzącego do bramy usługi ExpressRoute. W przypadku kierowania ruchu do bramy należy skonfigurować trasy w sieci zewnętrznej, aby odpowiedzi były wysyłane z powrotem.

Trasy protokołu BGP (Border Gateway Protocol) wpływają również na ruch aplikacji. Jeśli masz trasy protokołu BGP z bramy usługi ExpressRoute, wpłynie to na ruch wychodzący Twojej aplikacji. Domyślnie trasy protokołu BGP mają wpływ tylko na ruch docelowy RFC1918. Gdy aplikacja funkcji jest zintegrowana z siecią wirtualną i ma włączoną funkcję Route All, cały ruch wychodzący może być wpływany przez trasy protokołu BGP.

Ograniczenia adresów IP dla ruchu wychodzącego

Ograniczenia ruchu wychodzącego można skonfigurować dla sieci wirtualnej, w której wdrożono App Service Environment.

Po zintegrowaniu aplikacji funkcji z siecią wirtualną w ramach planu Elastic Premium lub planu App Service, aplikacja może domyślnie wykonywać wychodzące połączenia do Internetu. Integrując aplikację funkcji z siecią wirtualną z włączoną funkcją Route All, wymuszasz wysyłanie całego ruchu wychodzącego do sieci wirtualnej, gdzie reguły sieciowej grupy zabezpieczeń mogą służyć do ograniczania ruchu. W przypadku rozwiązania Flex Consumption cały ruch jest już kierowany przez sieć wirtualną, a usługa Route All nie jest potrzebna.

Aby dowiedzieć się, jak kontrolować wychodzący adres IP przy użyciu sieci wirtualnej, zapoznaj się z Samouczkiem: Kontrola wychodzącego adresu IP Azure Functions za pomocą bramy NAT sieci wirtualnej Azure.

Azure DNS strefy prywatne

Po zintegrowaniu aplikacji z siecią wirtualną używa tego samego serwera DNS, z którego skonfigurowano sieć wirtualną i będzie działać z Azure DNS strefami prywatnymi połączonymi z siecią wirtualną.

Automation

Następujące interfejsy API umożliwiają programowe zarządzanie regionalną integracją sieci wirtualnej:

  • Azure CLI: użyj poleceń az functionapp vnet-integration, aby dodać, wyświetlić listę lub usunąć integrację regionalnej sieci wirtualnej.
  • ARM templates: Regionalna integracja sieci wirtualnej może być włączona przy użyciu szablonu Azure Resource Manager. Pełny przykład można znaleźć w tym szablonie szybkiego startu usługi Functions.

Połączenia hybrydowe

Hybrid Connections jest funkcją Azure Relay, której można użyć do uzyskiwania dostępu do zasobów aplikacji w innych sieciach. Zapewnia dostęp z aplikacji do punktu końcowego aplikacji. Nie można jej używać do uzyskiwania dostępu do aplikacji.

Podobnie jak w Azure Functions, każde połączenie hybrydowe jest skorelowane z jedną kombinacją hosta TCP i portu. Oznacza to, że punkt końcowy połączenia hybrydowego może znajdować się w dowolnym systemie operacyjnym i dowolnej aplikacji, o ile uzyskujesz dostęp do portu nasłuchiwania TCP. Funkcja połączeń hybrydowych nie wie ani nie dba o to, czym jest protokół aplikacji lub do czego uzyskujesz dostęp. Zapewnia tylko dostęp do sieci.

Aby dowiedzieć się więcej, zobacz dokumentację usługi App Service dotyczącą połączeń hybrydowych. Te same kroki konfiguracji obsługują Azure Functions.

Ważne

Połączenia hybrydowe są obsługiwane tylko wtedy, gdy aplikacja funkcji działa w Windows. Aplikacje systemu Linux nie są obsługiwane.

Nawiązywanie połączenia z usługami Azure za pośrednictwem sieci wirtualnej

Integracja z siecią wirtualną umożliwia aplikacji funkcji uzyskiwanie dostępu do zasobów w sieci wirtualnej. W tej sekcji omówiono zagadnienia, które należy wziąć pod uwagę podczas próby połączenia aplikacji z niektórymi usługami.

Ograniczanie konta magazynu do sieci wirtualnej

Uwaga

Aby szybko wdrożyć aplikację funkcji z włączonymi prywatnymi punktami końcowymi na koncie magazynu, zapoznaj się z następującym szablonem: Aplikacja funkcji z prywatnymi punktami końcowymi Azure Storage.

Podczas tworzenia aplikacji funkcji należy utworzyć lub połączyć się z kontem ogólnego przeznaczenia Azure Storage obsługującym usługi Blob, Queue i Table Storage. Możesz zastąpić to konto magazynowe jednym zabezpieczonym za pomocą punktów końcowych usługi lub prywatnych punktów końcowych.

Aby dowiedzieć się, jak skonfigurować aplikację funkcyjną przy użyciu konta magazynu zabezpieczonego za pomocą sieci wirtualnej, odwiedź Ograniczanie konta magazynu do sieci wirtualnej.

Upewnij się, że skonfigurowano routing prywatnej zawartości. Aby dowiedzieć się, jak skonfigurować aplikację funkcyjną przy użyciu konta magazynu zabezpieczonego za pomocą sieci wirtualnej, odwiedź Ograniczanie konta magazynu do sieci wirtualnej.

Aby dowiedzieć się, jak skonfigurować aplikację funkcyjną przy użyciu konta magazynu zabezpieczonego za pomocą sieci wirtualnej, odwiedź Ograniczanie konta magazynu do sieci wirtualnej.

Używanie odwołań Key Vault

Odwołania Azure Key Vault umożliwiają używanie tajemnic z Azure Key Vault w aplikacji Azure Functions bez potrzeby wprowadzania jakichkolwiek zmian w kodzie. Azure Key Vault to usługa, która zapewnia scentralizowane zarządzanie tajemnicami, z pełną kontrolą nad zasadami dostępu i historią inspekcji.

Jeśli integracja sieci wirtualnej jest skonfigurowana dla aplikacji, odniesienia Key Vault można użyć do pobierania tajemnic z magazynu z ograniczeniami sieciowymi.

Wyzwalacze sieci wirtualnej (inne niż HTTP)

Twoje obciążenie może wymagać wyzwolenia aplikacji z źródła zdarzeń chronionego przez sieć wirtualną.

Uwaga

W przypadku uruchamiania w Azure Container Apps wyzwalacze sieci wirtualnej są zarządzane za pomocą konfiguracji sieci środowiska usługi Container Apps. Aby uzyskać więcej informacji, zobacz Networking w środowisku Azure Container Apps.

Plan Flex Consumption natywnie obsługuje wyzwalacze sieci wirtualnej. Aplikacja funkcji może być uruchamiana ze źródeł zdarzeń chronionych przez sieć wirtualną bez potrzeby dodatkowej konfiguracji na potrzeby monitorowania skalowania w środowisku runtime.

Plan Elastic Premium umożliwia tworzenie funkcji wyzwalających usługi zabezpieczone przez sieć wirtualną. Te wyzwalacze inne niż HTTP są nazywane wyzwalaczami sieci wirtualnej.

Plan Elastic Premium umożliwia tworzenie funkcji wyzwalających usługi zabezpieczone przez sieć wirtualną.

Domyślnie wyzwalacze sieci wirtualnej nie powodują, że aplikacja funkcji skaluje się poza liczbę wcześniej przygotowanych wystąpień. Jednak niektóre rozszerzenia obsługują wyzwalacze wirtualnej sieci, które powodują dynamiczne skalowanie aplikacji funkcjonalnej. Możesz włączyć to dynamiczne monitorowanie skalowania w aplikacji funkcji dla obsługiwanych rozszerzeń na jeden z następujących sposobów:

  1. W portalu Azure przejdź do swojej aplikacji funkcji.

  2. W obszarze Ustawienia wybierz pozycję Konfiguracja, a następnie na karcie Ustawienia środowiska uruchomieniowego funkcji ustaw pozycję Monitorowanie skalowania środowiska uruchomieniowego na Włącz.

  3. Wybierz Zapisz, aby zaktualizować konfigurację aplikacji funkcjonalnej i tym samym ponownie uruchomić aplikację.

Przełącznik VNET

Wskazówka

Włączenie monitorowania wyzwalaczy sieci wirtualnej może mieć wpływ na wydajność aplikacji, chociaż wpływ może być niewielki.

Obsługa dynamicznego monitorowania wyzwalaczy sieci wirtualnej nie jest dostępna w wersji 1.x środowiska uruchomieniowego usługi Functions.

Rozszerzenia w tej tabeli obsługują dynamiczne monitorowanie wyzwalaczy sieci wirtualnej. Aby uzyskać najlepszą wydajność skalowania, należy uaktualnić do wersji, które obsługują również skalowanie na podstawie celu.

Rozszerzenie (minimalna wersja) Tylko monitorowanie skalowania środowiska uruchomieniowego Za pomocą skalowania opartego na obiekcie docelowym
Microsoft.Azure. WebJobs.Extensions.CosmosDB > 3.0.5 > 4.1.0
Microsoft.Azure. WebJobs.Extensions.DurableTask > 2.0.0 nie dotyczy
Microsoft.Azure. WebJobs.Extensions.EventHubs > 4.1.0 > 5.2.0
Microsoft.Azure. WebJobs.Extensions.ServiceBus > 3.2.0 > 5.9.0
Microsoft.Azure. WebJobs.Extensions.Storage > 3.0.10 > 5.1.0*

* Tylko usługa Queue Storage.

Ważne

pl-PL: Po włączeniu monitorowania wyzwalaczy w sieci wirtualnej, tylko wyzwalacze związane z tymi rozszerzeniami mogą powodować dynamiczne skalowanie aplikacji. Nadal można używać wyzwalaczy z rozszerzeń, które nie są w tej tabeli, ale nie spowodują one skalowania poza ich wcześniejszą liczbę wystąpień. Aby uzyskać pełną listę wszystkich rozszerzeń wyzwalacza i powiązań, zobacz Wyzwalacze i powiązania.

Gdy aplikacja funkcji jest uruchamiana w planie usługi App Service lub App Service Environment, możesz napisać funkcje zabezpieczone przez wyzwalacz sieci wirtualnej. Aby funkcje zostały poprawnie wyzwolone, aplikacja musi być połączona z siecią wirtualną z dostępem do zasobu zdefiniowanego w połączeniu wyzwalacza.

Załóżmy na przykład, że chcesz skonfigurować Azure Cosmos DB do akceptowania ruchu tylko z sieci wirtualnej. W takim przypadku należy wdrożyć aplikację funkcjonalną w planie usługi App Service, który zapewnia integrację z tą siecią wirtualną. Integracja umożliwia, że zasób Azure Cosmos DB wyzwala funkcję.

Testowanie prywatnych punktów końcowych

Podczas testowania funkcji w aplikacji funkcji z prywatnymi punktami końcowymi należy przeprowadzić testy z poziomu tej samej sieci wirtualnej, takiej jak na maszynie wirtualnej w tej sieci. Aby użyć opcji Kod + Test w portalu z tej maszyny wirtualnej, należy dodać następujące źródła CORS do aplikacji funkcjonalnej:

  • https://functions-next.azure.com
  • https://functions-staging.azure.com
  • https://functions.azure.com
  • https://portal.azure.com

Jeśli ograniczysz dostęp do aplikacji funkcyjnej przy użyciu prywatnych punktów końcowych lub dowolnego innego ograniczenia dostępu, musisz również dodać znacznik usługi AzureCloud do listy dozwolonych. Aby zaktualizować listę dozwolonych:

  1. Przejdź do aplikacji funkcji i wybierz pozycję Ustawienia>Sieć. W obszarze Konfiguracja> ruchuprzychodzącego Dostęp do sieci publicznej wybierz pozycję Włączone bez ograniczeń dostępu.

  2. Upewnij się, że Dostęp do sieci publicznej jest ustawiony na Włączone dla wybranych sieci wirtualnych i adresów IP.

  3. Dodaj regułę w obszarze Dostęp do witryny i reguły:

    1. Wybierz Service Tag jako typ ustawień źródła i AzureCloud jako tag usługi.

    2. Upewnij się, że akcja to Zezwalaj i ustaw żądaną nazwę i priorytet.

Rozwiązywanie problemów

Funkcja jest łatwa do skonfigurowania, ale nie oznacza to, że nie napotkasz żadnych problemów. Jeśli wystąpią problemy z uzyskiwaniem dostępu do żądanego punktu końcowego, istnieje kilka narzędzi, których można użyć do testowania łączności z konsoli aplikacji. Istnieją dwie konsole, których można użyć. Jedna z nich to konsola Kudu, a druga to konsola w portalu Azure. Aby uzyskać dostęp do konsoli Kudu z aplikacji, przejdź do pozycji Narzędzia>Kudu. Możesz również uzyskać dostęp do konsoli Kudo pod adresem [sitename].scm.azurewebsites.net. Po załadowaniu witryny internetowej przejdź do karty Debug. Aby przejść do konsoli hostowanej w portalu Azure z poziomu aplikacji, przejdź do Tools>Console.

Narzędzia

W aplikacjach Windows natywnych narzędzia ping, nslookup i tracert nie będzie działać za pośrednictwem konsoli z powodu ograniczeń zabezpieczeń (działają one w kontenerach custom Windows). Aby wypełnić pustkę, dodawane są dwa oddzielne narzędzia. Aby przetestować funkcje DNS, dodaliśmy narzędzie o nazwie nameresolver.exe. Składnia jest następująca:

nameresolver.exe hostname [optional: DNS Server]

Możesz użyć metody nameresolver, aby sprawdzić nazwy hostów, od których zależy aplikacja. W ten sposób można sprawdzić, czy w systemie DNS nie skonfigurowano niczego błędnie, a może nie masz dostępu do serwera DNS. Serwer DNS używany przez aplikację w konsoli programu można wyświetlić, przeglądając zmienne środowiskowe WEBSITE_DNS_SERVER i WEBSITE_DNS_ALT_SERVER.

Uwaga

Narzędzie nameresolver.exe obecnie nie działa w niestandardowych kontenerach Windows.

Możesz użyć następnego narzędzia, aby przetestować łączność TCP z hostem i kombinacją portów. To narzędzie jest nazywane tcpping , a składnia to:

tcpping.exe hostname [optional: port]

Narzędzie tcpping informuje, czy można uzyskać dostęp do określonego hosta i portu. Może pokazać powodzenie tylko wtedy, gdy aplikacja nasłuchuje na określonym hoście i porcie, oraz gdy istnieje dostęp sieciowy z Twojej aplikacji do tego hosta i portu.

Debugowanie dostępu do zasobów hostowanych w sieci wirtualnej

Wiele rzeczy może uniemożliwić aplikacji dotarcie do określonego hosta i portu. W większości przypadków jest to jedna z następujących rzeczy:

  • Zapora sieciowa stanowi przeszkodę. Jeśli masz zaporę sieciową, która przeszkadza, osiągasz limit czasu protokołu TCP. Limit czasu protokołu TCP wynosi 21 sekund w tym przypadku. Użyj narzędzia tcpping, aby przetestować łączność. Przekroczenia limitu czasu protokołu TCP mogą być spowodowane przez wiele elementów poza zaporami, ale zacznij tam.
  • System DNS nie jest dostępny. Limit czasu DNS wynosi 3 sekundy na serwer DNS. Jeśli masz dwa serwery DNS, limit czasu wynosi 6 sekund. Użyj nameresolver, aby sprawdzić, czy DNS działa. Nie można użyć polecenia nslookup, ponieważ nie używa ona systemu DNS, z którym skonfigurowano sieć wirtualną. Jeśli jest niedostępny, być może zapora sieciowa lub grupa zabezpieczeń sieciowych blokuje dostęp do systemu DNS, albo DNS może być niedostępny.

Jeśli te elementy nie odpowiadają na problemy, najpierw poszukaj takich elementów jak:

Regionalna integracja sieci wirtualnej

  • Czy miejsce docelowe jest adresem nienależące do RFC1918 i nie masz włączonej opcji Route All ?
  • Czy NSG blokuje ruch wychodzący z podsieci integracji?
  • Jeśli korzystasz z Azure ExpressRoute lub sieci VPN, czy brama lokalna jest skonfigurowana do kierowania ruchu z powrotem do Azure? Jeśli możesz uzyskać dostęp do punktów końcowych w sieci wirtualnej, ale nie lokalnie, sprawdź trasy.
  • Czy masz wystarczające uprawnienia, aby ustawić delegowanie w podsieci integracji? Podczas konfigurowania regionalnej integracji sieci wirtualnej, podsieć integracyjna jest delegowana do Microsoft.Web/serverFarms. UI integracji VNet automatycznie deleguje podsieć do Microsoft.Web/serverFarms. Jeśli Twoje konto nie ma wystarczających uprawnień sieciowych do ustawiania delegowania, musisz mieć osobę, która może ustawić atrybuty w podsieci integracji, aby delegować podsieć. Aby ręcznie delegować podsieć integracji, przejdź do interfejsu użytkownika podsieci w Sieci Wirtualnej Azure i ustaw delegowanie dla Microsoft.Web/serverFarms.

Integracja z siecią wirtualną wymagająca bramy

  • Czy zakres adresów punkt-do-sieci mieści się w zakresach RFC 1918 (10.0.0.0-10.255.255.255 / 172.16.0.0-172.31.255.255 / 192.168.0.0-192.168.255.255)?
  • Czy brama w portalu jest wyświetlana jako aktywna? Jeśli twoja brama nie działa, uruchom ją ponownie.
  • Czy certyfikaty są wyświetlane jako zsynchronizowane, czy podejrzewasz, że konfiguracja sieci została zmieniona? Jeśli certyfikaty nie są zsynchronizowane lub podejrzewasz, że wprowadzono zmianę w konfiguracji sieci wirtualnej, która nie została zsynchronizowana z usługami ASPs, wybierz pozycję Synchronizuj sieć.
  • Jeśli korzystasz z sieci VPN, czy brama lokalna jest skonfigurowana do kierowania ruchu z powrotem do Azure? Jeśli możesz uzyskać dostęp do punktów końcowych w sieci wirtualnej, ale nie lokalnie, sprawdź trasy.
  • Czy próbujesz użyć bramy współistnienia, która obsługuje zarówno punkt-lokacja, jak i usługę ExpressRoute? Bramy współistnienia nie są obsługiwane w przypadku integracji z siecią wirtualną.

Debugowanie problemów z siecią jest wyzwaniem, ponieważ nie można zobaczyć, co blokuje dostęp do konkretnej kombinacji host:port. Niektóre przyczyny to:

  • Masz zaporę sieciową na hoście, która uniemożliwia dostęp do portu aplikacji z zakresu IP o typie point-to-site. Przekraczanie podsieci często wymaga dostępu publicznego.
  • Host docelowy nie działa.
  • Aplikacja nie działa.
  • Wystąpił nieprawidłowy adres IP lub nazwa hosta.
  • Aplikacja nasłuchuje na innym porcie niż oczekiwano. Identyfikator procesu można dopasować do portu nasłuchiwania przy użyciu polecenia "netstat -aon" na hoście punktu końcowego.
  • Sieciowe grupy zabezpieczeń są konfigurowane w taki sposób, aby uniemożliwiły dostęp do hosta aplikacji i portu z zakresu adresów IP punkt-lokacja.

Nie wiesz, jakiego adresu używa aplikacja. Może to być dowolny adres w podsieci integracji lub w zakresie adresacji punkt-do-sieci, więc musisz zezwolić na dostęp z całego zakresu tych adresów.

Dalsze kroki debugowania obejmują:

  • Połącz się z maszyną wirtualną w swojej sieci wirtualnej i spróbuj nawiązać połączenie z hostem zasobu: port. Aby przetestować dostęp do protokołu TCP, użyj polecenia programu PowerShell Test-NetConnection. Składnia jest następująca:
Test-NetConnection hostname [optional: -Port]
  • Utwórz aplikację na maszynie wirtualnej i przetestuj dostęp do tego hosta i portu z konsoli aplikacji przy użyciu protokołu tcpping.

Zasoby lokalne

Jeśli aplikacja nie może uzyskać dostępu do zasobu lokalnego, sprawdź, czy możesz uzyskać dostęp do zasobu z sieci wirtualnej. Użyj polecenia Test-NetConnection programu PowerShell, aby sprawdzić dostęp do protokołu TCP. Jeśli maszyna wirtualna nie może nawiązać połączenia z zasobem lokalnym, połączenie sieci VPN lub usługi ExpressRoute może nie zostać prawidłowo skonfigurowane.

Jeśli maszyna wirtualna hostowana w sieci wirtualnej może nawiązać dostęp do systemu lokalnego, ale aplikacja nie może, przyczyna jest prawdopodobnie jedną z następujących przyczyn:

  • Trasy nie są skonfigurowane z podsiecią ani zakresami adresów punkt-lokacja w bramie lokalnej.
  • Sieciowe grupy zabezpieczeń blokują dostęp dla zakresu adresów IP punkt-lokacja.
  • Zapory lokalne blokują ruch z zakresu adresów IP punkt-lokacja.
  • Próbujesz uzyskać adres inny niż RFC 1918 przy użyciu funkcji integracji z siecią wirtualną w regionie.

Usuwanie planu usługi App Service lub aplikacji internetowej przed odłączeniem integracji z siecią wirtualną (VNet)

Jeśli aplikacja internetowa lub plan usługi App Service została usunięta bez uprzedniego rozłączenia integracji z siecią wirtualną, nie będzie można wykonać żadnych operacji aktualizacji/usuwania w sieci wirtualnej lub podsieci, która została użyta do integracji z usuniętym zasobem. Delegowanie podsieci "Microsoft.Web/serverFarms" pozostanie przypisane do Twojej podsieci, co uniemożliwi wykonywanie operacji aktualizacji i usuwania.

Aby ponownie zaktualizować/usunąć podsieć lub sieć wirtualną, należy ponownie utworzyć integrację z siecią wirtualną, a następnie odłączyć ją:

  1. Utwórz ponownie plan usługi App Service i aplikację internetową (należy używać dokładnie tej samej nazwy aplikacji internetowej co poprzednio).
  2. Przejdź do bloku "Sieć" w aplikacji internetowej i skonfiguruj integrację z siecią wirtualną.
  3. Po skonfigurowaniu integracji z siecią wirtualną wybierz przycisk "Rozłącz".
  4. Usuń plan usługi App Service lub aplikację internetową.
  5. Zaktualizuj/usuń podsieć lub sieć wirtualną.

Jeśli po wykonaniu powyższych kroków nadal występują problemy z integracją z siecią wirtualną, skontaktuj się z pomoc techniczna firmy Microsoft.

Narzędzie do rozwiązywania problemów z siecią

Możesz również użyć narzędzia do rozwiązywania problemów z siecią, aby rozwiązać problemy z połączeniem. Aby otworzyć narzędzie do rozwiązywania problemów z siecią, przejdź do aplikacji w portalu Azure. Wybierz pozycję Diagnostyka i rozwiąż problem, a następnie wyszukaj narzędzie do rozwiązywania problemów z siecią.

Problemy z połączeniem — sprawdza stan integracji sieci wirtualnej, w tym sprawdzanie, czy prywatny adres IP został przypisany do wszystkich wystąpień planu i ustawień DNS. Jeśli niestandardowy system DNS nie jest skonfigurowany, zostanie zastosowana domyślna Azure DNS. Narzędzie do rozwiązywania problemów sprawdza również typowe zależności aplikacji funkcjonalnych, w tym łączność z Azure Storage i inne zależności powiązań.

Zrzut ekranu przedstawiający uruchomione narzędzie do rozwiązywania problemów z połączeniem.

Problemy z konfiguracją — to narzędzie do rozwiązywania problemów sprawdza, czy podsieć jest prawidłowa w przypadku integracji z siecią wirtualną.

Zrzut ekranu przedstawiający uruchomione narzędzie do rozwiązywania problemów z konfiguracją.

Problem z usuwaniem podsieci/sieci wirtualnej — to narzędzie do rozwiązywania problemów sprawdza, czy podsieć ma jakiekolwiek blokady i czy ma nieużywane łącza skojarzenia usługi, które mogą blokować usunięcie sieci wirtualnej/podsieci.

Aby dowiedzieć się więcej na temat sieci i Azure Functions: