Zelfstudie: Een beveiligde n-tier-app maken in Azure-app Service

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 die op zijn beurt verbinding maakt met een database, opslagaccount, sleutelkluis, een andere VIRTUELE machine of een combinatie van deze resources. Deze architectuur vormt een N-tier-toepassing. Het is belangrijk dat toepassingen zoals deze zijn ontworpen om back-endresources zo veel mogelijk te beveiligen.

In deze zelfstudie leert u hoe u een beveiligde N-tier-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 Virtuele Azure-netwerk met behulp van virtual network-integratie en privé-eindpunten. Zie voor uitgebreidere richtlijnen met andere scenario's:

Scenario-architectuur

In het volgende diagram ziet u de architectuur die u tijdens deze zelfstudie maakt.

Architecture diagram of an n-tier App Service.

  • Virtueel netwerk Bevat twee subnetten, één is geïntegreerd met de front-endweb-app en de andere heeft een privé-eindpunt voor de back-endweb-app. Het virtuele netwerk blokkeert al het binnenkomende netwerkverkeer, met uitzondering van de front-end-app die ermee is geïntegreerd.
  • Front-endweb-app geïntegreerd in het virtuele netwerk en toegankelijk vanaf het openbare internet.
  • Back-endweb-app Alleen toegankelijk via het privé-eindpunt in het virtuele netwerk.
  • Privé-eindpunt integreert met de back-endweb-app en maakt de web-app toegankelijk met een privé-IP-adres.
  • Privé-DNS zone Hiermee kunt u een DNS-naam naar het IP-adres van het privé-eindpunt oplossen.

Notitie

Integratie van virtuele netwerken en privé-eindpunten zijn helemaal tot aan de Basic-laag in App Service beschikbaar. De gratis laag biedt geen ondersteuning voor deze functies. Met deze architectuur:

  • Openbaar verkeer naar de back-end-app wordt geblokkeerd.
  • Uitgaand verkeer van App Service wordt doorgestuurd naar het virtuele netwerk en kan de back-end-app bereiken.
  • App Service kan DNS-omzetting uitvoeren naar de back-end-app.

In dit scenario ziet u een van de mogelijke N-tier-scenario's in App Service. U kunt de concepten in deze zelfstudie gebruiken om complexere N-tier-apps te bouwen.

Wat u leert:

  • Maak een virtueel netwerk en subnetten voor integratie van virtueel App Service-netwerk.
  • Privé-DNS-zones maken.
  • Privé-eindpunten maken.
  • Configureer de integratie van virtuele netwerken in App Service.
  • Schakel basisverificatie uit in app service.
  • Continu implementeren naar een vergrendelde back-endweb-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-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten om deze zelfstudie te voltooien:

1. Twee exemplaren van een web-app maken

U hebt twee exemplaren van een web-app nodig, één voor de front-end en een voor de back-end. U moet ten minste de Basic-laag gebruiken om integratie van virtuele netwerken en privé-eindpunten te kunnen gebruiken. U gaat de integratie van het virtuele netwerk en andere configuraties later configureren.

  1. Maak een resourcegroep om alle resources te beheren die u in deze zelfstudie maakt.

    # Save resource group name and region as variables for convenience
    groupName=myresourcegroup
    region=eastus
    az group create --name $groupName --location $region
    
  2. Maak een App Service-plan. Vervang <app-service-plan-name> door een unieke naam. Wijzig de --sku parameter als u een andere SKU moet gebruiken. Zorg ervoor dat u de gratis laag niet gebruikt, omdat die SKU geen ondersteuning biedt voor de vereiste netwerkfuncties.

    # Save App Service plan name as a variable for convenience
    aspName=<app-service-plan-name>
    az appservice plan create --name $aspName --resource-group $groupName --is-linux --location $region --sku P1V3
    
  3. Maak de web-apps. Vervang <frontend-app-name> en <backend-app-name> door twee globaal unieke namen (geldige tekens zijn a-z, 0-9en -). Voor deze zelfstudie krijgt u voorbeeld-Node.js apps. Als u uw eigen apps wilt gebruiken, wijzigt u de --runtime parameter dienovereenkomstig. Uitvoeren az webapp list-runtimes voor de lijst met beschikbare runtimes.

    az webapp create --name <frontend-app-name> --resource-group $groupName --plan $aspName --runtime "NODE:18-lts"
    az webapp create --name <backend-app-name> --resource-group $groupName --plan $aspName --runtime "NODE:18-lts"
    

