Zabezpieczanie usługi Azure Functions

Na wiele sposobów planowanie bezpiecznego programowania, wdrażania i obsługi funkcji bezserwerowych jest bardzo takie samo jak w przypadku dowolnej aplikacji hostowanej w internecie lub w chmurze. usługa aplikacja systemu Azure udostępnia infrastrukturę hostingu dla aplikacji funkcji. Ten artykuł zawiera strategie zabezpieczeń dotyczące uruchamiania kodu funkcji oraz sposób, w jaki usługa App Service może pomóc w zabezpieczeniu funkcji.

Składniki platformy App Service, w tym maszyny wirtualne platformy Azure, magazyn, połączenia sieciowe, struktury internetowe oraz funkcje zarządzania i integracji, są aktywnie zabezpieczone i wzmocnione. Usługa App Service przeprowadza intensywne kontrole zgodności w sposób ciągły, aby upewnić się, że:

  • Zasoby aplikacji są zabezpieczone przed zasobami platformy Azure innych klientów.
  • Wystąpienia maszyn wirtualnych i oprogramowanie uruchomieniowe są regularnie aktualizowane w celu rozwiązania nowo wykrytych luk w zabezpieczeniach.
  • Komunikacja wpisów tajnych (takich jak parametry połączenia) między aplikacją a innymi zasobami platformy Azure (takimi jak usługa SQL Database) pozostaje na platformie Azure i nie przekracza żadnych granic sieci. Wpisy tajne są zawsze szyfrowane podczas przechowywania.
  • Cała komunikacja za pośrednictwem funkcji łączności usługi App Service, takich jak połączenie hybrydowe, jest szyfrowana.
  • Połączenie ions z narzędziami do zdalnego zarządzania, takimi jak program Azure PowerShell, interfejs wiersza polecenia platformy Azure, zestawy AZURE SDK, interfejsy API REST, są szyfrowane.
  • 24-godzinne zarządzanie zagrożeniami chroni infrastrukturę i platformę przed złośliwym oprogramowaniem, rozproszoną odmową usługi (DDoS), man-in-the-middle (MITM) i innymi zagrożeniami.

Aby uzyskać więcej informacji na temat zabezpieczeń infrastruktury i platformy na platformie Azure, zobacz Centrum zaufania Platformy Azure.

Aby uzyskać zestaw zaleceń dotyczących zabezpieczeń, które są zgodne z testem porównawczym zabezpieczeń w chmurze firmy Microsoft, zobacz Punkt odniesienia zabezpieczeń platformy Azure dla usługi Azure Functions.

Bezpieczna operacja

Ta sekcja zawiera instrukcje dotyczące konfigurowania i uruchamiania aplikacji funkcji tak bezpiecznie, jak to możliwe.

Defender dla Chmury

Defender dla Chmury integruje się z aplikacją funkcji w portalu. Zapewnia bezpłatnie szybką ocenę potencjalnych luk w zabezpieczeniach związanych z konfiguracją. Aplikacje funkcji działające w dedykowanym planie mogą również korzystać z rozszerzonych funkcji zabezpieczeń Defender dla Chmury w celu uzyskania dodatkowych kosztów. Aby dowiedzieć się więcej, zobacz Ochrona aplikacji internetowych i interfejsów API usługi aplikacja systemu Azure Service.

Rejestrowanie i monitorowanie

Jednym ze sposobów wykrywania ataków jest monitorowanie działań i analiza rejestrowania. Funkcje integrują się z usługą Application Szczegółowe informacje w celu zbierania danych dziennika, wydajności i błędów aplikacji funkcji. Aplikacja Szczegółowe informacje automatycznie wykrywa anomalie wydajności i zawiera zaawansowane narzędzia analityczne ułatwiające diagnozowanie problemów i zrozumienie sposobu korzystania z funkcji. Aby dowiedzieć się więcej, zobacz Monitorowanie usługi Azure Functions.

Funkcje integrują się również z dziennikami usługi Azure Monitor, aby umożliwić konsolidację dzienników aplikacji funkcji z zdarzeniami systemowymi w celu łatwiejszej analizy. Możesz użyć ustawień diagnostycznych, aby skonfigurować eksportowanie strumieniowe dzienników platformy i metryk dla funkcji do wybranego miejsca docelowego, takiego jak obszar roboczy usługi Logs Analytics. Aby dowiedzieć się więcej, zobacz Monitorowanie usługi Azure Functions za pomocą dzienników usługi Azure Monitor.

