Bezpiecznie zarządzane aplikacje internetowe

Azure App Service
Azure Application Gateway
Azure SQL Database
Azure VPN Gateway
Azure Web Application Firewall

Ten artykuł zawiera omówienie wdrażania bezpiecznych aplikacji przy użyciu środowiska App Service Environment. Aby ograniczyć dostęp aplikacji z Internetu, używana jest usługa aplikacja systemu Azure Gateway i usługa Azure Web Application Firewall. Ten artykuł zawiera również wskazówki dotyczące ciągłej integracji i ciągłego wdrażania (CI/CD) dla środowisk App Service Environment korzystających z usługi Azure DevOps.

Ten scenariusz jest często wdrażany w branżach, takich jak bankowość i ubezpieczenie, gdzie klienci są świadomi zabezpieczeń na poziomie platformy oprócz zabezpieczeń na poziomie aplikacji. Aby zademonstrować te pojęcia, użyjemy aplikacji, która umożliwia użytkownikom przesyłanie raportów wydatków.

Potencjalne przypadki użycia

Rozważmy ten scenariusz w następujących przypadkach użycia:

  • Tworzenie aplikacji internetowej platformy Azure, w której wymagane jest dodatkowe zabezpieczenia.
  • Zapewnianie dedykowanej dzierżawy, a nie udostępnionych planów usługi App Service dzierżawy.
  • Korzystanie z usługi Azure DevOps z wewnętrznym środowiskiem usługi aplikacji o zrównoważonym obciążeniu (ILB).

Architektura

Diagram przedstawiający przykładową architekturę scenariusza wdrożenia środowiska App Service Environment bezpiecznego modułu równoważenia obciążenia.

Pobierz plik programu Visio z tą architekturą.

Przepływ danych

  1. Żądania HTTP/HTTPS najpierw trafiają do bramy aplikacji.
  2. Opcjonalnie (nie pokazano na diagramie) możesz włączyć uwierzytelnianie microsoft Entra dla aplikacji internetowej. Po pierwszym trafieniu ruchu do bramy aplikacji użytkownik zostanie poproszony o podanie poświadczeń w celu uwierzytelnienia w aplikacji.
  3. Żądania użytkowników przepływają przez wewnętrzny moduł równoważenia obciążenia (ILB) środowiska, który z kolei kieruje ruch do aplikacji internetowej Wydatków.
  4. Następnie użytkownik przechodzi do tworzenia raportu wydatków.
  5. W ramach tworzenia raportu wydatków wdrożona aplikacja interfejsu API jest wywoływana w celu pobrania nazwy i wiadomości e-mail menedżera użytkownika.
  6. Utworzony raport wydatków jest przechowywany w usłudze Azure SQL Database.
  7. Aby ułatwić ciągłe wdrażanie, kod jest ewidencjonowany w wystąpieniu usługi Azure DevOps.
  8. Maszyna wirtualna kompilacji ma zainstalowanego agenta usługi Azure DevOps, umożliwiając maszynie wirtualnej kompilacji ściąganie bitów dla aplikacji internetowej w celu wdrożenia w środowisku App Service Environment (ponieważ maszyna wirtualna kompilacji jest wdrażana w podsieci wewnątrz tej samej sieci wirtualnej).

