Implementace vrstvené architektury zabezpečení pomocí služby App Service Environment

Důležité

Tento článek se týká služby App Service Environment v1. Služba App Service Environment v1 bude vyřazena 31. srpna 2024. Existuje nová verze služby App Service Environment, která se snadněji používá a běží na výkonnější infrastruktuře. Další informace o nové verzi najdete v úvodu do služby App Service Environment. Pokud aktuálně používáte App Service Environment v1, postupujte podle kroků v tomto článku a proveďte migraci na novou verzi.

Od 29. ledna 2024 už nemůžete vytvářet nové prostředky služby App Service Environment verze 1 pomocí žádné z dostupných metod, včetně šablon ARM/Bicep, webu Azure Portal, Azure CLI nebo rozhraní REST API. Před 31. srpnem 2024 musíte migrovat do služby App Service Environment v3 , abyste zabránili odstranění prostředků a ztrátě dat.

Vzhledem k tomu, že služba App Service Environment poskytuje izolované běhové prostředí nasazené do virtuální sítě, můžou vývojáři vytvořit vrstvenou architekturu zabezpečení poskytující různé úrovně síťového přístupu pro každou fyzickou aplikační vrstvu.

Běžnou tíhou je skrýt back-endy rozhraní API před obecným přístupem k internetu a povolit volání rozhraní API pouze upstreamovými webovými aplikacemi. Skupiny zabezpečení sítě (NSG) je možné použít v podsítích obsahujících službu App Service Environment k omezení veřejného přístupu k aplikacím API.

Následující diagram znázorňuje ukázkovou architekturu s aplikací založenou na webAPI nasazenou ve službě App Service Environment. Tři samostatné instance webových aplikací nasazené ve třech samostatných prostředích App Service Environment umožňují volání back-endu do stejné aplikace WebAPI.

Conceptual Architecture

Zelené znaménko plus označuje, že skupina zabezpečení sítě v podsíti obsahující "apiase" umožňuje příchozí volání z upstreamových webových aplikací a také volání ze samotného. Stejná skupina zabezpečení sítě však explicitně odmítne přístup k obecnému příchozímu provozu z internetu.

Zbývající část tohoto článku vás provede kroky potřebnými ke konfiguraci skupiny zabezpečení sítě v podsíti obsahující "apiase".

Určení chování sítě

Abyste věděli, jaká pravidla zabezpečení sítě jsou potřeba, musíte určit, kteří síťová klienti budou mít povolený přístup ke službě App Service Environment obsahující aplikaci API a kteří klienti budou blokovaní.

Vzhledem k tomu, že skupiny zabezpečení sítě (NSG) se použijí na podsítě a služba App Service Environment se nasadí do podsítí, pravidla obsažená ve skupině zabezpečení sítě se vztahují na všechny aplikace spuštěné ve službě App Service Environment. Když použijete ukázkovou architekturu pro tento článek, po použití skupiny zabezpečení sítě na podsíť obsahující "apiase", budou všechny aplikace spuštěné v prostředí App Service Environment "apiase" chráněny stejnou sadou pravidel zabezpečení.

  • Určení odchozí IP adresy upstreamových volajících: Jaká je IP adresa nebo adresy upstreamových volajících? Tyto adresy musí být explicitně povolen přístup ve skupině zabezpečení sítě. Vzhledem k tomu, že volání mezi službami App Service Environment se považují za "internetová" volání, musí být odchozí IP adresa přiřazená ke každé ze tří nadřazených prostředí App Service Environment povolený přístup v NSG pro podsíť "apiase". Další informace o určení odchozí IP adresy pro aplikace spuštěné ve službě App Service Environment najdete v článku Přehled architektury sítě.
  • Bude se muset back-endová aplikace API volat sama sobě? Někdy je přehlédnutelný a jemný bod scénáře, kdy se back-endová aplikace musí volat sama. Pokud back-endová aplikace api ve službě App Service Environment potřebuje volat sama sebe, považuje se také za volání "internet". V ukázkové architektuře to vyžaduje také povolení přístupu z odchozí IP adresy služby App Service Environment "apiase".

Nastavení skupiny zabezpečení sítě

Jakmile je známa sada odchozích IP adres, dalším krokem je vytvoření skupiny zabezpečení sítě. Skupiny zabezpečení sítě je možné vytvořit pro virtuální sítě založené na Resource Manageru i pro klasické virtuální sítě. Následující příklady ukazují vytvoření a konfiguraci skupiny zabezpečení sítě v klasické virtuální síti pomocí PowerShellu.

Pro ukázkovou architekturu se prostředí nacházejí v oblasti USA – středojiž, takže se v této oblasti vytvoří prázdná skupina zabezpečení sítě:

New-AzureNetworkSecurityGroup -Name "RestrictBackendApi" -Location "South Central US" 
-Label "Only allow web frontend and loopback traffic"

Nejprve se přidá explicitní pravidlo povolení pro infrastrukturu pro správu Azure, jak je uvedeno v článku o příchozím provozu ve službě 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

Dále se přidají dvě pravidla, která povolí volání HTTP a HTTPS z prvního upstreamového služby 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

Proplachujte a opakujte pro druhou a třetí upstreamovou službu App Service Environment ("fe2ase" a "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

Nakonec udělte přístup k odchozí IP adrese služby App Service Environment back-endového rozhraní API, aby mohl volat zpět do sebe.

#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

Nejsou vyžadována žádná další pravidla zabezpečení sítě, protože každá skupina zabezpečení sítě má ve výchozím nastavení sadu výchozích pravidel, která blokují příchozí přístup z internetu.

Úplný seznam pravidel ve skupině zabezpečení sítě najdete níže. Všimněte si, že poslední pravidlo, které je zvýrazněné, blokuje příchozí přístup ze všech volajících, kromě volajících, kteří mají explicitně udělený přístup.

NSG Configuration

Posledním krokem je použití skupiny zabezpečení sítě na podsíť, která obsahuje službu App Service Environment "apiase".

#Apply the NSG to the backend API subnet
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityGroupToSubnet 
-VirtualNetworkName 'yourvnetnamehere' -SubnetName 'API-ASE-Subnet'

Když je skupina zabezpečení sítě použitá pro podsíť, můžou se do prostředí apiase volat pouze tři upstreamová prostředí App Service Environment a služba App Service Environment obsahující back-end rozhraní API.

Informace o skupinách zabezpečení sítě

Vysvětlení odchozích IP adres a prostředí App Service Environment

Síťové porty používané službou App Service Environment

Poznámka:

Pokud chcete začít používat službu Azure App Service před registrací k účtu Azure, přejděte k možnosti Vyzkoušet službu App Service, kde můžete okamžitě vytvořit krátkodobou úvodní webovou aplikaci. Není vyžadována platební karta a nevzniká žádný závazek.