W przypadku automatyzacji wykrywania zagrożeń i reagowania na poziomie przedsiębiorstwa przesyłaj strumieniowo dzienniki i zdarzenia do obszaru roboczego usługi Logs Analytics. Następnie możesz połączyć usługę Microsoft Sentinel z tym obszarem roboczym. Aby dowiedzieć się więcej, zobacz Co to jest usługa Microsoft Sentinel.

Aby uzyskać więcej zaleceń dotyczących zabezpieczeń na potrzeby obserwacji, zobacz Punkt odniesienia zabezpieczeń platformy Azure dla usługi Azure Functions.

Wymagaj protokołu HTTPS

Domyślnie klienci mogą łączyć się z punktami końcowymi funkcji przy użyciu protokołu HTTP lub HTTPS. Należy przekierować protokół HTTP do protokołu HTTPs, ponieważ protokół HTTPS używa protokołu SSL/TLS w celu zapewnienia bezpiecznego połączenia, które jest szyfrowane i uwierzytelniane. Aby dowiedzieć się, jak to zrobić, zobacz Wymuszanie protokołu HTTPS.

Jeśli potrzebujesz protokołu HTTPS, należy również wymagać najnowszej wersji protokołu TLS. Aby dowiedzieć się, jak to zrobić, zobacz Wymuszanie wersji protokołu TLS.

Aby uzyskać więcej informacji, zobacz Bezpieczne połączenia (TLS).

Klucze dostępu funkcji

Funkcje umożliwiają używanie kluczy, aby utrudnić dostęp do punktów końcowych funkcji HTTP podczas programowania. Jeśli poziom dostępu HTTP w funkcji wyzwalanej przez protokół HTTP jest ustawiony na anonymouswartość , żądania muszą zawierać klucz dostępu interfejsu API w żądaniu.

Klucze zapewniają domyślny mechanizm zabezpieczeń, ale warto rozważyć inne opcje zabezpieczania punktu końcowego HTTP w środowisku produkcyjnym. Na przykład nie jest to dobre rozwiązanie do rozpowszechniania udostępnionego wpisu tajnego w aplikacjach publicznych. Jeśli funkcja jest wywoływana z klienta publicznego, warto rozważyć zaimplementowanie innego mechanizmu zabezpieczeń. Aby dowiedzieć się więcej, zobacz Zabezpieczanie punktu końcowego HTTP w środowisku produkcyjnym.

Po odnowieniu wartości klucza funkcji należy ręcznie ponownie rozsyłać zaktualizowane wartości klucza do wszystkich klientów wywołujących funkcję.

Zakresy autoryzacji (poziom funkcji)

Istnieją dwa zakresy dostępu dla kluczy na poziomie funkcji:

  • Funkcja: Te klucze mają zastosowanie tylko do określonych funkcji, w których są zdefiniowane. W przypadku użycia jako klucza interfejsu API te zezwalają tylko na dostęp do tej funkcji.

  • Host: klucze z zakresem hosta mogą służyć do uzyskiwania dostępu do wszystkich funkcji w aplikacji funkcji. Jeśli jest używany jako klucz interfejsu API, umożliwiają one dostęp do dowolnej funkcji w aplikacji funkcji.

Każdy klucz jest nazwany jako odwołanie i istnieje klucz domyślny (o nazwie "default") na poziomie funkcji i hosta. Klucze funkcji mają pierwszeństwo przed kluczami hosta. Gdy dwa klucze są zdefiniowane o tej samej nazwie, klucz funkcji jest zawsze używany.

Klucz główny (poziom administratora)

Każda aplikacja funkcji ma również klucz hosta na poziomie administratora o nazwie _master. Oprócz zapewnienia dostępu na poziomie hosta do wszystkich funkcji w aplikacji klucz główny zapewnia również dostęp administracyjny do interfejsów API REST środowiska uruchomieniowego. Nie można odwołać tego klucza. Po ustawieniu poziomu admindostępu żądania muszą używać klucza głównego. Każdy inny klucz powoduje niepowodzenie dostępu.

Uwaga

Ze względu na podniesione uprawnienia w aplikacji funkcji przyznane przez klucz główny nie należy udostępniać tego klucza innym firmom ani rozpowszechniać go w natywnych aplikacjach klienckich. Zachowaj ostrożność podczas wybierania poziomu dostępu administratora.