Składniki

  • Środowisko App Service Environment zapewnia w pełni izolowane, dedykowane środowisko do bezpiecznego uruchamiania aplikacji na dużą skalę. Ponadto, ponieważ środowisko App Service Environment i obciążenia uruchomione na nim znajdują się za siecią wirtualną, zapewnia również dodatkową warstwę zabezpieczeń i izolacji. Wymaganie wysokiej skali i izolacji spowodowało wybór środowiska App Service Environment z wewnętrznym modułem równoważenia obciążenia.
  • To obciążenie korzysta z izolowanej warstwy cenowej usługi App Service, więc aplikacja działa w prywatnym dedykowanym środowisku w centrum danych platformy Azure przy użyciu szybszych procesorów, magazynu dysków półprzewodnikowych (SSD) i dwukrotnie więcej niż w warstwie Standardowa.
  • usługa aplikacja systemu AzureAplikacja internetowa i aplikacja interfejsu API hostuje aplikacje internetowe i interfejsy API RESTful. Te aplikacje i interfejsy API są hostowane w planie usługi izolowanej, która oferuje również skalowanie automatyczne, domeny niestandardowe itd., ale w dedykowanej warstwie.
  • Usługa Azure Application Gateway to internetowy moduł równoważenia obciążenia ruchu działający w warstwie 7, który zarządza ruchem do aplikacji internetowej. Oferuje odciążanie protokołu SSL, co eliminuje dodatkowe obciążenie z serwerów internetowych hostujących aplikację internetową w celu ponownego odszyfrowania ruchu.
  • Zapora aplikacji internetowej to funkcja usługi Application Gateway. Włączenie zapory aplikacji internetowej w bramie aplikacji dodatkowo zwiększa bezpieczeństwo. Zapora aplikacji internetowej używa reguł Open Worldwide Application Security Project (OWASP), aby chronić aplikację internetową przed atakami, takimi jak wykonywanie skryptów między witrynami, przejęcia sesji i wstrzyknięcie kodu SQL.
  • Usługa Azure SQL Database została wybrana, ponieważ większość danych w tej aplikacji jest danymi relacyjnymi, a niektóre dane są dokumentami i obiektami blob.
  • Sieć platformy Azure zapewnia różne możliwości sieciowe na platformie Azure, a sieci mogą być równorzędne z innymi sieciami wirtualnymi na platformie Azure. Połączenia można również ustanowić z lokalnymi centrami danych za pośrednictwem usługi ExpressRoute lub lokacja-lokacja. W takim przypadku punkt końcowy usługi jest włączony w sieci wirtualnej, aby upewnić się, że dane przepływają tylko między siecią wirtualną platformy Azure a wystąpieniem usługi SQL Database.
  • Usługa Azure DevOps ułatwia zespołom współpracę podczas przebiegów, korzystanie z funkcji obsługujących programowanie Agile oraz tworzenie potoków kompilacji i wydań.
  • Utworzono maszynę wirtualną kompilacji platformy Azure, aby zainstalowany agent mógł ściągnąć odpowiednią kompilację i wdrożyć aplikację internetową w środowisku.

Alternatywy

Środowisko App Service Environment może uruchamiać regularne aplikacje internetowe w systemie Windows lub, jak w tym przykładzie, aplikacje internetowe wdrożone w środowisku, które są uruchomione jako kontenery systemu Linux. Środowisko App Service Environment zostało wybrane do hostowania tych aplikacji konteneryzowanych z jednym wystąpieniem. Dostępne są alternatywy — zapoznaj się z poniższymi zagadnieniami podczas projektowania rozwiązania.

  • Azure Service Fabric: jeśli środowisko jest głównie oparte na systemie Windows, a obciążenia są oparte głównie na programie .NET Framework i nie rozważasz zmiany architektury na platformie .NET Core, użyj usługi Service Fabric do obsługi i wdrażania kontenerów systemu Windows Server. Ponadto usługa Service Fabric obsługuje interfejsy API programowania w języku C# lub Java oraz do tworzenia natywnych mikrousług klastry można aprowizować w systemie Windows lub Linux.
  • Usługa Azure Kubernetes Service (AKS) to projekt typu open source i platforma aranżacji bardziej odpowiednia do hostowania złożonych aplikacji wielokontenerowych, które zwykle korzystają z architektury opartej na mikrousługach. Usługa AKS to zarządzana usługa platformy Azure, która oddziela złożoność aprowizacji i konfigurowania klastra Kubernetes. Jednak znacząca wiedza na temat platformy Kubernetes jest wymagana do jej obsługi i obsługi, dlatego hostowanie kilku konteneryzowanych aplikacji internetowych z jednym wystąpieniem może nie być najlepszą opcją.

Inne opcje dla warstwy danych obejmują:

  • Azure Cosmos DB: jeśli większość danych jest w formacie nierelacyjnym, usługa Azure Cosmos DB jest dobrą alternatywą. Ta usługa udostępnia platformę do uruchamiania innych modeli danych, takich jak MongoDB, Cassandra, Dane programu Graph lub prosty magazyn tabel.

Kwestie wymagające rozważenia

