Samouczek: ustanawianie dostępu do witryny prywatnej usługi Azure Functions

W tym samouczku pokazano, jak włączyć dostęp do witryny prywatnej za pomocą usługi Azure Functions. Za pomocą dostępu do lokacji prywatnej można wymagać, aby kod funkcji był wyzwalany tylko z określonej sieci wirtualnej.

Dostęp do lokacji prywatnej jest przydatny w scenariuszach, gdy dostęp do aplikacji funkcji musi być ograniczony do określonej sieci wirtualnej. Na przykład aplikacja funkcji może mieć zastosowanie tylko do pracowników określonej organizacji lub usług znajdujących się w określonej sieci wirtualnej (takich jak inna funkcja platformy Azure, maszyna wirtualna platformy Azure lub klaster usługi AKS).

Jeśli aplikacja usługi Functions musi uzyskać dostęp do zasobów platformy Azure w sieci wirtualnej lub nawiązać połączenie za pośrednictwem punktów końcowych usługi, wymagana jest integracja sieci wirtualnej.

Z tego samouczka dowiesz się, jak skonfigurować dostęp do witryny prywatnej dla aplikacji funkcji:

  • Tworzenie maszyny wirtualnej
  • Tworzenie usługi Azure Bastion
  • Tworzenie aplikacji usługi Azure Functions
  • Konfigurowanie punktu końcowego usługi dla sieci wirtualnej
  • Tworzenie i wdrażanie funkcji platformy Azure
  • Wywoływanie funkcji z zewnątrz i w sieci wirtualnej

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Topologia

Na poniższym diagramie przedstawiono architekturę rozwiązania do utworzenia:

High-level architecture diagram for private site access solution

Wymagania wstępne

W tym samouczku ważne jest zrozumienie adresowania IP i podsieci. Możesz zacząć od tego artykułu, który obejmuje podstawy adresowania i podsieci. Wiele innych artykułów i filmów wideo jest dostępnych w trybie online.

Logowanie do witryny Azure Portal

Zaloguj się w witrynie Azure Portal.

Tworzenie maszyny wirtualnej

Pierwszym krokiem w tym samouczku jest utworzenie nowej maszyny wirtualnej w sieci wirtualnej. Maszyna wirtualna będzie używana do uzyskiwania dostępu do funkcji po ograniczeniu dostępu do jej dostępu tylko z poziomu sieci wirtualnej.

  1. Wybierz przycisk Utwórz zasób.

  2. W polu wyszukiwania wpisz Windows Server i wybierz pozycję Windows Server w wynikach wyszukiwania.

  3. Wybierz pozycję Windows Server 2019 Datacenter z listy opcji systemu Windows Server i naciśnij przycisk Utwórz .

  4. Na karcie Podstawowe użyj ustawień maszyny wirtualnej, jak określono w poniższej tabeli:

    Basics tab for a new Windows VM

    Ustawienie Sugerowana wartość opis
    Subskrypcja Twoja subskrypcja Subskrypcja, w ramach której są tworzone zasoby.
    Grupa zasobów: myResourceGroup Wybierz grupę zasobów, która będzie zawierać wszystkie zasoby na potrzeby tego samouczka. Użycie tej samej grupy zasobów ułatwia czyszczenie zasobów po zakończeniu pracy z tym samouczkiem.
    Nazwa maszyny wirtualnej myVM Nazwa maszyny wirtualnej musi być unikatowa w grupie zasobów
    Region (USA) Północno-środkowe stany USA Wybierz region w pobliżu lub w pobliżu funkcji, do których chcesz uzyskać dostęp.
    Publiczne porty ruchu przychodzącego Brak Wybierz pozycję Brak , aby upewnić się, że nie ma łączności przychodzącej z maszyną wirtualną z Internetu. Dostęp zdalny do maszyny wirtualnej zostanie skonfigurowany za pośrednictwem usługi Azure Bastion.
  5. Wybierz kartę Sieć i wybierz pozycję Utwórz nową , aby skonfigurować nową sieć wirtualną.

    Screenshot that shows the

  6. W obszarze Tworzenie sieci wirtualnej użyj ustawień w tabeli poniżej obrazu:

    Create a new virtual network for the new VM

    Ustawienie Sugerowana wartość opis
    Nazwa/nazwisko myResourceGroup-vnet Możesz użyć domyślnej nazwy wygenerowanej dla sieci wirtualnej.
    Zakres adresów 10.10.0.0/16 Użyj jednego zakresu adresów dla sieci wirtualnej.
    Nazwa podsieci Samouczek Nazwa podsieci.
    Zakres adresów (podsieć) 10.10.1.0/24 Rozmiar podsieci definiuje liczbę interfejsów, które można dodać do podsieci. Ta podsieć jest używana przez maszynę wirtualną. Podsieć /24 zapewnia 254 adresy hostów.
  7. Wybierz przycisk OK , aby utworzyć sieć wirtualną.

  8. Na karcie Sieć upewnij się, że dla publicznego adresu IP wybrano opcję Brak.

  9. Wybierz kartę Zarządzanie , a następnie w obszarze Konto magazynu diagnostycznego wybierz pozycję Utwórz nowe , aby utworzyć nowe konto magazynu.

  10. Pozostaw wartości domyślne sekcji Tożsamość, Automatyczne zamykanie i Tworzenie kopii zapasowej.

  11. Wybierz pozycję Przejrzyj i utwórz. Po zakończeniu walidacji wybierz pozycję Utwórz. Proces tworzenia maszyny wirtualnej trwa kilka minut.