Klucz systemowy

Określone rozszerzenia mogą wymagać klucza zarządzanego przez system w celu uzyskania dostępu do punktów końcowych elementu webhook. Klucze systemowe są przeznaczone dla punktów końcowych funkcji specyficznych dla rozszerzenia, które są wywoływane przez składniki wewnętrzne. Na przykład wyzwalacz usługi Event Grid wymaga, aby subskrypcja używała klucza systemowego podczas wywoływania punktu końcowego wyzwalacza. Rozszerzenie Durable Functions używa również kluczy systemowych do wywoływania interfejsów API rozszerzenia Durable Task.

Zakres kluczy systemowych jest określany przez rozszerzenie, ale zwykle dotyczy całej aplikacji funkcji. Klucze systemowe mogą być tworzone tylko przez określone rozszerzenia i nie można jawnie ustawić ich wartości. Podobnie jak inne klucze, można wygenerować nową wartość klucza z portalu lub przy użyciu interfejsów API kluczy.

Porównanie kluczy

W poniższej tabeli porównaliśmy zastosowania dla różnych rodzajów kluczy dostępu:

Akcja Scope Prawidłowe klucze
Wykonywanie funkcji Określona funkcja Function
Wykonywanie funkcji Dowolna funkcja Funkcja lub host
Wywoływanie punktu końcowego administratora Aplikacja funkcji Host (tylko wzorzec)
Wywoływanie interfejsów API rozszerzenia Durable Task Aplikacjafunkcji 1 System2
Wywoływanie elementu webhook specyficznego dla rozszerzenia (wewnętrznego) Aplikacjafunkcji 1 system2

1Zakres określony przez rozszerzenie.
2Określone nazwy ustawione przez rozszerzenie.

Aby dowiedzieć się więcej na temat kluczy dostępu, zobacz artykuł Powiązanie wyzwalacza HTTP.

Repozytoria wpisów tajnych

Domyślnie klucze są przechowywane w kontenerze usługi Blob Storage na koncie dostarczonym AzureWebJobsStorage przez to ustawienie. Możesz użyć ustawienia AzureWebJobsSecretStorageType , aby zastąpić to zachowanie i przechowywać klucze w innej lokalizacji.

Lokalizacja Wartość Opis
Drugie konto magazynu blob Przechowuje klucze w magazynie obiektów blob innego konta magazynu na podstawie adresu URL sygnatury dostępu współdzielonego w ustawieniu AzureWebJobsSecretStorageSas.
System plików files Klucze są utrwalane w systemie plików, co jest zachowaniem domyślnym w usłudze Functions w wersji 1.x.
Azure Key Vault keyvault Magazyn kluczy ustawiony w parametrze AzureWebJobsSecretStorageKeyVaultUri służy do przechowywania kluczy.
Wpisy tajne usługi Kubernetes kubernetes Zasób ustawiony w parametrze AzureWebJobsKubernetesSecretName służy do przechowywania kluczy. Jest obsługiwany tylko w przypadku uruchamiania środowiska uruchomieniowego usługi Functions na platformie Kubernetes. Narzędzia Azure Functions Core Tools generują wartości automatycznie podczas wdrażania na platformie Kubernetes.

W przypadku używania usługi Key Vault do przechowywania kluczy potrzebne ustawienia aplikacji zależą od typu tożsamości zarządzanej. Środowisko uruchomieniowe usługi Functions w wersji 3.x obsługuje tylko tożsamości zarządzane przypisane przez system.

Nazwa ustawienia Przypisane przez system Przypisane przez użytkownika Rejestracja aplikacji
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId X
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

Uwierzytelnianie/autoryzacja

Chociaż klucze funkcji mogą zapewnić pewne środki zaradcze w przypadku niechcianego dostępu, jedynym sposobem na naprawdę zabezpieczenie punktów końcowych funkcji jest zaimplementowanie pozytywnego uwierzytelniania klientów, którzy uzyskują dostęp do funkcji. Następnie możesz podejmować decyzje dotyczące autoryzacji na podstawie tożsamości.

Włączanie uwierzytelniania/autoryzacji usługi App Service