2. Netwerkinfrastructuur maken

U maakt de volgende netwerkbronnen:

  • Een virtueel netwerk.
  • Een subnet voor de integratie van het virtuele App Service-netwerk.
  • Een subnet voor het privé-eindpunt.
  • Een privé-DNS-zone.
  • Een privé-eindpunt.
  1. Maak een virtueel netwerk. Vervang <virtual-network-name> door een unieke naam.

    # Save vnet name as variable for convenience
    vnetName=<virtual-network-name>
    az network vnet create --resource-group $groupName --location $region --name $vnetName --address-prefixes 10.0.0.0/16
    
  2. Maak een subnet voor de integratie van het virtuele App Service-netwerk.

    az network vnet subnet create --resource-group $groupName --vnet-name $vnetName --name vnet-integration-subnet --address-prefixes 10.0.0.0/24 --delegations Microsoft.Web/serverfarms --disable-private-endpoint-network-policies false
    

    Voor App Service wordt het subnet voor integratie van /26 virtuele netwerken aanbevolen om minimaal een CIDR-blok te hebben. /24 is meer dan voldoende. --delegations Microsoft.Web/serverfarms geeft aan dat het subnet is gedelegeerd voor integratie van virtueel App Service-netwerk.

  3. Maak een ander subnet voor de privé-eindpunten.

    az network vnet subnet create --resource-group $groupName --vnet-name $vnetName --name private-endpoint-subnet --address-prefixes 10.0.1.0/24 --disable-private-endpoint-network-policies true
    

    Voor subnetten van privé-eindpunten moet u het netwerkbeleid voor privé-eindpunten uitschakelen door in te stellen --disable-private-endpoint-network-policies op true.

  4. Maak de privé-DNS-zone.

    az network private-dns zone create --resource-group $groupName --name privatelink.azurewebsites.net
    

    Zie de DNS-configuratie van azure-privé-eindpunten voor meer informatie over deze instellingen.

    Notitie

    Als u het privé-eindpunt maakt met behulp van de portal, wordt er automatisch een privé-DNS-zone voor u gemaakt en hoeft u het niet afzonderlijk te maken. Voor consistentie met deze zelfstudie maakt u de privé-DNS-zone en het privé-eindpunt afzonderlijk met behulp van de Azure CLI.

  5. Koppel de privé-DNS-zone aan het virtuele eindpuntnetwerk.

    az network private-dns link vnet create --resource-group $groupName --name myDnsLink --zone-name privatelink.azurewebsites.net --virtual-network $vnetName --registration-enabled False
    
  6. Maak in het subnet van het privé-eindpunt van uw virtuele netwerk een privé-eindpunt voor uw back-endweb-app. Vervang door <backend-app-name> de naam van uw back-endweb-app.

    # Get backend web app resource ID
    resourceId=$(az webapp show --resource-group $groupName --name <backend-app-name> --query id --output tsv)
    az network private-endpoint create --resource-group $groupName --name myPrivateEndpoint --location $region --connection-name myConnection --private-connection-resource-id $resourceId --group-id sites --vnet-name $vnetName --subnet private-endpoint-subnet
    
  7. Koppel het privé-eindpunt aan de privé-DNS-zone met een DNS-zonegroep voor het privé-eindpunt van de back-endweb-app. Met deze DNS-zonegroep kunt u de privé-DNS-zone automatisch bijwerken wanneer er een update voor het privé-eindpunt is.

    az network private-endpoint dns-zone-group create --resource-group $groupName --endpoint-name myPrivateEndpoint --name myZoneGroup --private-dns-zone privatelink.azurewebsites.net --zone-name privatelink.azurewebsites.net
    
  8. Wanneer u een privé-eindpunt voor een App Service 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. Navigeer vanuit een browser naar <backend-app-name>.azurewebsites.net dit gedrag.

    Screenshot of 403 error when trying to access backend web app directly.

    Zie Azure-app Service-toegangsbeperkingen voor App Service voor meer informatie over App Service-toegangsbeperkingen met privé-eindpunten.