Konfigurowanie usługi Azure Bastion

Azure Bastion to w pełni zarządzana usługa platformy Azure, która zapewnia bezpieczny dostęp RDP i SSH do maszyn wirtualnych bezpośrednio z witryny Azure Portal. Użycie usługi Azure Bastion eliminuje konieczność konfigurowania ustawień sieci związanych z dostępem RDP.

  1. W portalu wybierz pozycję Dodaj w górnej części widoku grupy zasobów.

  2. W polu wyszukiwania wpisz Bastion.

  3. Wybierz pozycję Bastion w wynikach wyszukiwania.

  4. Wybierz pozycję Utwórz , aby rozpocząć proces tworzenia nowego zasobu usługi Azure Bastion. W sekcji Sieć wirtualna zostanie wyświetlony komunikat o błędzie, ponieważ nie ma jeszcze podsieci AzureBastionSubnet. Podsieć jest tworzona w poniższych krokach. Użyj ustawień w tabeli poniżej obrazu:

    Start of creating Azure Bastion

    Ustawienie Sugerowana wartość opis
    Nazwa/nazwisko myBastion Nazwa nowego zasobu usługi Bastion
    Region Północno-środkowe stany USA Wybierz region w swojej okolicy lub w pobliżu innych usług, do których Twoje funkcje uzyskują dostęp.
    Sieć wirtualna myResourceGroup-vnet Sieć wirtualna, w której zostanie utworzony zasób usługi Bastion
    Podsieć AzureBastionSubnet Podsieć w sieci wirtualnej, do której zostanie wdrożony nowy zasób hosta usługi Bastion. Należy utworzyć podsieć przy użyciu wartości nazwy AzureBastionSubnet. Ta wartość informuje platformę Azure o podsieci do wdrożenia zasobów usługi Bastion. Należy użyć podsieci co najmniej /27 lub większej (/27 , /26 itd.).

    Uwaga

    Szczegółowy przewodnik krok po kroku dotyczący tworzenia zasobu usługi Azure Bastion można znaleźć w samouczku Tworzenie hosta usługi Azure Bastion.

  5. Utwórz podsieć, w której platforma Azure może aprowizować hosta usługi Azure Bastion. Wybranie opcji Zarządzaj konfiguracją podsieci powoduje otwarcie nowego okienka, w którym można zdefiniować nową podsieć. Wybierz pozycję + Podsieć , aby utworzyć nową podsieć.

  6. Podsieć musi mieć nazwę AzureBastionSubnet , a prefiks podsieci musi być co najmniej /27. Wybierz przycisk OK , aby utworzyć podsieć.

    Create subnet for Azure Bastion host

  7. Na stronie Tworzenie bastionuwybierz nowo utworzoną podsieć AzureBastionSubnet z listy dostępnych podsieci.

    Create an Azure Bastion host with specific subnet

  8. Wybierz pozycję Przejrzyj i utwórz. Po zakończeniu walidacji wybierz pozycję Utwórz. Utworzenie zasobu usługi Azure Bastion potrwa kilka minut.

Tworzenie aplikacji usługi Azure Functions

