Een gelaagde beveiligingsarchitectuur implementeren met App Service-omgevingen
Belangrijk
Dit artikel gaat over App Service Environment v1. App Service Environment v1 en v2 worden vanaf 31 augustus 2024 buiten gebruik gesteld. Er is een nieuwe versie van App Service Environment die eenvoudiger te gebruiken is en wordt uitgevoerd op een krachtigere infrastructuur. Voor meer informatie over de nieuwe versie begint u met de inleiding tot de App Service-omgeving. Als u momenteel App Service Environment v1 gebruikt, volgt u de stappen in dit artikel om te migreren naar de nieuwe versie.
Vanaf 31 augustus 2024 zijn Service Level Agreement (SLA) en servicetegoeden niet langer van toepassing op App Service Environment v1- en v2-workloads die in productie blijven omdat ze buiten gebruik worden gesteld. Het buiten gebruik stellen van de App Service Environment v1- en v2-hardware is gestart. Dit kan van invloed zijn op de beschikbaarheid en prestaties van uw apps en gegevens.
U moet de migratie naar App Service Environment v3 onmiddellijk voltooien of uw apps en resources kunnen worden verwijderd. We proberen alle resterende App Service Environment v1 en v2 automatisch te migreren met behulp van de in-place migratiefunctie, maar Microsoft maakt geen claim of garanties over de beschikbaarheid van toepassingen na automatische migratie. Mogelijk moet u handmatige configuratie uitvoeren om de migratie te voltooien en de SKU-keuze van uw App Service-plan te optimaliseren om aan uw behoeften te voldoen. Als automatische migratie niet haalbaar is, worden uw resources en bijbehorende app-gegevens verwijderd. We dringen er ten zeerste op aan dat u nu actie moet ondernemen om een van deze extreme scenario's te voorkomen.
Als u extra tijd nodig hebt, kunnen we een eenmalige respijtperiode van 30 dagen aanbieden om uw migratie te voltooien. Raadpleeg het overzicht van de respijtperiode voor meer informatie en om deze respijtperiode aan te vragen. Ga vervolgens naar Azure Portal en ga naar de blade Migratie voor elk van uw App Service-omgevingen.
Zie de buitengebruikstelling van App Service Environment v1/v2 voor de meest recente informatie over de buitengebruikstelling van App Service Environment v1 en v2.
Omdat App Service Environments een geïsoleerde runtime-omgeving bieden die is geïmplementeerd in een virtueel netwerk, kunnen ontwikkelaars een gelaagde beveiligingsarchitectuur maken die verschillende netwerktoegangsniveaus biedt voor elke fysieke toepassingslaag.
Een veelvoorkomende wens is om API-back-ends te verbergen voor algemene internettoegang en alleen API's toe te staan die worden aangeroepen door upstream-web-apps. Netwerkbeveiligingsgroepen (NSG's) kunnen worden gebruikt op subnetten met App Service Environments om openbare toegang tot API-toepassingen te beperken.
In het onderstaande diagram ziet u een voorbeeldarchitectuur met een webAPI-app die is geïmplementeerd in een App Service-omgeving. Drie afzonderlijke web-app-exemplaren, geïmplementeerd in drie afzonderlijke App Service-omgevingen, voeren back-end-aanroepen uit naar dezelfde WebAPI-app.
De groene plustekens geven aan dat de netwerkbeveiligingsgroep in het subnet met 'apiase' binnenkomende aanroepen van de upstream-web-apps en aanroepen vanaf zichzelf toestaat. Dezelfde netwerkbeveiligingsgroep weigert echter expliciet de toegang tot algemeen binnenkomend verkeer vanaf internet.
In de rest van dit artikel worden de stappen beschreven die nodig zijn voor het configureren van de netwerkbeveiligingsgroep in het subnet met 'apiase'.
Het netwerkgedrag bepalen
Als u wilt weten welke netwerkbeveiligingsregels nodig zijn, moet u bepalen welke netwerkclients de App Service Environment met de API-app mogen bereiken en welke clients worden geblokkeerd.
Omdat netwerkbeveiligingsgroepen (NSG's) worden toegepast op subnetten en App Service-omgevingen worden geïmplementeerd in subnetten, zijn de regels in een NSG van toepassing op alle apps die worden uitgevoerd in een App Service Environment. Wanneer de voorbeeldarchitectuur voor dit artikel wordt gebruikt, wordt, zodra een netwerkbeveiligingsgroep is toegepast op het subnet met 'apiase', alle apps die worden uitgevoerd in de App Service Environment apiase, beveiligd door dezelfde set beveiligingsregels.
- Bepaal het uitgaande IP-adres van upstream-bellers: Wat is het IP-adres of de adressen van de upstream-bellers? Deze adressen moeten expliciet toegang hebben in de NSG. Omdat aanroepen tussen App Service Environments worden beschouwd als 'internet'-aanroepen, moet het uitgaande IP-adres dat is toegewezen aan elk van de drie upstream App Service-omgevingen, toegang krijgen in de NSG voor het subnet 'apiase'. Zie het artikel Overzicht van netwerkarchitectuur voor meer informatie over het bepalen van het uitgaande IP-adres voor apps die worden uitgevoerd in een App Service-omgeving.
- Moet de back-end-API-app zichzelf aanroepen? Een soms over het hoofd gezien en subtiel punt is het scenario waarin de back-endtoepassing zichzelf moet aanroepen. Als een back-end-API-toepassing in een App Service Environment zichzelf moet aanroepen, wordt deze ook behandeld als een internetaanroep. In de voorbeeldarchitectuur moet hiervoor ook toegang worden toegestaan vanuit het uitgaande IP-adres van de App Service Environment 'apiase'.
De netwerkbeveiligingsgroep instellen
Zodra de set uitgaande IP-adressen bekend is, bestaat de volgende stap uit het maken van een netwerkbeveiligingsgroep. Netwerkbeveiligingsgroepen kunnen worden gemaakt voor virtuele netwerken op basis van Resource Manager en klassieke virtuele netwerken. In de volgende voorbeelden ziet u hoe u een NSG maakt en configureert in een klassiek virtueel netwerk met behulp van PowerShell.
Voor de voorbeeldarchitectuur bevinden de omgevingen zich in VS - zuid-centraal, dus er wordt een lege NSG gemaakt in die regio:
New-AzureNetworkSecurityGroup -Name "RestrictBackendApi" -Location "South Central US"
-Label "Only allow web frontend and loopback traffic"
Eerst wordt er een expliciete regel voor toestaan toegevoegd voor de Azure-beheerinfrastructuur, zoals vermeld in het artikel over inkomend verkeer voor App Service Environments.
#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
Vervolgens worden er twee regels toegevoegd om HTTP- en HTTPS-aanroepen toe te staan vanuit de eerste upstream 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
Spoel en herhaal deze voor de tweede en derde upstream App Service Environments ('fe2ase' en '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
Tot slot verleent u toegang tot het uitgaande IP-adres van de App Service Environment van de back-end-API, zodat deze weer in zichzelf kan worden aangeroepen.
#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
Er zijn geen andere netwerkbeveiligingsregels vereist, omdat elke NSG standaard een set standaardregels heeft waarmee binnenkomende toegang van internet wordt geblokkeerd.
De volledige lijst met regels in de netwerkbeveiligingsgroep wordt weergegeven. Let op hoe de laatste regel, die is gemarkeerd, binnenkomende toegang blokkeert van alle bellers, behalve bellers die expliciet toegang krijgen.
De laatste stap is het toepassen van de NSG op het subnet dat de 'apiase' App Service Environment bevat.
#Apply the NSG to the backend API subnet
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityGroupToSubnet
-VirtualNetworkName 'yourvnetnamehere' -SubnetName 'API-ASE-Subnet'
Nu de NSG is toegepast op het subnet, mogen alleen de drie upstream App Service-omgevingen en de App Service-omgeving die de API-back-end bevat, worden aangeroepen in de apiase-omgeving.
Extra koppelingen en informatie
Informatie over netwerkbeveiligingsgroepen.
Informatie over uitgaande IP-adressen en App Service-omgevingen.
Netwerkpoorten die worden gebruikt door App Service Environments.
Notitie
Als u aan de slag wilt met Azure App Service voordat u zich aanmeldt voor een Azure-account, gaat u naar App Service uitproberen. Hier kunt u direct een tijdelijke web-app maken in App Service. U hebt geen creditcard nodig en u gaat geen verplichtingen aan.