3. Integratie van virtuele netwerken configureren in uw front-endweb-app

Schakel integratie van virtuele netwerken in uw app in. Vervang door <frontend-app-name> de naam van uw front-endweb-app.

az webapp vnet-integration add --resource-group $groupName --name <frontend-app-name> --vnet $vnetName --subnet vnet-integration-subnet

Dankzij de integratie van een virtueel netwerk kan uitgaand verkeer rechtstreeks naar het virtuele netwerk stromen. Standaard wordt alleen lokaal IP-verkeer dat is gedefinieerd in RFC-1918 , doorgestuurd naar het virtuele netwerk. Dit is wat u nodig hebt voor de privé-eindpunten. Zie Routering van virtuele netwerkintegratie beheren om al uw verkeer naar het virtuele netwerk te routeren. Het routeren van al het verkeer kan ook worden gebruikt als u internetverkeer wilt routeren via uw virtuele netwerk, zoals via een Azure Virtual Network NAT of een Azure Firewall.

4. Implementatie naar back-endweb-app via internet inschakelen

Omdat uw back-endweb-app niet openbaar toegankelijk is, moet u uw hulpprogramma voor continue implementatie uw app laten bereiken door de SCM-site openbaar toegankelijk te maken. De hoofdweb-app zelf kan al het verkeer blijven weigeren.

  1. Openbare toegang inschakelen voor de back-endweb-app.

    az webapp update --resource-group $groupName --name <backend-app-name> --set publicNetworkAccess=Enabled
    
  2. Stel 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 $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Deny
    
  3. Stel de niet-overeenkomende regelactie voor de SCM-site in om al het verkeer toe te staan.

    az resource update --resource-group $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
    

5. FTP- en SCM-toegang vergrendelen

Nu de back-end-SCM-site openbaar toegankelijk is, moet u deze vergrendelen met betere beveiliging.

  1. SCHAKEL FTP-toegang uit voor zowel de front-end- als back-endweb-apps. Vervang <frontend-app-name> en <backend-app-name> door uw app-namen.

    az resource update --resource-group $groupName --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false
    az resource update --resource-group $groupName --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
    
  2. Schakel basisverificatietoegang tot de WebDeploy-poorten en SCM/geavanceerde hulpprogrammasites voor beide web-apps uit. Vervang <frontend-app-name> en <backend-app-name> door uw app-namen.

    az resource update --resource-group $groupName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false
    az resource update --resource-group $groupName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
    

Als u basisverificatie voor App Service uitschakelt, wordt de toegang tot de FTP- en SCM-eindpunten beperkt tot gebruikers die worden ondersteund door Microsoft Entra ID, waardoor uw apps verder worden beveiligd. Zie Basisverificatie uitschakelen in App Service voor meer informatie over het uitschakelen van basisverificatie, inclusief het testen en bewaken van aanmeldingen.

