Rétegzett biztonsági architektúra implementálása App Service-környezetekkel

Fontos

Ez a cikk az App Service Environment 1-ről szól. Az App Service Environment 1-et 2024. augusztus 31-én kivonjuk. Az App Service Environment új verziója egyszerűbben használható és hatékonyabb infrastruktúrán futtatható. Az új verzióról az App Service-környezet bemutatása című cikkből tudhat meg többet. Ha jelenleg az App Service Environment 1-es verzióját használja, kövesse a cikkben leírt lépéseket az új verzióra való migráláshoz.

2024. január 29-étől már nem hozhat létre új App Service Environment v1-erőforrásokat az elérhető módszerek , például ARM/Bicep-sablonok, Azure Portal, Azure CLI vagy REST API használatával. 2024. augusztus 31-ig át kell telepítenie az App Service Environment v3-ra az erőforrás törlésének és adatvesztésének megakadályozása érdekében.

Mivel az App Service-környezetek egy virtuális hálózaton üzembe helyezett elkülönített futtatókörnyezetet biztosítanak, a fejlesztők létrehozhatnak egy rétegzett biztonsági architektúrát, amely különböző szintű hálózati hozzáférést biztosít az egyes fizikai alkalmazásszintekhez.

Gyakori cél, hogy elrejtse az API háttérrendszereit az általános internet-hozzáférés elől, és csak az API-k meghívását engedélyezze a felsőbb rétegbeli webalkalmazások számára. A hálózati biztonsági csoportok (NSG-k) az App Service-környezeteket tartalmazó alhálózatokon használhatók az API-alkalmazásokhoz való nyilvános hozzáférés korlátozására.

Az alábbi ábrán egy példaarchitektúra látható egy App Service-környezetben üzembe helyezett WebAPI-alapú alkalmazással. Három különálló webalkalmazás-példány, három különálló App Service-környezetben üzembe helyezve, háttérhívásokat indít ugyanahhoz a WebAPI-alkalmazáshoz.

Conceptual Architecture

A zöld pluszjelek azt jelzik, hogy az alhálózat "apiase"-t tartalmazó hálózati biztonsági csoportja lehetővé teszi a bejövő hívásokat a felsőbb rétegbeli webalkalmazásokból, valamint önmagából érkező hívásokat. Ugyanez a hálózati biztonsági csoport azonban kifejezetten tagadja az internetről érkező általános bejövő forgalomhoz való hozzáférést.

A cikk további része végigvezeti az "apiase" tartalmú alhálózat hálózati biztonsági csoportjának konfigurálásához szükséges lépéseket.

A hálózati viselkedés meghatározása

Annak érdekében, hogy megtudja, milyen hálózati biztonsági szabályokra van szükség, meg kell határoznia, hogy mely hálózati ügyfelek érhetik el az API-alkalmazást tartalmazó App Service-környezetet, és mely ügyfelek lesznek blokkolva.

Mivel a hálózati biztonsági csoportok (NSG-k) alhálózatokra vannak alkalmazva, és az App Service-környezetek alhálózatokban vannak üzembe helyezve, az NSG-ben található szabályok az App Service-környezetben futó összes alkalmazásra érvényesek. A cikk mintaarchitektúráját használva, miután egy hálózati biztonsági csoportot alkalmaz az "apiase"-t tartalmazó alhálózatra, az "apiase" App Service-környezetben futó összes alkalmazás ugyanazokkal a biztonsági szabályokkal lesz védve.

  • A felsőbb rétegbeli hívók kimenő IP-címének meghatározása: Mi a felsőbb rétegbeli hívók IP-címe vagy címe? Ezeket a címeket explicit módon engedélyezni kell az NSG-ben. Mivel az App Service-környezetek közötti hívások "internetes" hívásoknak minősülnek, a három felsőbb rétegbeli App Service-környezethez rendelt kimenő IP-címet engedélyezni kell az "apiase" alhálózat NSG-jében. Az App Service-környezetben futó alkalmazások kimenő IP-címének meghatározásáról további információt a Hálózati architektúra áttekintése című cikkben talál.
  • Meg kell hívnia magát a háttér API-alkalmazásnak? Néha figyelmen kívül hagyott és finom pont az a forgatókönyv, amikor a háttéralkalmazásnak magát kell meghívnia. Ha egy Háttér API-alkalmazásnak egy App Service-környezetben magát kell meghívnia, az is "internetes" hívásként lesz kezelve. A mintaarchitektúra esetében ehhez engedélyezni kell a hozzáférést az "apiase" App Service Environment kimenő IP-címéről is.

A hálózati biztonsági csoport beállítása

A kimenő IP-címek ismertsége után a következő lépés egy hálózati biztonsági csoport létrehozása. A hálózati biztonsági csoportok a Resource Manager-alapú virtuális hálózatokhoz és a klasszikus virtuális hálózatokhoz is létrehozhatók. Az alábbi példák egy NSG létrehozását és konfigurálását mutatják be egy klasszikus virtuális hálózaton a PowerShell használatával.

A mintaarchitektúra esetében a környezetek az USA déli középső régiójában találhatók, így egy üres NSG jön létre ebben a régióban:

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

Először explicit engedélyezési szabály lesz hozzáadva az Azure felügyeleti infrastruktúrához az App Service-környezetek bejövő forgalmáról szóló cikkben leírtak szerint.

#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

Ezután két szabályt adunk hozzá a HTTP- és HTTPS-hívások engedélyezéséhez az első felsőbb rétegbeli App Service-környezetből ("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

Öblítse le és ismételje meg a második és harmadik felsőbb rétegbeli App Service-környezeteket ("fe2ase" és "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

Végül adjon hozzáférést a háttér API App Service-környezetének kimenő IP-címéhez, hogy visszahívhassa magát.

#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

Nincs szükség más hálózati biztonsági szabályokra, mivel minden NSG alapértelmezett szabályokkal rendelkezik, amelyek alapértelmezés szerint blokkolják az internetről érkező bejövő hozzáférést.

A hálózati biztonsági csoport szabályainak teljes listája alább látható. Figyelje meg, hogy az utolsó kiemelt szabály hogyan blokkolja a bejövő hozzáférést az összes hívótól, kivéve a kifejezetten hozzáférést kapott hívókat.

NSG Configuration

Az utolsó lépés az NSG alkalmazása az "apiase" App Service-környezetet tartalmazó alhálózatra.

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

Az alhálózatra alkalmazott NSG-vel csak a három felsőbb rétegbeli App Service-környezet és az API háttérrendszerét tartalmazó App Service-környezet hívható meg az "apiase" környezetbe.

Információ a hálózati biztonsági csoportokról.

A kimenő IP-címek és az App Service-környezetek ismertetése.

Az App Service-környezetek által használt hálózati portok .

Feljegyzés

Ha nem szeretne regisztrálni Azure-fiókot az Azure App Service megismerése előtt, lépjen Az Azure App Service kipróbálása oldalra, ahol azonnal létrehozhat egy rövid élettartamú alapszintű webalkalmazást az App Service-ben. Ehhez nincs szükség bankkártyára, és nem jár kötelezettségekkel.