Platforma App Service umożliwia uwierzytelnianie klientów przy użyciu identyfikatora Entra firmy Microsoft i kilku dostawców tożsamości innych firm. Ta strategia umożliwia zaimplementowanie niestandardowych reguł autoryzacji dla funkcji i pracę z informacjami o użytkowniku z poziomu kodu funkcji. Aby dowiedzieć się więcej, zobacz Uwierzytelnianie i autoryzacja w usłudze aplikacja systemu Azure i Praca z tożsamościami klientów.

Uwierzytelnianie żądań przy użyciu usługi Azure API Management (APIM)

Usługa APIM oferuje różne opcje zabezpieczeń interfejsu API dla żądań przychodzących. Aby dowiedzieć się więcej, zobacz Zasady uwierzytelniania usługi API Management. Za pomocą usługi APIM możesz skonfigurować aplikację funkcji tak, aby akceptowała żądania tylko z adresu IP wystąpienia usługi APIM. Aby dowiedzieć się więcej, zobacz Ograniczenia adresów IP.

Uprawnienia

Podobnie jak w przypadku dowolnej aplikacji lub usługi, celem jest uruchomienie aplikacji funkcji z najniższymi możliwymi uprawnieniami.

Uprawnienia do zarządzania użytkownikami

Usługa Functions obsługuje wbudowaną kontrolę dostępu opartą na rolach (RBAC) platformy Azure. Role platformy Azure obsługiwane przez funkcje to Współautor, Właściciel i Czytelnik.

Uprawnienia są skuteczne na poziomie aplikacji funkcji. Rola Współautor jest wymagana do wykonywania większości zadań na poziomie aplikacji funkcji. Potrzebna jest również rola Współautor wraz z uprawnieniem Czytelnik monitorowania, aby móc wyświetlać dane dziennika w aplikacji Szczegółowe informacje. Tylko rola Właściciel może usunąć aplikację funkcji.

Organizowanie funkcji według uprawnień

ciągi Połączenie ion i inne poświadczenia przechowywane w ustawieniach aplikacji udostępniają wszystkim funkcjom w aplikacji funkcji ten sam zestaw uprawnień w skojarzonym zasobie. Rozważ zminimalizowanie liczby funkcji z dostępem do określonych poświadczeń przez przeniesienie funkcji, które nie używają tych poświadczeń do oddzielnej aplikacji funkcji. Zawsze można używać technik, takich jak łączenie łańcuchów funkcji w celu przekazywania danych między funkcjami w różnych aplikacjach funkcji.

Tożsamości zarządzane

Tożsamość zarządzana firmy Microsoft Entra ID umożliwia aplikacji łatwy dostęp do innych chronionych zasobów firmy Microsoft, takich jak Azure Key Vault. Tożsamość jest zarządzana przez platformę Azure i nie wymaga aprowizacji ani rotacji żadnych wpisów tajnych. Aby uzyskać więcej informacji na temat tożsamości zarządzanych w usłudze Microsoft Entra ID, zobacz Tożsamości zarządzane dla zasobów platformy Azure.

Aplikacja może mieć korzystać z dwóch typów tożsamości:

  • Tożsamość przypisana przez system jest powiązana z aplikacją i jest usuwana, gdy aplikacja zostanie usunięta. Aplikacja może mieć tylko jedną tożsamość przypisaną przez system.
  • Tożsamość przypisana przez użytkownika to autonomiczny zasób platformy Azure, który można przypisać do aplikacji. Aplikacja może mieć wiele tożsamości przypisanych przez użytkownika.

Tożsamości zarządzane mogą być używane zamiast wpisów tajnych dla połączeń z niektórych wyzwalaczy i powiązań. Zobacz Połączenia oparte na tożsamościach.

Aby uzyskać więcej informacji, zobacz How to use managed identities for App Service and Azure Functions (Jak używać tożsamości zarządzanych dla usług App Service i Azure Functions).

Ograniczanie dostępu za pomocą mechanizmu CORS

Współużytkowanie zasobów między źródłami (CORS) to sposób zezwalania aplikacjom internetowym działającym w innej domenie na wykonywanie żądań do punktów końcowych wyzwalacza HTTP. Usługa App Service zapewnia wbudowaną obsługę przekazywania wymaganych nagłówków CORS w żądaniach HTTP. Reguły CORS są definiowane na poziomie aplikacji funkcji.

