Implementowanie architektury zabezpieczeń warstwowych za pomocą środowisk App Service Environment
Ważne
Ten artykuł dotyczy środowiska App Service Environment w wersji 1. Środowisko App Service Environment w wersji 1 i v2 jest wycofyzowane od 31 sierpnia 2024 r. Jest dostępna nowa wersja środowiska App Service Environment, która jest łatwiejsza do użycia i działa w bardziej wydajnej infrastrukturze. Aby dowiedzieć się więcej o nowej wersji, zacznij od wprowadzenia do środowiska App Service Environment. Jeśli obecnie używasz środowiska App Service Environment w wersji 1, wykonaj kroki opisane w tym artykule , aby przeprowadzić migrację do nowej wersji.
Od 31 sierpnia 2024 r. umowa dotycząca poziomu usług (SLA) i środki na usługi nie mają już zastosowania do obciążeń środowiska App Service Environment w wersji 1 i w wersji 2, które nadal znajdują się w środowisku produkcyjnym, ponieważ są wycofane produkty. Rozpoczęto likwidowanie sprzętu środowiska App Service Environment w wersji 1 i 2. Może to mieć wpływ na dostępność i wydajność aplikacji i danych.
Musisz natychmiast ukończyć migrację do środowiska App Service Environment w wersji 3 lub usunąć aplikacje i zasoby. Podejmiemy próbę automatycznej migracji wszystkich pozostałych środowisk App Service Environment w wersji 1 i 2 w oparciu o najlepsze rozwiązanie przy użyciu funkcji migracji w miejscu, ale firma Microsoft nie udziela żadnych oświadczeń ani gwarancji dotyczących dostępności aplikacji po migracji automatycznej. Może być konieczne wykonanie ręcznej konfiguracji w celu ukończenia migracji i zoptymalizowania wybranej jednostki SKU planu usługi App Service w celu spełnienia Twoich potrzeb. Jeśli automatyczna migracja nie jest wykonalna, zasoby i skojarzone dane aplikacji zostaną usunięte. Zdecydowanie zachęcamy do podjęcia działań, aby uniknąć jednego z tych ekstremalnych scenariuszy.
Jeśli potrzebujesz dodatkowego czasu, możemy zaoferować jednorazowy 30-dniowy okres prolongaty umożliwiający ukończenie migracji. Aby uzyskać więcej informacji i zażądać tego okresu prolongaty, zapoznaj się z omówieniem okresu prolongaty, a następnie przejdź do witryny Azure Portal i odwiedź blok Migracja dla każdego środowiska App Service Environment.
Aby uzyskać najbardziej aktualne informacje na temat wycofania środowiska App Service Environment w wersji 1/2, zobacz aktualizację wycofania środowiska App Service Environment w wersji 1 i 2.
Ponieważ środowiska App Service Environment zapewniają izolowane środowisko uruchomieniowe wdrożone w sieci wirtualnej, deweloperzy mogą utworzyć architekturę zabezpieczeń warstwową zapewniającą różne poziomy dostępu sieciowego dla każdej warstwy aplikacji fizycznej.
Typowym pragnieniem jest ukrycie zapleczy interfejsu API przed ogólnym dostępem do Internetu i zezwolenie tylko na wywoływanie interfejsów API przez nadrzędne aplikacje internetowe. Sieciowe grupy zabezpieczeń mogą być używane w podsieciach zawierających środowiska App Service Environment w celu ograniczenia publicznego dostępu do aplikacji interfejsu API.
Na poniższym diagramie przedstawiono przykładową architekturę z aplikacją opartą na interfejsie WebAPI wdrożonym w środowisku App Service Environment. Trzy oddzielne wystąpienia aplikacji internetowej, wdrożone w trzech oddzielnych środowiskach App Service Environment, tworzą wywołania zaplecza do tej samej aplikacji WebAPI.
Zielony znak plus wskazuje, że sieciowa grupa zabezpieczeń w podsieci zawierającej "apiase" zezwala na wywołania przychodzące z nadrzędnych aplikacji internetowych, a także wywołania z samego siebie. Jednak ta sama sieciowa grupa zabezpieczeń jawnie odmawia dostępu do ogólnego ruchu przychodzącego z Internetu.
W pozostałej części tego artykułu przedstawiono kroki niezbędne do skonfigurowania sieciowej grupy zabezpieczeń w podsieci zawierającej "apiase".
Określanie zachowania sieci
Aby dowiedzieć się, jakie reguły zabezpieczeń sieci są potrzebne, należy określić, którzy klienci sieciowi będą mogli uzyskać dostęp do środowiska App Service Environment zawierającego aplikację interfejsu API i którzy klienci są blokowani.
Ponieważ sieciowe grupy zabezpieczeń są stosowane do podsieci, a środowiska App Service Environment są wdrażane w podsieciach, reguły zawarte w sieciowej grupie zabezpieczeń mają zastosowanie do wszystkich aplikacji uruchomionych w środowisku App Service Environment. Korzystając z przykładowej architektury tego artykułu, po zastosowaniu sieciowej grupy zabezpieczeń do podsieci zawierającej "apiase", wszystkie aplikacje uruchomione w środowisku App Service Environment "apiase" będą chronione przez ten sam zestaw reguł zabezpieczeń.
- Ustal wychodzący adres IP nadrzędnych wywołujących: jaki jest adres IP lub adresy nadrzędnych osób wywołujących? Te adresy muszą być jawnie dozwolone w sieciowej grupie zabezpieczeń. Ponieważ wywołania między środowiskami App Service Environment są uznawane za wywołania "Internetowe", wychodzący adres IP przypisany do każdego z trzech nadrzędnych środowisk App Service Environment musi mieć dozwolony dostęp w sieciowej grupie zabezpieczeń dla podsieci "apiase". Aby uzyskać więcej informacji na temat określania wychodzącego adresu IP dla aplikacji działających w środowisku App Service Environment, zobacz artykuł Omówienie architektury sieci.
- Czy aplikacja interfejsu API zaplecza będzie musiała wywoływać się samodzielnie? Czasami pomijany i subtelny punkt to scenariusz, w którym aplikacja zaplecza musi wywołać samą siebie. Jeśli aplikacja interfejsu API zaplecza w środowisku App Service Environment musi wywołać siebie, jest również traktowana jako wywołanie "Internet". W przykładowej architekturze wymaga to również zezwolenia na dostęp z wychodzącego adresu IP środowiska App Service Environment "apiase".
Konfigurowanie sieciowej grupy zabezpieczeń
Po zdaniu zestawu wychodzących adresów IP następnym krokiem jest utworzenie sieciowej grupy zabezpieczeń. Sieciowe grupy zabezpieczeń można tworzyć zarówno dla sieci wirtualnych opartych na usłudze Resource Manager, jak i klasycznych sieciach wirtualnych. W poniższych przykładach pokazano tworzenie i konfigurowanie sieciowej grupy zabezpieczeń w klasycznej sieci wirtualnej przy użyciu programu PowerShell.
W przypadku przykładowej architektury środowiska znajdują się w południowo-środkowych stanach USA, więc w tym regionie jest tworzona pusta sieciowa grupa zabezpieczeń:
New-AzureNetworkSecurityGroup -Name "RestrictBackendApi" -Location "South Central US"
-Label "Only allow web frontend and loopback traffic"
Najpierw dodano jawną regułę zezwalania dla infrastruktury zarządzania platformy Azure, jak wspomniano w artykule dotyczącym ruchu przychodzącego dla środowisk App Service Environment.
#Open ports for access by Azure management infrastructure
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW AzureMngmt"
-Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '454-455' -Protocol TCP
Następnie dodano dwie reguły zezwalania na wywołania HTTP i HTTPS z pierwszego nadrzędnego środowiska App Service Environment ("fe1ase").
#Grant access to requests from the first upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe1ase"
-Type Inbound -Priority 200 -Action Allow -SourceAddressPrefix '65.52.xx.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe1ase"
-Type Inbound -Priority 300 -Action Allow -SourceAddressPrefix '65.52.xx.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
Wypłukać i powtarzać dla drugiego i trzeciego nadrzędnego środowiska App Service Environment ("fe2ase" i "fe3ase").
#Grant access to requests from the second upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe2ase"
-Type Inbound -Priority 400 -Action Allow -SourceAddressPrefix '191.238.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe2ase"
-Type Inbound -Priority 500 -Action Allow -SourceAddressPrefix '191.238.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
#Grant access to requests from the third upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe3ase"
-Type Inbound -Priority 600 -Action Allow -SourceAddressPrefix '23.98.abc.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe3ase"
-Type Inbound -Priority 700 -Action Allow -SourceAddressPrefix '23.98.abc.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
Na koniec przyznaj dostęp do wychodzącego adresu IP środowiska App Service Environment interfejsu API zaplecza, aby można było wywołać go z powrotem do samego siebie.
#Allow apps on the apiase environment to call back into itself
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP apiase"
-Type Inbound -Priority 800 -Action Allow -SourceAddressPrefix '70.37.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS apiase"
-Type Inbound -Priority 900 -Action Allow -SourceAddressPrefix '70.37.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
Nie są wymagane żadne inne reguły zabezpieczeń sieci, ponieważ każda sieciowa grupa zabezpieczeń ma zestaw domyślnych reguł, które domyślnie blokują dostęp przychodzący z Internetu.
Zostanie wyświetlona pełna lista reguł w sieciowej grupie zabezpieczeń. Zwróć uwagę, że ostatnia reguła, która jest wyróżniona, blokuje dostęp przychodzący ze wszystkich osób wywołujących, innych niż osoby wywołujące, którym jawnie udzielono dostępu.
Ostatnim krokiem jest zastosowanie sieciowej grupy zabezpieczeń do podsieci zawierającej środowisko App Service Environment "apiase".
#Apply the NSG to the backend API subnet
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityGroupToSubnet
-VirtualNetworkName 'yourvnetnamehere' -SubnetName 'API-ASE-Subnet'
Po zastosowaniu sieciowej grupy zabezpieczeń do podsieci tylko trzy nadrzędne środowiska App Service Environment i środowisko App Service Environment zawierające zaplecze interfejsu API mogą wywoływać środowisko "apiase".
Dodatkowe linki i informacje
Informacje o sieciowych grupach zabezpieczeń.
Opis wychodzących adresów IP i środowisk App Service Environment.
Porty sieciowe używane przez środowiska App Service Environment.
Uwaga
Jeśli chcesz rozpocząć pracę z usługą Azure App Service przed utworzeniem nowego konta Azure, przejdź do strony Wypróbuj usługę App Service, na której możesz od razu utworzyć startową tymczasową aplikację internetową przy użyciu usługi App Service. Bez kart kredytowych i bez zobowiązań.