6. Continue implementatie configureren met Behulp van GitHub Actions

  1. Navigeer naar de Node.js back-endvoorbeeld-app. Deze app is een eenvoudige Hallo wereld app.

  2. Selecteer de knop Fork in de rechterbovenhoek op de GitHub-pagina.

  3. Selecteer de eigenaar en laat de standaardnaam van de opslagplaats staan.

  4. Selecteer Een fork maken .

  5. Herhaal hetzelfde proces voor de Node.js front-endvoorbeeld-app. Deze app is een eenvoudige web-app die toegang heeft tot een externe URL.

  6. Maak een service-principal. Vervang <subscription-id>, <frontend-app-name>en <backend-app-name> door uw waarden.

    az ad sp create-for-rbac --name "myApp" --role contributor --scopes /subscriptions/<subscription-id>/resourceGroups/$groupName/providers/Microsoft.Web/sites/<frontend-app-name> /subscriptions/<subscription-id>/resourceGroups/$groupName/providers/Microsoft.Web/sites/<backend-app-name> --sdk-auth
    

    De uitvoer is een JSON-object met de roltoewijzingsreferenties die toegang bieden tot uw App Service-apps. Kopieer dit JSON-object voor de volgende stap. Het bevat uw clientgeheim, dat op dit moment alleen zichtbaar is. Het is altijd een goede gewoonte om minimale toegang te verlenen. Het bereik in dit voorbeeld is beperkt tot alleen de apps, niet de hele resourcegroep.

  7. Als u de referenties van de service-principal als GitHub-geheimen wilt opslaan, gaat u naar een van de geforkte voorbeeldopslagplaatsen in GitHub en gaat u naar Instellingen> Beveiligingsgeheimen>>en variabelenacties.

  8. Selecteer Nieuw opslagplaatsgeheim en maak een geheim voor elk van de volgende waarden. De waarden vindt u in de json-uitvoer die u eerder hebt gekopieerd.

    Naam Weergegeven als
    AZURE_APP_ID <application/client-id>
    AZURE_PASSWORD <client-secret>
    AZURE_TENANT_ID <tenant-id>
    AZURE_SUBSCRIPTION_ID <subscription-id>
  9. Herhaal dit proces voor de andere geforkte voorbeeldopslagplaats.

  10. Als u continue implementatie wilt instellen met GitHub Actions, meldt u zich aan bij Azure Portal.

  11. Navigeer naar de overzichtspagina voor uw front-endweb-app.

  12. Selecteer Implementatiecentrum in het linkerdeelvenster. Selecteer vervolgens Instellingen.

  13. Selecteer 'GitHub' in het vak Bron in de CI/CD-opties.

    Screenshot that shows how to choose the deployment source.

  14. 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.

  15. Als u de Node.js voorbeeld-app gebruikt die is gesplitst als onderdeel van de vereisten, gebruikt u de volgende instellingen voor organisatie, opslagplaats en vertakking.

    Instelling Weergegeven als
    Organisatie <your-GitHub-organization>
    Opslagplaats nodejs-front-end
    Vertakking main
  16. Selecteer Opslaan.

  17. Herhaal dezelfde stappen voor uw back-endweb-app. De instellingen van het Deployment Center worden gegeven in de volgende tabel.

    Instelling Weergegeven als
    Organisatie <your-GitHub-organization>
    Opslagplaats nodejs-backend
    Vertakking main

7. Een service-principal gebruiken voor implementatie van GitHub Actions