Następnym krokiem jest utworzenie aplikacji funkcji na platformie Azure przy użyciu planu Zużycie. Kod funkcji zostanie wdrożony w tym zasobie w dalszej części tego samouczka.

  1. W portalu wybierz pozycję Dodaj w górnej części widoku grupy zasobów.

  2. Wybieranie aplikacji funkcji obliczeniowej >

  3. W sekcji Podstawowe użyj ustawień aplikacji funkcji, jak określono w poniższej tabeli.

    Ustawienie Sugerowana wartość opis
    Grupa zasobów myResourceGroup Wybierz grupę zasobów, która będzie zawierać wszystkie zasoby na potrzeby tego samouczka. Użycie tej samej grupy zasobów dla aplikacji funkcji i maszyny wirtualnej ułatwia czyszczenie zasobów po zakończeniu pracy z tym samouczkiem.
    Nazwa aplikacji funkcji Nazwa unikatowa w skali globalnej Nazwa identyfikująca nową aplikację funkcji. Prawidłowe znaki to a-z (bez uwzględniania wielkości liter), 0–9 i -.
    Publikowanie Kod Opcja publikowania plików kodu lub kontenera Docker.
    Stos środowiska uruchomieniowego Preferowany język Wybierz środowisko uruchomieniowe, które obsługuje ulubiony język programowania funkcji.
    Region Północno-środkowe stany USA Wybierz region w swojej okolicy lub w pobliżu innych usług, do których Twoje funkcje uzyskują dostęp.

    Wybierz przycisk Dalej: hosting>.

  4. W sekcji Hosting wybierz odpowiednie konto magazynu, system operacyjny i plan zgodnie z opisem w poniższej tabeli.

    Ustawienie Sugerowana wartość opis
    Konto magazynu Nazwa unikatowa w skali globalnej Utwórz konto magazynu używane przez aplikację funkcji. Nazwy kont usługi Storage muszą mieć długość od 3 do 24 znaków i mogą zawierać tylko cyfry i małe litery. Możesz również użyć istniejącego konta, które musi spełniać wymagania dotyczące konta magazynu.
    System operacyjny Preferowany system operacyjny System operacyjny jest wstępnie wybrany na podstawie wybranego stosu środowiska uruchomieniowego, ale w razie potrzeby możesz zmienić ustawienie.
    Planowanie Zużycie Plan hostingu określa sposób skalowania aplikacji funkcji i zasobów dostępnych dla każdego wystąpienia.
  5. Wybierz pozycję Przejrzyj i utwórz , aby przejrzeć wybrane opcje konfiguracji aplikacji.

  6. Wybierz pozycję Utwórz, aby zaaprowizować i wdrożyć aplikację funkcji.

Konfigurowanie ograniczeń dostępu

Następnym krokiem jest skonfigurowanie ograniczeń dostępu w celu zapewnienia, że tylko zasoby w sieci wirtualnej mogą wywoływać funkcję.

Dostęp do lokacji prywatnej jest włączony przez utworzenie punktu końcowego usługi Azure Virtual Network między aplikacją funkcji a określoną siecią wirtualną. Ograniczenia dostępu są implementowane za pośrednictwem punktów końcowych usługi. Punkty końcowe usługi zapewniają, że tylko ruch pochodzący z określonej sieci wirtualnej może uzyskiwać dostęp do wyznaczonego zasobu. W tym przypadku wyznaczonym zasobem jest funkcja platformy Azure.

  1. W aplikacji funkcji wybierz link Sieć w nagłówku sekcji Ustawienia.

  2. Strona Sieć to punkt wyjścia do skonfigurowania usługi Azure Front Door, usługi Azure CDN oraz ograniczeń dostępu.

  3. Wybierz pozycję Konfiguruj ograniczenia dostępu, aby skonfigurować dostęp do lokacji prywatnej.

  4. Na stronie Ograniczenia dostępu zobaczysz tylko domyślne ograniczenie. Wartość domyślna nie nakłada żadnych ograniczeń dotyczących dostępu do aplikacji funkcji. Wybierz pozycję Dodaj regułę , aby utworzyć konfigurację ograniczeń dostępu do lokacji prywatnej.

  5. W okienku Dodawanie ograniczeń dostępu podaj nazwę, priorytet i opis nowej reguły.

  6. Wybierz pozycję Sieć wirtualna z listy rozwijanej Typ , a następnie wybierz wcześniej utworzoną sieć wirtualną, a następnie wybierz podsieć Samouczek .

    Uwaga

    Włączenie punktu końcowego usługi może potrwać kilka minut.

  7. Na stronie Ograniczenia dostępu jest teraz wyświetlane nowe ograniczenie. Zmiana stanu punktu końcowego z Wyłączone za pomocą aprowizacji na Włączona może potrwać kilka sekund.

    Ważne

    Każda aplikacja funkcji ma witrynę Advanced Tool (Kudu), która służy do zarządzania wdrożeniami aplikacji funkcji. Ta witryna jest uzyskiwana z adresu URL, takiego jak: <FUNCTION_APP_NAME>.scm.azurewebsites.net. Włączenie ograniczeń dostępu w lokacji Kudu uniemożliwia wdrożenie kodu projektu z lokalnej stacji roboczej dewelopera, a następnie agent jest potrzebny w sieci wirtualnej do wykonania wdrożenia.

