Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Veel toepassingen hebben meer dan één onderdeel. U hebt bijvoorbeeld een front-end die openbaar toegankelijk is en verbinding maakt met een back-end-API of web-app. De back-endbronnen kunnen verbinding maken met een database, opslagaccount, sleutelkluis, een andere virtuele machine of een combinatie van deze resources. Deze architectuur vormt de basis van een N-tier-toepassing. Het is belangrijk dat toepassingen zoals deze zijn ontworpen om back-endresources zo veel mogelijk te beveiligen.
In deze zelfstudie wordt beschreven hoe u een beveiligde N-laag-toepassing implementeert met een front-endweb-app die verbinding maakt met een andere netwerk-geïsoleerde web-app. Al het verkeer wordt geïsoleerd binnen uw Azure Virtual Network met behulp van Virtual Network-integratie en private-eindpunten. Zie voor uitgebreidere richtlijnen met andere scenario's:
In deze handleiding leert u:
- Een virtueel netwerk en subnetten maken voor integratie van virtueel App Service-netwerk
- Privé-DNS-zones en privé-eindpunten maken
- Integratie van virtuele netwerken configureren in App Service
- Basisverificatie uitschakelen in App Service
- Continu implementeren in een vergrendelde back-end-web-app
Vereisten
In de zelfstudie worden twee voorbeeld-Node.js-apps gebruikt die worden gehost op GitHub. Als u nog geen GitHub-account hebt, maakt u gratis een account.
Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
Om deze tutorial te voltooien:
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
De scenarioarchitectuur controleren
In deze zelfstudie ziet u hoe u een architectuur configureert die wordt geïllustreerd in het volgende diagram. Het scenario vertegenwoordigt een van de mogelijke N-tier-configuraties in App Service. U kunt de concepten in deze zelfstudie gebruiken om complexere N-tier-apps te bouwen.
De architectuur heeft een virtueel netwerk dat twee subnetten bevat. Eén subnet is geïntegreerd met de front-endweb-app en het andere subnet heeft een privé-eindpunt voor de back-endweb-app. Het virtuele netwerk blokkeert al het binnenkomende netwerkverkeer, met uitzondering van verkeer dat is gericht op de geïntegreerde front-end-app.
Een front-endweb-app is geïntegreerd in het virtuele netwerk en toegankelijk via het openbare internet.
Een back-endweb-app is alleen toegankelijk via het privé-eindpunt in het virtuele netwerk.
Een privé-eindpunt kan worden geïntegreerd met de back-endweb-app en maakt de web-app toegankelijk via een privé-IP-adres.
Met een Privé-DNS zone kunt u een DNS-naam omzetten in het IP-adres van het privé-eindpunt.
Notitie
Als u integratie van virtuele netwerken en privé-eindpunten wilt configureren, hebt u de laag Basic van Azure App Service of een hogere laag nodig. De gratis laag biedt geen ondersteuning voor deze functies.
Het scenario in deze zelfstudie biedt het volgende gedrag:
- Openbaar verkeer naar de back-end-app wordt geblokkeerd.
- Uitgaand verkeer van App Service routeert naar het virtuele netwerk en kan de back-end-app bereiken.
- App Service kan DNS-omzetting uitvoeren naar de back-end-app.
De twee web-apps maken
U hebt twee App Service-web-apps nodig, één voor de front-end en één voor de back-end. De apps kunnen worden uitgevoerd op dezelfde regiolocatie. Gebruik ten minste de laag Basic van Azure App Service om integratie van virtuele netwerken in te stellen en met privé-eindpunten te werken. U configureert de integratie van het virtuele netwerk en andere instellingen later.
Maak een resourcegroep om alle resources voor deze zelfstudie te beheren.
Stel de
<resource-group>plaatsaanduiding in op de naam van uw nieuwe resourcegroep, zoalszava-resources. Stel de<region-location>plaatsaanduiding in op de regio voor uw nieuwe resourcegroep, zoalseastus.# Define variables for the resource group name and region location resourceGroupName=<resource-group> regionLocation=<region-location> # Create the resource group az group create --name $resourceGroupName --location $regionLocationZie de opdrachtreferentie az group create voor meer informatie.
Maak een App Service-plan voor uw resources.
Stel de
<app-service-plan>plaatsaanduiding in op de naam van uw nieuwe App Service-plan, zoalszava-app-service-plan.In het voorbeeld van de zelfstudie wordt de
--skuparameter ingesteld opP1V3(Premium V3). U kunt deze waarde gebruiken of een andere SKU opgeven. De SKU moet de vereiste netwerkfuncties voor deze zelfstudie ondersteunen. Selecteer de Basic-laag of hoger.# Define a variable for the App Service plan name appServicePlanName=<app-service-plan> # Create the App Service plan az appservice plan create --name $appServicePlanName --resource-group $resourceGroupName --is-linux --location $regionLocation --sku P1V3Zie de opdrachtreferentie az appservice plan create voor meer informatie.
Ontwikkel de front-end- en back-end-webapps.
In het zelfstudievoorbeeld worden twee voorbeeld-Node.js-apps gemaakt, waarbij de runtimeversie van de taal
NODE:24-ltsis. Als u liever uw eigen apps gebruikt, stelt u de--runtimeparameterwaarde<language-version>dienovereenkomstig in. U kunt deaz webapp list-runtimesopdracht uitvoeren voor de lijst met beschikbare runtimes:az webapp list-runtimesStel de
<frontend-app-name>placeholder in op de naam van uw nieuwe frontend-webapp, zoalszava-frontend-app. De naam moet globaal uniek zijn en bestaan uit geldige tekens (a-z,0-9,-). Op dezelfde manier stelt u de<backend-app-name>placeholder in op de naam van uw nieuwe backendweb-app, zoalszava-backend-app.# Define variables for the App Service web app names frontendAppName=<frontend-app-name> backendAppName=<backend-app-name> # Create the web apps az webapp create --name $frontendAppName --resource-group $resourceGroupName --plan $appServicePlanName --runtime "NODE:24-lts" az webapp create --name $backendAppName --resource-group $resourceGroupName --plan $appServicePlanName --runtime "NODE:24-lts"Zie de opdrachtreferentie az webapp create voor meer informatie.
De netwerkinfrastructuur maken
De infrastructuur van het virtuele netwerk bestaat uit de volgende resources:
- Een Azure Virtual Network-exemplaar
- Een subnet voor de integratie van het virtuele App Service-netwerk
- Een ander subnet voor het privé-eindpunt
- Een Azure Privé-DNS-zone
- Een privé-eindpunt
Maak een virtueel netwerk van Azure.
Stel de
<virtual-network-name>tijdelijke aanduiding in op de naam voor uw nieuwe virtuele netwerk, zoalszava-virtual-network. De naam moet wereldwijd uniek zijn.# Define a variable for the virtual network name virtualNetworkName=<virtual-network-name> # Create the virtual network az network vnet create --resource-group $resourceGroupName --location $regionLocation --name $virtualNetworkName --address-prefixes 10.0.0.0/16Zie de opdrachtreferentie az network vnet create voor meer informatie.
Maak een subnet voor de integratie van het virtuele App Service-netwerk.
Stel de
<network-integration-subnet>tijdelijke aanduiding in op de naam voor uw nieuwe subnet dat ondersteuning biedt voor de integratie van virtuele netwerken, zoalszava-integration-subnet.Voor App Service wordt aanbevolen dat het subnet voor integratie met het virtuele netwerk minimaal een CIDR-blok van
/26heeft./24is meer dan voldoende.--delegations Microsoft.Web/serverfarmsgeeft op dat het subnet is gedelegeerd voor App Service-integratie met een virtueel netwerk.# Define a variable for the integration subnet name networkIntegrationSubnet=<network-integration-subnet> # Create the subnet for virtual network integration az network vnet subnet create --resource-group $resourceGroupName --vnet-name $virtualNetworkName --name $networkIntegrationSubnet \ --address-prefixes 10.0.0.0/24 --delegations Microsoft.Web/serverfarms \ --disable-private-endpoint-network-policies falseZie de opdrachtreferentie az network vnet subnet create voor meer informatie.
Maak een ander subnet voor de privé-eindpunten.
Stel de
<private-endpoint-subnet>tijdelijke aanduiding in op de naam voor uw nieuwe subnet dat ondersteuning biedt voor het privé-eindpunt, zoalszava-endpoint-subnet.# Define a variable for the private endpoint subnet name privateEndpointSubnet=<private-endpoint-subnet> # Create the subnet for the private endpoint az network vnet subnet create --resource-group $resourceGroupName --vnet-name $virtualNetworkName --name $privateEndpointSubnet \ --address-prefixes 10.0.1.0/24 \ --disable-private-endpoint-network-policies trueVoor subnetten van privé-eindpunten moet u het netwerkbeleid voor privé-eindpunten uitschakelen door de
--disable-private-endpoint-network-policiesvlag in te stellen optrue. Zie de optionele parameters voor de opdracht az network vnet subnet create voor meer informatie.Notitie
De
--private-endpoint-network-policiesvlag kan binnenkort worden vervangen door de--disable-private-endpoint-network-policiesvlag.Maak de Azure Privé-DNS-zone.
Stel de tijdelijke aanduiding
<private-zone-name>in op de naam van de nieuwe Privé-DNS-zone, zoalszava-private.azurewebsites.net.# Define a variable for the Private DNS zone privateDNSZone=<private-zone-name> # Create the Private DNS zone az network private-dns zone create --resource-group $resourceGroupName --name $privateDNSZoneZie de opdrachtreferentie az network vnet subnet create voor meer informatie. Zie Azure dns-zone configureren voor meer informatie over het configureren van de Privé-DNS zone.
Notitie
Als u het privé-eindpunt in de Azure-portal maakt, wordt automatisch een Azure Privé-DNS zone voor uw configuratie gemaakt. Voor procedureconsistentie in deze zelfstudie maakt u de Privé-DNS zone en het privé-eindpunt afzonderlijk met behulp van de Azure CLI.
Koppel de Privé-DNS-zone aan het virtuele netwerk.
Stel de
<dns-link-name>tijdelijke aanduiding in op de naam voor uw nieuwe DNS-koppeling, zoalszava-private-link.# Define a variable for the DNS link name dnsLinkName=<dns-link-name> # Create the link between the Private DNS zone and the virtual network az network private-dns link vnet create --resource-group $resourceGroupName --name $dnsLinkName --zone-name $privateDNSZone \ --virtual-network $virtualNetworkName --registration-enabled FalseZie de opdrachtverwijzing az network private-dns link vnet create voor meer informatie.
Maak in het subnet van het privé-eindpunt van uw virtuele netwerk een privé-eindpunt voor uw back-endweb-app.
Stel de
<private-endpoint-name>placeholder in op de naam van het nieuwe privé-eindpunt voor uw back-end-web-app, zoalszava-backend-endpoint. Stel de<service-connection-name>tijdelijke aanduiding in op de naam van de nieuwe serviceverbinding, zoalszava-backend-connection.# Define variables for the private endpoint and service connection privateEndpointName=<private-endpoint-name> serviceConnectionName=<service-connection-name> # Get the resource ID of the backend web app resourceId=$(az webapp show --resource-group $resourceGroupName --name $backendAppName --query id --output tsv) # Create the private endpoint for the backend web app by using the resource ID az network private-endpoint create --resource-group $resourceGroupName --name $privateEndpointName --location $regionLocation \ --connection-name $serviceConnectionName --private-connection-resource-id $resourceId \ --group-id sites --vnet-name $virtualNetworkName --subnet $privateEndpointSubnetZie de opdrachtverwijzing az network private-endpoint create voor meer informatie.
Koppel het privé-eindpunt aan de Privé-DNS zone met een DNS-zonegroep voor het privé-eindpunt van de back-endweb-app.
Stel de
<dns-zone-group-name>tijdelijke aanduiding in op de naam voor uw nieuwe DNS-zonegroep, zoalszava-dns-zone-group. De DNS-zonegroep helpt bij het automatisch bijwerken van de Privé-DNS zone wanneer het privé-eindpunt wordt bijgewerkt.# Define a variable for the DNS Zone group dnsZoneGroupName=<dns-zone-group-name> # Link the private endpoint to the Private DNS az network private-endpoint dns-zone-group create --resource-group $resourceGroupName --endpoint-name $privateEndpointName \ --name $dnsZoneGroupName --private-dns-zone $privateDNSZone --zone-name $privateDNSZoneZie de opdrachtverwijzing az network private-endpoint dns-zone-group create voor meer informatie.
Controleer of directe toegang tot uw privé-eindpunt is geweigerd.
Wanneer u een privé-eindpunt voor een App Service-app maakt, wordt openbare toegang impliciet uitgeschakeld. Als u probeert toegang te krijgen tot uw back-endweb-app met behulp van de standaard-URL, wordt uw toegang geweigerd.
Voer in een browser de standaard-URL in voor uw back-endweb-app, zoals
<backend-app-name>.azurewebsites.net.Het browserbericht geeft aan dat directe toegang is geweigerd:
Zie Toegangsbeperkingen voor Azure App Service voor meer informatie over toegangsbeperkingen voor App Service met privé-eindpunten.
Integratie van virtuele netwerken configureren
Nadat u de infrastructuur voor het virtuele netwerk hebt gemaakt, kunt u integratie van virtuele netwerken instellen in uw front-endweb-app. Dankzij de integratie van een virtueel netwerk kan uitgaand verkeer rechtstreeks naar het virtuele netwerk stromen. Standaard wordt alleen lokaal IP-verkeer gedefinieerd in het RFC-1918 > Private Address Space protocol route naar het virtuele netwerk. Dit routeringsniveau is wat u nodig hebt om privé-eindpunten in te schakelen.
Integratie van virtuele netwerken inschakelen in uw front-endweb-app. Bij de volgende opdracht wordt ervan uitgegaan dat het subnet en de web-app zich in dezelfde resourcegroep bevinden.
az webapp vnet-integration add --resource-group $resourceGroupName --name $frontendAppName --vnet $virtualNetworkName --subnet $networkIntegrationSubnet
Zie de opdrachtverwijzing az webapp vnet-integration add voor meer informatie.
Zie Routering van virtuele netwerkintegratie beheren om al het verkeer naar het virtuele netwerk te routeren. U kunt al het verkeer ook routeren als u internetverkeer via uw virtuele netwerk wilt routeren, zoals via een Azure Virtual Network NAT of Azure Firewall.
Implementatie naar de back-endweb-app inschakelen
Omdat uw back-endweb-app niet openbaar toegankelijk is, moet u uw hulpprogramma voor continue implementatie toestaan om uw app te bereiken door de SCM-site openbaar toegankelijk te maken vanaf internet. De hoofdweb-app zelf kan al het verkeer blijven weigeren.
Openbare toegang inschakelen voor de back-endweb-app.
az webapp update --resource-group $resourceGroupName --name $backendAppName --set publicNetworkAccess=EnabledStel de niet-gerelateerde regelactie in voor de hoofdweb-app om al het verkeer te weigeren.
Met deze instelling wordt openbare toegang tot de hoofdweb-app geweigerd, ook al is de instelling voor algemene app-toegang ingesteld om openbare toegang toe te staan.
az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \ --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=DenyStel de niet-overeenkomende regelactie voor de SCM-site in om al het verkeer toe te staan.
az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \ --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
FTP- en SCM-toegang beperken
Omdat uw back-end-SCM-site openbaar toegankelijk is, moet u deze vergrendelen met betere beveiliging.
FTP-toegang uitschakelen voor zowel de front-end-web-app als de back-end-web-app:
az resource update --resource-group $resourceGroupName --name ftp --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $resourceGroupName --name ftp --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=falseSchakel basisverificatietoegang tot de WebDeploy-poorten en SCM/geavanceerde hulpprogrammasites voor beide web-apps uit:
az resource update --resource-group $resourceGroupName --name scm --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $resourceGroupName --name scm --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
Wanneer u basisverificatie voor App Service uitschakelt, beperkt u de toegang tot de FTP- en SCM-eindpunten voor gebruikers die zijn geregistreerd bij Microsoft Entra ID. Met deze actie worden uw apps verder beveiligd. Zie Basisverificatie uitschakelen in App Service voor meer informatie over het uitschakelen van basisverificatie, waaronder het testen en bewaken van aanmeldingen.
Continue implementatie configureren met GitHub Actions
Voor deze procedure hebt u twee apps nodig die klaar zijn om te implementeren in uw App Service-front-end- en back-end-apps. Voor toegang tot de web-apps hebt u een service-principal en continue implementatie nodig met GitHub Actions.
Web-apps downloaden voor implementatietests
De opslagplaatsen Azure samples op GitHub bieden voorbeeld-Node.js-apps voor implementatie.
Ga in een browser naar de voorbeeld-app Node.js Back-end.
Fork de GitHub opslagplaats zodat u uw eigen kopie hebt om wijzigingen aan te brengen. In dit voorbeeld wordt een 'Hallo wereld'-app gebouwd. U implementeert deze app in uw back-endweb-app.
Herhaal hetzelfde proces voor de voorbeeld-app Node.js front-end.
Fork de GitHub opslagplaats zodat u uw eigen kopie hebt om wijzigingen aan te brengen. In dit voorbeeld wordt een web-app gebouwd die de inhoud van een URL ophaalt en weergeeft. U implementeert deze app in uw front-endweb-app.
De service-principal configureren
U hebt een service-principal nodig voor uw frontend-web-app en backend-web-app.
Een service-principal maken.
Stel de
<service-principal-name>placeholder in op de naam van uw nieuwe service-principal, zoalszava-service-principal.Vervang de andere
<placeholder>parameterwaarden door de informatie voor uw eigen resources.# Define a variable for the service principal name servicePrincipalName=<service-principal-name> # Link the private endpoint to the Private DNS az ad sp create-for-rbac --name <service-principal-name> --role contributor --scopes \ /subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<frontend-app-name> \ /subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<backend-app-name>De uitvoer is een JSON-object met de roltoewijzingsreferenties die toegang bieden tot uw App Service-apps.
{ "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "displayName": "<service-principal-name>", "password": "0Aa!1Bb!2Cc!3Dd!4Ee!5Ff!6Gg!7Hh!8Ii!9Jj!", "tenantId": "aaaabbbb-6666-cccc-7777-dddd8888eeee" }De JSON bevat het wachtwoord van uw service-principal, dat op dit moment alleen zichtbaar is.
Tip
Het is een goede gewoonte om minimale toegang te verlenen. In dit voorbeeld is het bereik beperkt tot alleen de apps, niet de hele resourcegroep.
Kopieer het JSON-object zodat u een record hebt van de naam van uw service-principal.
Geef uw service-principalreferenties op voor de Azure-aanmeldingsbewerking als onderdeel van uw GitHub Action-werkstroom.
Sla de inloggegevens op als GitHub-geheimen waarnaar in uw workflow wordt verwezen.
Ga in een browser naar de geforkte opslagplaats voor uw back-end-Node.js-app op GitHub.
Ga naar Instellingen>Beveiliging>Geheimen en variabelen>Acties.
Selecteer Nieuw opslagplaatsgeheim en maak een geheim voor elk van de volgende instellingen.
Gebruik de waarden uit uw JSON-uitvoer.
Instelling Waarde Voorbeeld AZURE_CLIENT_ID <application/client-id>00001111-aaaa-2222-bbbb-3333cccc4444AZURE_TENANT_ID <tenant-id>aaaabbbb-6666-cccc-7777-dddd8888eeeeAZURE_SUBSCRIPTION_ID <subscription-id>cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6aHerhaal dit proces voor de geforkte opslagplaats voor uw front-end Node.js-app op GitHub.
Continue implementatie instellen met GitHub Actions
U kunt continue implementatie instellen met GitHub Actions.
Ga in de Azure portal naar de pagina Overview voor uw front-endweb-app.
Selecteer implementatiecentrum> in het linkermenu.
Stel op het tabblad Settings de optie Source in op GitHub:
Als u voor het eerst vanuit GitHub implementeert, selecteert u Autoriseren en volgt u de autorisatieprompts. Als u wilt implementeren vanuit de opslagplaats van een andere gebruiker, selecteert u Account wijzigen.
Nadat u uw Azure-account met GitHub hebt geautoriseerd, selecteert u de Organization, Repository en Branch om CI/CD te configureren. Als u een organisatie of opslagplaats niet kunt vinden, moet u mogelijk meer machtigingen inschakelen voor GitHub. Zie Gebruikerstoegang tot de opslagplaatsen van uw organisatie beheren voor meer informatie.
Instelling Waarde Organisatie <your-GitHub-organization>Repository <forked-repository-name>Filiaal voornaamste Selecteer Opslaan.
Herhaal dit proces voor uw back-endweb-app en de bijbehorende geforkte opslagplaats.
Verbindingen en app-toegang valideren
U bent nu klaar om de verbindingen en toegang tot uw front-end- en back-endweb-apps te controleren.
Ga rechtstreeks naar je backend-web-app via de URL ervan,
https://<backend-app-name>.azurewebsites.net.Het volgende browserbericht wordt weergegeven:
Als u de app kunt bereiken, controleert u de configuratie:
Controleer of het privé-eindpunt juist is ingesteld.
Controleer of de toegangsbeperkingen voor uw app zijn ingesteld om al het verkeer voor de hoofdweb-app te weigeren.
Blader nu rechtstreeks naar uw front-endweb-app met de BIJBEHORENDE URL.
https://<frontend-app-name>.azurewebsites.netWanneer de verbinding is geslaagd, ziet u de volgende pagina:
Voer de URL voor uw back-endwebapp in het URL-vak in,
https://<backend-app-name>.azurewebsites.net, en selecteer Ophalen.Als u de verbindingen correct instelt, wordt de pagina vernieuwd om de berichtinhoud van de back-endweb-app weer te geven:
Al het uitgaande verkeer van de front-endweb-app routeert via het virtuele netwerk. Uw front-endweb-app maakt veilig verbinding met uw back-endweb-app via het privé-eindpunt.
Als er iets mis is met uw verbindingen, ziet u het bericht Fout 403 - Verboden in de uitvoer.
Een SSH-sessie tot stand brengen en een externe shell openen
Controleer of de frontend-web-app de backend-web-app via de privékoppeling kan bereiken door via SSH verbinding te maken met een frontend-exemplaar.
Stel een SSH-sessie in op de webcontainer van uw app en open een externe shell in uw browser:
az webapp ssh --resource-group $resourceGroupName --name $frontendAppNameZie de naslaginformatie over az webapp ssh command voor meer informatie.
Nadat de shell in uw browser is geopend, controleert u of uw back-endweb-app wordt bereikt met behulp van het privé-IP-adres van uw back-endweb-app.
Vervang in de volgende opdrachten de
<placeholder>parameterwaarden door de informatie voor uw eigen resource.Voer de
nslookupopdracht uit:nslookup <backend-app-name>.azurewebsites.netVoer de
curlopdracht uit om de site-inhoud opnieuw te valideren:curl https://<backend-app-name>.azurewebsites.net
De
nslookup-opdracht moet verwijzen naar het privé-IP-adres van uw backend-web-app. Het privé-IP-adres moet een adres uit uw virtuele netwerk zijn.U kunt uw privé-IP-adres bevestigen in de Azure-portal. Ga naar de pagina Netwerkinstellingen> voor uw back-endweb-app.
Herhaal dezelfde
nslookupencurlopdrachten uit een andere terminal (een terminal die geen SSH-sessie is op uw front-endexemplaren).
De
nslookupopdracht retourneert het openbare IP-adres voor de back-endweb-app. Omdat openbare toegang tot de back-endweb-app is uitgeschakeld, krijgt u als u het openbare IP-adres probeert te bereiken, een fout met geweigerde toegang. Deze fout betekent dat de site niet toegankelijk is vanaf het openbare internet, wat het beoogde gedrag is.De
nslookupopdracht wordt niet omgezet in het privé-IP-adres omdat het adres alleen kan worden omgezet vanuit het virtuele netwerk via de privé-DNS-zone. Alleen de front-endweb-app bevindt zich in het virtuele netwerk. Als u probeert decurlopdracht uit te voeren op de back-endweb-app vanuit de externe terminal, bevat de geretourneerde HTML het bericht Fout 403, Verboden - De web-app die u hebt geprobeerd te bereiken, heeft uw toegang geblokkeerd. Sommige terminals geven ook dezelfde HTML weer als de foutpagina die wordt geretourneerd wanneer u rechtstreeks toegang probeert te krijgen tot de back-endweb-app.
De hulpbronnen opschonen
In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Als u deze resources niet meer nodig denkt te hebben, verwijdert u de resourcegroep door de volgende opdracht in Cloud Shell uit te voeren.
Vervang de <placeholder> parameterwaarde door de informatie voor uw eigen resource:
az group delete --name <resource-group>
Het uitvoeren van deze opdracht kan enkele minuten in beslag nemen.
Veelgestelde vragen
In deze zelfstudie hebt u een basislijninfrastructuur geïmplementeerd ter ondersteuning van een beveiligde N-tier-web-app. App Service biedt functies waarmee u ervoor kunt zorgen dat u toepassingen uitvoert die de aanbevolen beveiligingsprocedures en aanbevelingen volgen.
Deze sectie bevat antwoorden op veelgestelde vragen waarmee u uw apps verder kunt beveiligen en uw resources kunt implementeren en beheren volgens aanbevolen procedures.
Implementeren met andere methoden dan met een service principal
In deze zelfstudie hebt u basisauthenticatie uitgeschakeld. U kunt zich niet verifiëren met de back-end-SCM-site met behulp van een gebruikersnaam en wachtwoord of met behulp van een publicatieprofiel. In plaats van verificatie met behulp van een service-principal kunt u echter OpenID Connect-referenties gebruiken.
Implementatie van GitHub Actions configureren in App Service
Azure genereert automatisch een werkstroombestand in uw opslagplaats. Nieuwe commits in de geselecteerde repository en branch worden doorlopend geïmplementeerd naar uw App Service-app. U kunt de doorvoeringen en implementaties bijhouden op het tabblad Logs in GitHub.
Een standaardwerkstroombestand dat gebruikmaakt van een publicatieprofiel voor verificatie bij App Service, wordt toegevoegd aan uw GitHub-opslagplaats. U kunt dit bestand bekijken door naar de <repo-name>/.github/workflows/ map te gaan.
Veilige openbare toegang tot de back-end-SCM-site bevestigen
Wanneer u de FTP- en SCM-toegang beveiligt, kunt u ervoor zorgen dat alleen beveiligingsprincipals die door Microsoft Entra worden ondersteund toegang hebben tot het SCM-eindpunt, ook al is het eindpunt openbaar toegankelijk. Deze instelling helpt u gerust te stellen dat uw back-endweb-app nog steeds veilig is.
Implementeren zonder een open back-end-SCM-site
Als u zich zorgen maakt over het inschakelen van openbare toegang tot de SCM-site of als u beleidsbeperkingen hebt, kunt u andere Implementatieopties van App Service overwegen, zoals uitvoeren vanuit een ZIP-pakket.
Deze architectuur implementeren met een sjabloon
De resources die u in deze zelfstudie hebt gemaakt, kunnen worden geïmplementeerd met behulp van een Azure Resource Manager sjabloon (ARM-sjabloon) of Bicep sjabloon. Met de toepassing die is gekoppeld aan een Bicep-bestand voor een back-endweb-app kunt u een beveiligde N-tier-app-oplossing maken.
Zie Deploy Bicep files with the Azure CLI voor meer informatie over het implementeren van ARM- en Bicep-sjablonen.