Chociaż kuszące jest użycie symbolu wieloznakowego, który umożliwia wszystkim witrynom uzyskiwanie dostępu do punktu końcowego, powoduje to pokonanie celu mechanizmu CORS, co ma pomóc w zapobieganiu atakom skryptowym między witrynami. Zamiast tego dodaj oddzielny wpis CORS dla domeny każdej aplikacji internetowej, która musi uzyskać dostęp do punktu końcowego.

Zarządzanie wpisami tajnymi

Aby móc nawiązać połączenie z różnymi usługami i zasobami, należy uruchomić kod, aplikacje funkcji muszą mieć dostęp do wpisów tajnych, takich jak parametry połączenia i klucze usługi. W tej sekcji opisano sposób przechowywania wpisów tajnych wymaganych przez funkcje.

Nigdy nie przechowuj wpisów tajnych w kodzie funkcji.

Ustawienia aplikacji

Domyślnie parametry połączenia i wpisy tajne używane przez aplikację funkcji i powiązania są przechowywane jako ustawienia aplikacji. Dzięki temu te poświadczenia są dostępne zarówno dla kodu funkcji, jak i różnych powiązań używanych przez funkcję. Nazwa ustawienia aplikacji (klucza) służy do pobierania rzeczywistej wartości, która jest wpisem tajnym.

Na przykład każda aplikacja funkcji wymaga skojarzonego konta magazynu, które jest używane przez środowisko uruchomieniowe. Domyślnie połączenie z tym kontem magazynu jest przechowywane w ustawieniu aplikacji o nazwie AzureWebJobsStorage.

Ustawienia aplikacji i parametry połączenia są przechowywane zaszyfrowane na platformie Azure. Są one odszyfrowywane dopiero przed wstrzyknięciem do pamięci procesu aplikacji po uruchomieniu aplikacji. Klucze szyfrowania są regularnie obracane. Jeśli wolisz zarządzać bezpiecznym magazynem wpisów tajnych, ustawienie aplikacji powinno zamiast tego być odwołaniami do usługi Azure Key Vault.

Ustawienia można również szyfrować domyślnie w pliku local.settings.json podczas opracowywania funkcji na komputerze lokalnym. Aby uzyskać więcej informacji, zobacz Szyfrowanie pliku ustawień lokalnych.

Odwołania do usługi Key Vault

Chociaż ustawienia aplikacji są wystarczające dla większości funkcji, możesz chcieć udostępnić te same wpisy tajne w wielu usługach. W takim przypadku nadmiarowy magazyn wpisów tajnych powoduje zwiększenie potencjalnych luk w zabezpieczeniach. Bardziej bezpieczne podejście polega na centralnej usłudze magazynu wpisów tajnych i używaniu odwołań do tej usługi zamiast samych wpisów tajnych.

Azure Key Vault to usługa, która zapewnia scentralizowane zarządzanie wpisami tajnymi z pełną kontrolą nad zasadami dostępu i historią inspekcji. Odwołanie do usługi Key Vault można użyć zamiast parametry połączenia lub klucza w ustawieniach aplikacji. Aby dowiedzieć się więcej, zobacz Use Key Vault references for App Service and Azure Functions (Używanie odwołań usługi Key Vault dla usług App Service i Azure Functions).

Połączenia oparte na tożsamościach

Tożsamości mogą być używane zamiast wpisów tajnych do nawiązywania połączenia z niektórymi zasobami. Jest to zaleta braku konieczności zarządzania wpisem tajnym i zapewnia bardziej szczegółową kontrolę dostępu i inspekcję.

Podczas pisania kodu, który tworzy połączenie z usługami platformy Azure obsługującymi uwierzytelnianie firmy Microsoft Entra, możesz użyć tożsamości zamiast wpisu tajnego lub parametry połączenia. Szczegółowe informacje dotyczące obu metod połączenia zostały omówione w dokumentacji dla każdej usługi.

Niektóre rozszerzenia wyzwalacza i powiązań usługi Azure Functions można skonfigurować przy użyciu połączenia opartego na tożsamościach. Obecnie obejmuje to rozszerzenia usługi Azure Blob i Azure Queue . Aby uzyskać informacje o sposobie konfigurowania tych rozszerzeń pod kątem używania tożsamości, zobacz How to use identity-based connections in Azure Functions (Jak używać połączeń opartych na tożsamościach w usłudze Azure Functions).

Ustawianie przydziałów użycia