Uzyskiwanie dostępu do aplikacji funkcji

  1. Wróć do wcześniej utworzonej aplikacji funkcji. W sekcji Przegląd skopiuj adres URL.

    Get the Function app URL

    Jeśli spróbujesz uzyskać dostęp do aplikacji funkcji teraz z komputera spoza sieci wirtualnej, otrzymasz stronę HTTP 403 wskazującą, że dostęp jest zabroniony.

  2. Wróć do grupy zasobów i wybierz wcześniej utworzoną maszynę wirtualną. Aby uzyskać dostęp do lokacji z maszyny wirtualnej, musisz nawiązać połączenie z maszyną wirtualną za pośrednictwem usługi Azure Bastion.

  3. Wybierz pozycję Połączenie, a następnie wybierz pozycję Bastion.

  4. Podaj wymaganą nazwę użytkownika i hasło, aby zalogować się do maszyny wirtualnej.

  5. Wybierz pozycję Połącz. Zostanie wyświetlone nowe okno przeglądarki, aby umożliwić interakcję z maszyną wirtualną. Istnieje możliwość uzyskania dostępu do witryny z przeglądarki internetowej na maszynie wirtualnej, ponieważ maszyna wirtualna uzyskuje dostęp do lokacji za pośrednictwem sieci wirtualnej. Chociaż lokacja jest dostępna tylko z wyznaczonej sieci wirtualnej, publiczny wpis DNS pozostaje.

Tworzenie funkcji

Następnym krokiem w tym samouczku jest utworzenie funkcji platformy Azure wyzwalanej przez protokół HTTP. Wywołanie funkcji za pośrednictwem żądania HTTP GET lub POST powinno spowodować odpowiedź "Hello, {name}".

  1. Postępuj zgodnie z jednym z poniższych przewodników Szybki start, aby utworzyć i wdrożyć aplikację usługi Azure Functions.

  2. Podczas publikowania projektu usługi Azure Functions wybierz zasób aplikacji funkcji utworzony wcześniej w tym samouczku.

  3. Sprawdź, czy funkcja została wdrożona.

    Deployed function in list of functions

Bezpośrednie wywoływanie funkcji

  1. Aby przetestować dostęp do funkcji, należy skopiować adres URL funkcji. Wybierz wdrożona funkcja, a następnie wybierz pozycję Pobierz adres URL funkcji. Następnie kliknij przycisk Kopiuj, aby skopiować adres URL do schowka.

    Copy the function URL

  2. Wklej adres URL do przeglądarki internetowej. Gdy próbujesz teraz uzyskać dostęp do aplikacji funkcji z komputera spoza sieci wirtualnej, otrzymasz odpowiedź HTTP 403 wskazującą, że dostęp do aplikacji jest zabroniony.

Wywoływanie funkcji z sieci wirtualnej

Uzyskiwanie dostępu do funkcji za pośrednictwem przeglądarki internetowej (przy użyciu usługi Azure Bastion) na skonfigurowanej maszynie wirtualnej w sieci wirtualnej powoduje powodzenie!

Access the Azure Function via Azure Bastion

Czyszczenie zasobów

W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli nie będziesz już potrzebować tych zasobów w przyszłości, możesz je usunąć przez usunięcie grupy zasobów.

W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Grupy zasobów. Następnie na stronie Grupy zasobów wybierz pozycję myResourceGroup.

Na stronie myResourceGroup upewnij się, że wymienione zasoby są tymi, które chcesz usunąć.

Wybierz pozycję Usuń grupę zasobów, wpisz myResourceGroup w polu tekstowym, aby potwierdzić, a następnie wybierz pozycję Usuń.

Następne kroki