Uw Deployment Center-configuratie heeft een standaardwerkstroombestand gemaakt in elk van uw voorbeeldopslagplaatsen, maar maakt standaard gebruik van een publicatieprofiel, dat gebruikmaakt van basisverificatie. Omdat u basisverificatie hebt uitgeschakeld, ziet u, als u het tabblad Logboeken in het Implementatiecentrum controleert, dat de automatisch geactiveerde implementatie een fout oplevert. U moet het werkstroombestand wijzigen om de service-principal te gebruiken voor verificatie met App Service. Zie Het werkstroombestand toevoegen aan uw GitHub-opslagplaats voor voorbeeldwerkstromen.

  1. Open een van uw geforkte GitHub-opslagplaatsen en ga naar de <repo-name>/.github/workflows/ map.

  2. Selecteer het automatisch gegenereerde werkstroombestand en selecteer vervolgens de knop Potlood in de rechterbovenhoek om het bestand te bewerken. Vervang de inhoud door de volgende tekst. Hierbij wordt ervan uitgegaan dat u de GitHub-geheimen eerder hebt gemaakt voor uw referentie. Werk de tijdelijke aanduiding voor <web-app-name> onder de sectie env bij en voer deze vervolgens rechtstreeks door naar de hoofdvertakking. Deze doorvoering activeert de GitHub-actie om opnieuw uit te voeren en uw code te implementeren, deze keer met behulp van de service-principal om te verifiëren.

    name: Build and deploy Node.js app to Azure Web App
    
    on:
      push:
        branches:
          - main
      workflow_dispatch:
    
    env:
      AZURE_WEBAPP_NAME: <web-app-name>   # set this to your application's name
      NODE_VERSION: '18.x'                # set this to the node version to use
      AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Set up Node.js version
            uses: actions/setup-node@v1
            with:
              node-version: ${{ env.NODE_VERSION }}
    
          - name: npm install, build
            run: |
              npm install
              npm run build --if-present
    
          - name: Upload artifact for deployment job
            uses: actions/upload-artifact@v2
            with:
              name: node-app
              path: .
    
      deploy:
        runs-on: ubuntu-latest
        needs: build
        environment:
          url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    
        steps:
          - name: Download artifact from build job
            uses: actions/download-artifact@v2
            with:
              name: node-app
          - uses: azure/login@v1
            with:
              creds: |
                {
                  "clientId": "${{ secrets.AZURE_APP_ID }}",
                  "clientSecret":  "${{ secrets.AZURE_PASSWORD }}",
                  "subscriptionId": "${{ secrets.AZURE_SUBSCRIPTION_ID }}",
                  "tenantId": "${{ secrets.AZURE_TENANT_ID }}"
                }
    
          - name: 'Deploy to Azure Web App'
            id: deploy-to-webapp
            uses: azure/webapps-deploy@v2
            with:
              app-name: ${{ env.AZURE_WEBAPP_NAME }}
              package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
    
          - name: logout
            run: |
              az logout
    
  3. Herhaal dit proces voor het werkstroombestand in uw andere geforkte GitHub-opslagplaats.

De nieuwe GitHub-doorvoeringen activeren een andere implementatie voor elk van uw apps. Deze keer moet de implementatie slagen omdat de werkstroom gebruikmaakt van de service-principal voor verificatie met de SCM-sites van de apps.

Zie Continue implementatie voor Azure-app Service voor gedetailleerde richtlijnen over het configureren van continue implementatie met providers zoals GitHub Actions.