Rozważ ustawienie limitu przydziału użycia dla funkcji uruchomionych w planie Zużycie. Po ustawieniu dziennego limitu GB na łączne całkowite wykonanie funkcji w aplikacji funkcji jest zatrzymywane po osiągnięciu limitu. Może to potencjalnie pomóc w ograniczeniu ryzyka złośliwego kodu wykonującego funkcje. Aby dowiedzieć się, jak oszacować zużycie funkcji, zobacz Szacowanie kosztów planu zużycia.

Sprawdzanie poprawności danych

Wyzwalacze i powiązania używane przez funkcje nie zapewniają dodatkowej weryfikacji danych. Kod musi zweryfikować wszystkie dane odebrane z wyzwalacza lub powiązania wejściowego. Jeśli naruszono bezpieczeństwo usługi nadrzędnej, nie chcesz, aby nie walidowane dane wejściowe przepływały przez funkcje. Jeśli na przykład funkcja przechowuje dane z kolejki usługi Azure Storage w relacyjnej bazie danych, musisz zweryfikować dane i parametryzować polecenia, aby uniknąć ataków polegających na wstrzyknięciu kodu SQL.

Nie zakładaj, że dane przychodzące do funkcji zostały już zweryfikowane lub oczyszczone. Warto również sprawdzić, czy dane zapisywane w powiązaniach wyjściowych są prawidłowe.

Obsługa błędów

Chociaż wydaje się to podstawowe, ważne jest, aby napisać dobrą obsługę błędów w funkcjach. Nieobsługiwane błędy bąbelkowe do hosta i są obsługiwane przez środowisko uruchomieniowe. Różne powiązania obsługują przetwarzanie błędów inaczej. Aby dowiedzieć się więcej, zobacz Obsługa błędów usługi Azure Functions.

Wyłączanie zdalnego debugowania

Upewnij się, że debugowanie zdalne jest wyłączone, z wyjątkiem przypadków aktywnego debugowania funkcji. Zdalne debugowanie można wyłączyć na karcie Ogólne Ustawienia konfiguracji aplikacji funkcji w portalu.

Ograniczanie dostępu za pomocą mechanizmu CORS

Usługa Azure Functions obsługuje współużytkowanie zasobów między źródłami (CORS). Mechanizm CORS jest skonfigurowany w portalu i za pośrednictwem interfejsu wiersza polecenia platformy Azure. Lista dozwolonych źródeł mechanizmu CORS ma zastosowanie na poziomie aplikacji funkcji. Po włączeniu Access-Control-Allow-Origin mechanizmu CORS odpowiedzi zawierają nagłówek. Aby uzyskać więcej informacji, zobacz temat Współużytkowanie zasobów między źródłami.

Nie używaj symboli wieloznacznych na liście dozwolonych źródeł. Zamiast tego wyświetl listę określonych domen, z których oczekujesz żądania.

Przechowywanie zaszyfrowanych danych

Usługa Azure Storage szyfruje wszystkie dane na koncie magazynu magazynowanych. Więcej informacji można znaleźć w sekcji Szyfrowanie danych przechowywanych w usłudze Azure Storage.

Domyślnie dane są szyfrowane przy użyciu kluczy zarządzanych przez firmę Microsoft. Aby uzyskać dodatkową kontrolę nad kluczami szyfrowania, można podać klucze zarządzane przez klienta do użycia do szyfrowania obiektów blob i danych plików. Te klucze muszą znajdować się w usłudze Azure Key Vault dla usługi Functions, aby móc uzyskać dostęp do konta magazynu. Aby dowiedzieć się więcej, zobacz Szyfrowanie magazynowane przy użyciu kluczy zarządzanych przez klienta.

Aplikacja funkcji często zależy od dodatkowych zasobów, więc część zabezpieczania aplikacji zabezpiecza te zasoby zewnętrzne. Co najmniej większość aplikacji funkcji obejmuje zależność od aplikacji Szczegółowe informacje i usługi Azure Storage. Zapoznaj się z punktem odniesienia zabezpieczeń platformy Azure dla usługi Azure Monitor i punktem odniesienia zabezpieczeń platformy Azure dla usługi Storage , aby uzyskać wskazówki dotyczące zabezpieczania tych zasobów.

Ważne