Podczas pracy z certyfikatami w środowisku App Service Environment modułu równoważenia obciążenia istnieją pewne kwestie. Należy wygenerować certyfikat, który jest w łańcuchu do zaufanego katalogu głównego bez konieczności żądania podpisania certyfikatu wygenerowanego przez serwer, na którym certyfikat zostanie ostatecznie zapisany. Na przykład w przypadku usług Internet Information Services (IIS) pierwszym krokiem jest wygenerowanie żądania podpisania certyfikatu (CSR) z serwera usług IIS, a następnie wysłanie go do urzędu wystawiającego certyfikaty SSL.

Nie można wydać csr z wewnętrznego modułu równoważenia obciążenia (ILB) środowiska App Service Environment. Sposobem obsługi tego ograniczenia jest użycie procedury wieloznacznych.

Procedura symboli wieloznacznych umożliwia użycie dowodu własności nazw DNS zamiast csr. Jeśli jesteś właścicielem przestrzeni nazw DNS, możesz umieścić w specjalnym rekordzie TXT DNS, procedura wieloznaczny sprawdza, czy rekord jest tam, i jeśli zostanie znaleziony, wie, że jesteś właścicielem serwera DNS, ponieważ masz odpowiedni rekord. Na podstawie tych informacji wystawia certyfikat zarejestrowany w zaufanym katalogu głównym, który można następnie przekazać do modułu równoważenia obciążenia. Nie musisz nic robić z poszczególnymi magazynami certyfikatów w usłudze Web Apps, ponieważ masz zaufany główny certyfikat SSL w wewnętrznym modułie równoważenia obciążenia.

Utwórz certyfikat SSL z podpisem własnym lub wystawiony wewnętrznie, jeśli chcesz wykonywać bezpieczne wywołania między usługami uruchomionymi w środowisku App Service Environment wewnętrznego modułu równoważenia obciążenia. Innym rozwiązaniem, które należy wziąć pod uwagę , jak sprawić, aby środowisko App Service Environment wewnętrznego modułu równoważenia obciążenia współdziałało z certyfikatem SSL i jak załadować wewnętrzny urząd certyfikacji do zaufanego magazynu głównego.

Podczas aprowizowania środowiska App Service Environment należy wziąć pod uwagę następujące ograniczenia podczas wybierania nazwy domeny dla środowiska. Nazwy domen nie mogą być następujące:

  • net
  • azurewebsites.net
  • p.azurewebsites.net
  • nameofthease.p.azurewebsites.net

Ponadto niestandardowa nazwa domeny używana dla aplikacji i nazwa domeny używana przez środowisko App Service Environment modułu równoważenia obciążenia nie może nakładać się na siebie. W przypadku środowiska App Service Environment z wewnętrznym modułem równoważenia obciążenia z nazwą domeny contoso.com nie można używać niestandardowych nazw domen dla aplikacji, takich jak:

  • www.contoso.com
  • abcd.def.contoso.com
  • abcd.contoso.com

Wybierz domenę dla środowiska App Service Environment wewnętrznym modułu równoważenia obciążenia, które nie będzie powodować konfliktu z tymi niestandardowymi nazwami domen. W tym przykładzie można użyć czegoś takiego jak contoso-internal.com dla domeny środowiska, ponieważ nie spowoduje to konfliktu z niestandardowymi nazwami domen kończącymi się na contoso.com.

Innym punktem do rozważenia jest DNS. Aby umożliwić aplikacjom w środowisku App Service Environment komunikowanie się ze sobą, na przykład aplikacji internetowej w celu komunikowania się z interfejsem API, należy skonfigurować system DNS dla sieci wirtualnej zawierającej środowisko. Możesz przenieść własny system DNS lub użyć stref prywatnych usługi Azure DNS.

Dostępność

  • Rozważ zastosowanie typowych wzorców projektowych pod kątem dostępności podczas kompilowania aplikacji w chmurze.
  • Zapoznaj się z zagadnieniami dotyczącymi dostępności w odpowiedniej architekturze referencyjnej aplikacji internetowej usługi App Service.
  • Aby zapoznać się z innymi zagadnieniami dotyczącymi dostępności, zobacz listę kontrolną dostępności w Centrum architektury platformy Azure.