8. Verbindingen en app-toegang valideren

  1. Blader naar de front-endweb-app met de URL: https://<frontend-app-name>.azurewebsites.net.

  2. Voer in het tekstvak de URL voor uw back-endweb-app in: https://<backend-app-name>.azurewebsites.net. Als u de verbindingen correct instelt, krijgt u het bericht 'Hallo van de back-endweb-app!'. Dit is de volledige inhoud van de back-endweb-app. Al het uitgaande verkeer van de front-endweb-app wordt gerouteerd 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, loopt uw front-endweb-app vast.

  3. Navigeer rechtstreeks naar uw back-endweb-app met de URL: https://<backend-app-name>.azurewebsites.net. Als het goed is, ziet u nu het bericht Web App - Unavailable. Als u de app kunt bereiken, controleert u of u het privé-eindpunt hebt geconfigureerd en of de toegangsbeperkingen voor uw app zijn ingesteld om al het verkeer voor de hoofdweb-app te weigeren.

  4. Als u verder wilt valideren dat de front-endweb-app de back-endweb-app bereikt via een privékoppeling, wordt SSH naar een van de exemplaren van uw front-end verzonden. Voer de volgende opdracht uit om SSH uit te voeren, waarmee een SSH-sessie wordt vastgelegd in de webcontainer van uw app en een externe shell wordt geopend in uw browser.

    az webapp ssh --resource-group $groupName --name <frontend-app-name>
    
  5. Wanneer de shell wordt geopend in uw browser, voert nslookup u uit om te bevestigen dat uw back-endweb-app wordt bereikt met behulp van het privé-IP-adres van uw back-endweb-app. U kunt ook uitvoeren curl om de site-inhoud opnieuw te valideren. Vervang door <backend-app-name> de naam van uw back-endweb-app.

    nslookup <backend-app-name>.azurewebsites.net
    curl https://<backend-app-name>.azurewebsites.net
    

    Screenshot of SSH session showing how to validate app connections.

    Het nslookup moet worden omgezet in het privé-IP-adres van uw back-endweb-app. Het privé-IP-adres moet een adres uit uw virtuele netwerk zijn. Als u uw privé-IP-adres wilt bevestigen, gaat u naar de netwerkpagina voor uw back-endweb-app.

    Screenshot of App Service Networking page showing the inbound IP of the app.

  6. Herhaal dezelfde nslookup en curl opdrachten uit een andere terminal (een terminal die geen SSH-sessie is op de exemplaren van uw front-end).

    Screenshot of an external terminal doing a nslookup and curl of the back-end web app.

    Het nslookup retourneert het openbare IP-adres voor de back-endweb-app. Omdat openbare toegang tot de back-endweb-app is uitgeschakeld, krijgt u als u probeert het openbare IP-adres te bereiken, een fout met geweigerde toegang. Deze fout betekent dat deze site niet toegankelijk is vanaf het openbare internet, wat het beoogde gedrag is. Het nslookup wordt niet omgezet in het privé-IP-adres, omdat dit 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 uit te voeren curl op de back-endweb-app vanuit de externe terminal, bevat Web App - Unavailablede HTML die wordt geretourneerd. Deze fout geeft de HTML weer voor de foutpagina die u eerder hebt gezien toen u probeerde te navigeren naar de back-endweb-app in uw browser.

9. Resources 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.

az group delete --name myresourcegroup

Het kan enkele minuten duren voor deze opdracht is uitgevoerd.

Veelgestelde vragen

Is er een alternatief voor implementatie met behulp van een service-principal?

Aangezien u in deze zelfstudie basisverificatie hebt uitgeschakeld, kunt u zich niet verifiëren met de back-end-SCM-site met een gebruikersnaam en wachtwoord en geen van beide met een publicatieprofiel. In plaats van een service-principal kunt u ook OpenID Verbinding maken gebruiken.

Wat gebeurt er wanneer ik gitHub Actions-implementatie configureer in App Service?

Azure genereert automatisch een werkstroombestand in uw opslagplaats. Nieuwe doorvoeringen in de geselecteerde opslagplaats en vertakking worden nu continu geïmplementeerd in uw App Service-app. U kunt de doorvoeringen en implementaties bijhouden op het tabblad Logboeken .

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.

Is het veilig om de back-end-SCM openbaar toegankelijk te laten?

Wanneer u FTP- en SCM-toegang vergrendelt, zorgt dit ervoor dat alleen door Microsoft Entra ondersteunde principals toegang hebben tot het SCM-eindpunt, ook al is het openbaar toegankelijk. Deze instelling moet u geruststellen dat uw back-endweb-app nog steeds veilig is.

Is er een manier om te implementeren zonder de back-end-SCM-site te openen?

Als u zich zorgen maakt over het inschakelen van openbare toegang tot de SCM-site of als u wordt beperkt door beleid, kunt u andere Implementatieopties van App Service overwegen, zoals uitvoeren vanuit een ZIP-pakket.

Hoe kan ik deze architectuur implementeren met ARM/Bicep?

De resources die u in deze zelfstudie hebt gemaakt, kunnen worden geïmplementeerd met behulp van een ARM/Bicep-sjabloon. Met de app die is verbonden met een bicep-sjabloon voor de back-endweb-app, kunt u een beveiligde N-tier-app-oplossing maken.

Zie Resources implementeren met Bicep en Azure CLI voor meer informatie over het implementeren van ARM-/Bicep-sjablonen.

Volgende stappen