Konto magazynu służy do przechowywania ważnych danych aplikacji, czasami w tym samego kodu aplikacji. Należy ograniczyć dostęp z innych aplikacji i użytkowników do konta magazynu.

Należy również zapoznać się ze wskazówkami dotyczącymi wszelkich typów zasobów, od których zależy logika aplikacji, zarówno jako wyzwalacze, jak i powiązania oraz kod funkcji.

Bezpieczne wdrożenie

Integracja narzędzi usługi Azure Functions ułatwia publikowanie kodu projektu funkcji lokalnej na platformie Azure. Ważne jest, aby zrozumieć, jak działa wdrożenie podczas rozważania zabezpieczeń topologii usługi Azure Functions.

Poświadczenia wdrożenia

Wdrożenia usługi App Service wymagają zestawu poświadczeń wdrożenia. Te poświadczenia wdrożenia są używane do zabezpieczania wdrożeń aplikacji funkcji. Poświadczenia wdrożenia są zarządzane przez platformę usługi App Service i są szyfrowane w spoczynku.

Istnieją dwa rodzaje poświadczeń wdrożenia:

  • Poświadczenia na poziomie użytkownika: jeden zestaw poświadczeń dla całego konta platformy Azure. Może służyć do wdrażania w usłudze App Service dla dowolnej aplikacji w dowolnej subskrypcji, do którego konto platformy Azure ma uprawnienia dostępu. Jest to domyślny zestaw wyświetlany w graficznym interfejsie użytkownika portalu (na przykład przegląd i właściwości strony zasobu aplikacji). Gdy użytkownik otrzymuje dostęp do aplikacji za pośrednictwem kontroli dostępu opartej na rolach (RBAC) lub współadmin uprawnień, ten użytkownik może używać własnych poświadczeń na poziomie użytkownika do momentu odwołania dostępu. Nie udostępniaj tych poświadczeń innym użytkownikom platformy Azure.

  • Poświadczenia na poziomie aplikacji: jeden zestaw poświadczeń dla każdej aplikacji. Może służyć tylko do wdrażania w tej aplikacji. Poświadczenia dla każdej aplikacji są generowane automatycznie podczas tworzenia aplikacji. Nie można ich skonfigurować ręcznie, ale można je zresetować w dowolnym momencie. Aby użytkownik mógł uzyskać dostęp do poświadczeń na poziomie aplikacji za pośrednictwem (RBAC), musi być współautorem lub wyższym użytkownikiem w aplikacji (w tym wbudowaną rolą Współautor witryny internetowej). Czytelnicy nie mogą publikować i nie mogą uzyskiwać dostępu do tych poświadczeń.

Obecnie usługa Key Vault nie jest obsługiwana w przypadku poświadczeń wdrożenia. Aby dowiedzieć się więcej na temat zarządzania poświadczeniami wdrożenia, zobacz Konfigurowanie poświadczeń wdrożenia dla usługi aplikacja systemu Azure.

Wyłączanie protokołu FTP

Domyślnie każda aplikacja funkcji ma włączony punkt końcowy FTP. Dostęp do punktu końcowego FTP jest uzyskiwany przy użyciu poświadczeń wdrożenia.

Protokół FTP nie jest zalecany do wdrażania kodu funkcji. Wdrożenia FTP są ręczne i wymagają synchronizacji wyzwalaczy. Aby dowiedzieć się więcej, zobacz Wdrażanie protokołu FTP.

Jeśli nie planujesz korzystania z protokołu FTP, należy go wyłączyć w portalu. Jeśli zdecydujesz się używać protokołu FTP, należy wymusić usługę FTPS.

Zabezpieczanie punktu końcowego scm

Każda aplikacja funkcji ma odpowiedni scm punkt końcowy usługi używany przez usługę Advanced Tools (Kudu) na potrzeby wdrożeń i innych rozszerzeń witryny usługi App Service. Punkt końcowy scm dla aplikacji funkcji jest zawsze adresem URL w formularzu https://<FUNCTION_APP_NAME.scm.azurewebsites.net>. W przypadku używania izolacji sieciowej do zabezpieczania funkcji należy również uwzględnić ten punkt końcowy.