Skalowalność

  • Dowiedz się, jak działa skalowanie w środowiskach App Service Environment.
  • Zapoznaj się z najlepszymi rozwiązaniami dotyczącymi automatycznego skalowania aplikacji w chmurze.
  • Podczas tworzenia aplikacji w chmurze należy pamiętać o typowych wzorcach projektowych na potrzeby skalowalności.
  • Zapoznaj się z zagadnieniami dotyczącymi skalowalności w odpowiedniej architekturze referencyjnej aplikacji internetowej usługi App Service.
  • Aby zapoznać się z innymi artykułami dotyczącymi skalowalności, zobacz listę kontrolną wydajności dostępną w Centrum architektury platformy Azure.

Zabezpieczenia

  • Zapoznaj się z omówieniem filaru zabezpieczeń.
  • Zapoznaj się z zagadnieniami dotyczącymi zabezpieczeń w odpowiedniej architekturze referencyjnej aplikacji internetowej usługi App Service.
  • Rozważ wykonanie bezpiecznego procesu cyklu życia programowania , aby ułatwić deweloperom tworzenie bezpieczniejszego oprogramowania i spełnianie wymagań dotyczących zgodności z zabezpieczeniami przy jednoczesnym zmniejszeniu kosztów programowania.
  • Zapoznaj się z architekturą strategii pod kątem zgodności ze standardem PCI DSS platformy Azure.
  • Usługa Azure DDoS Protection w połączeniu z najlepszymi rozwiązaniami dotyczącymi projektowania aplikacji zapewnia ulepszone funkcje ograniczania ryzyka ataków DDoS w celu zapewnienia większej ochrony przed atakami DDoS. Należy włączyć usługę Azure DDoS Protection w dowolnej sieci wirtualnej obwodowej.

Odporność

Wdrażanie tego scenariusza

Aby wdrożyć ten scenariusz, wykonaj czynności opisane w tym samouczku krok po kroku pokazującym, jak ręcznie wdrożyć każdy składnik. Wybierz pozycję App Service Environment w wersji 3 zamiast 2, korzystając z samouczka. Ten samouczek zawiera również przykładową aplikację platformy .NET, która uruchamia prostą aplikację do raportowania wydatków firmy Contoso.

Cennik

Zapoznaj się z kosztem działania tego scenariusza. Wszystkie usługi są wstępnie skonfigurowane w kalkulatorze kosztów. Aby zobaczyć, jak ceny zmienią się dla konkretnego przypadku użycia, zmień odpowiednie zmienne, aby odpowiadały oczekiwanemu ruchowi.

Udostępniliśmy trzy przykładowe profile kosztów na podstawie oczekiwanego ruchu:

  • Mały: w tym przykładzie cenowym przedstawiono składniki niezbędne dla wystąpienia minimalnego poziomu produkcyjnego obsługującego kilka tysięcy użytkowników miesięcznie. Aplikacja używa pojedynczego wystąpienia standardowej aplikacji internetowej, która będzie wystarczająca, aby umożliwić skalowanie automatyczne. Każdy z pozostałych składników jest skalowany do warstwy Podstawowa, która minimalizuje koszty, ale nadal zapewnia obsługę umowy dotyczącej poziomu usług (SLA) i wystarczającą pojemność do obsługi obciążenia na poziomie produkcyjnym.
  • Średni: w tym przykładzie cenowym przedstawiono składniki wymagane do wdrożenia o umiarkowanym rozmiarze. W tym miejscu szacujemy około 100 000 użytkowników w ciągu miesiąca. Oczekiwany ruch jest obsługiwany w jednym wystąpieniu usługi App Service z umiarkowaną warstwą Standardowa. Ponadto do kalkulatora są dodawane umiarkowane warstwy usług poznawczych i wyszukiwania.
  • Duży: ten przykład cenowy reprezentuje aplikację przeznaczoną dla dużej skali, w kolejności milionów użytkowników miesięcznie, przenosząc terabajty danych. Na tym poziomie użycia wymagane są aplikacje internetowe w warstwie Premium wdrożone w wielu regionach z przodu przez usługę Traffic Manager. Dane składają się z następujących składników: magazyn, bazy danych i sieć CDN, wszystkie skonfigurowane dla terabajtów danych.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główny autor:

  • Faisal Mustafa | Starszy inżynier klienta

Następne kroki