Mając oddzielny punkt końcowy scm, można kontrolować wdrożenia i inne zaawansowane funkcje narzędzi dla aplikacji funkcji, które są izolowane lub uruchomione w sieci wirtualnej. Punkt końcowy scm obsługuje zarówno uwierzytelnianie podstawowe (przy użyciu poświadczeń wdrożenia), jak i logowanie jednokrotne przy użyciu poświadczeń witryny Azure Portal. Aby dowiedzieć się więcej, zobacz Uzyskiwanie dostępu do usługi Kudu.

Ciągła weryfikacja zabezpieczeń

Ponieważ zabezpieczenia muszą być brane pod uwagę na każdym etapie procesu programowania, warto również zaimplementować weryfikacje zabezpieczeń w środowisku ciągłego wdrażania. Jest to czasami nazywane DevSecOps. Korzystanie z usługi Azure DevOps dla potoku wdrażania umożliwia integrację walidacji z procesem wdrażania. Aby uzyskać więcej informacji, zobacz Dowiedz się, jak dodać ciągłą walidację zabezpieczeń do potoku ciągłej integracji/ciągłego wdrażania.

Bezpieczeństwo sieci

Ograniczenie dostępu sieciowego do aplikacji funkcji umożliwia kontrolowanie, kto może uzyskiwać dostęp do punktów końcowych funkcji. Usługa Functions korzysta z infrastruktury usługi App Service, aby umożliwić funkcjom dostęp do zasobów bez używania adresów routingu internetowego lub ograniczenia dostępu do Internetu do punktu końcowego funkcji. Aby dowiedzieć się więcej na temat tych opcji sieciowych, zobacz Opcje sieci usługi Azure Functions.

Ustawianie ograniczeń dostępu

Ograniczenia dostępu umożliwiają definiowanie list reguł zezwalania/odmowy w celu kontrolowania ruchu do aplikacji. Reguły są oceniane w kolejności priorytetu. Jeśli nie zdefiniowano żadnych reguł, aplikacja będzie akceptować ruch z dowolnego adresu. Aby dowiedzieć się więcej, zobacz aplikacja systemu Azure Ograniczenia dostępu do usługi.

Zabezpieczanie konta magazynu

Podczas tworzenia aplikacji funkcji należy utworzyć lub połączyć się z kontem usługi Azure Storage ogólnego przeznaczenia, które obsługuje usługę Blob, Queue i Table Storage. Możesz zastąpić to konto magazynu jednym zabezpieczonym punktami końcowymi usługi lub prywatnymi punktami końcowymi. Aby uzyskać więcej informacji, zobacz Ograniczanie konta magazynu do sieci wirtualnej.

Dostęp do witryn prywatnych

Prywatny punkt końcowy platformy Azure to interfejs sieciowy, który nawiązuje prywatne i bezpieczne połączenie z usługą obsługiwaną przez usługę 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 Premium i 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 ze strefami prywatnymi usługi Azure DNS. 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ę. W tym celu należy znać prywatny adres punktu końcowego, a następnie wskazać punkt końcowy, do którego próbujesz uzyskać dostęp do tego adresu przy użyciu rekordu A.
  • Skonfiguruj własny serwer DNS, aby przekazywać dalej do stref prywatnych usługi Azure DNS.

Aby dowiedzieć się więcej, zobacz Używanie prywatnych punktów końcowych dla usługi Web Apps.

Wdrażanie aplikacji funkcji w izolacji

środowisko aplikacja systemu Azure Service Environment (ASE) udostępnia dedykowane środowisko hostingu, w którym można uruchamiać funkcje. Środowisko ASE umożliwia skonfigurowanie pojedynczej bramy frontonu, której można użyć do uwierzytelniania wszystkich żądań przychodzących. Aby uzyskać więcej informacji, zobacz Konfigurowanie zapory aplikacji internetowej (WAF) dla środowiska App Service Environment.

Korzystanie z usługi bramy

Usługi bramy, takie jak aplikacja systemu Azure Gateway i Azure Front Door, umożliwiają skonfigurowanie zapory aplikacji internetowej (WAF). Reguły zapory aplikacji internetowej służą do monitorowania lub blokowania wykrytych ataków, które zapewniają dodatkową warstwę ochrony funkcji. Aby skonfigurować zaporę aplikacji internetowej, aplikacja funkcji musi być uruchomiona w środowisku ASE lub przy użyciu prywatnych punktów końcowych (wersja zapoznawcza). Aby dowiedzieć się więcej, zobacz Using Private Endpoints (Korzystanie z prywatnych punktów końcowych).

Następne kroki