Oktatóanyag: Biztonságos n szintű alkalmazás létrehozása Azure-alkalmazás Szolgáltatásban

Számos alkalmazás több összetevővel is rendelkezik. Előfordulhat például, hogy olyan előtérrel rendelkezik, amely nyilvánosan elérhető, és egy háttér API-hoz vagy webalkalmazáshoz csatlakozik, amely viszont egy adatbázishoz, tárfiókhoz, kulcstartóhoz, egy másik virtuális géphez vagy ezeknek az erőforrásoknak a kombinációjához csatlakozik. Ez az architektúra egy N szintű alkalmazást alkot. Fontos, hogy az ilyen alkalmazások a lehető legnagyobb mértékben védjék a háttérbeli erőforrásokat.

Ebben az oktatóanyagban megtudhatja, hogyan helyezhet üzembe egy biztonságos N szintű alkalmazást egy olyan előtér-webalkalmazással, amely egy másik hálózat által elkülönített webalkalmazáshoz csatlakozik. Az Azure-beli virtuális hálózaton belül minden forgalom el van különítve a virtuális hálózati integráció és a privát végpontok használatával. Az egyéb forgatókönyveket is tartalmazó átfogóbb útmutatásért lásd:

Forgatókönyv-architektúra

Az alábbi ábra az oktatóanyag során létrehozott architektúrát mutatja be.

Architecture diagram of an n-tier App Service.

  • A virtuális hálózat két alhálózatot tartalmaz, az egyik integrálva van az előtérbeli webalkalmazással, a másik pedig egy privát végponttal a háttérbeli webalkalmazáshoz. A virtuális hálózat blokkolja az összes bejövő hálózati forgalmat, kivéve a vele integrált előtérbeli alkalmazást.
  • A virtuális hálózatba integrált és a nyilvános internetről elérhető előtér-webalkalmazás .
  • A háttérbeli webalkalmazás csak a virtuális hálózat privát végpontja segítségével érhető el.
  • A privát végpont integrálva van a háttérbeli webalkalmazással, és a webalkalmazást egy privát IP-címmel teszi elérhetővé.
  • saját DNS zóna Lehetővé teszi a DNS-név feloldását a privát végpont IP-címére.

Feljegyzés

A virtuális hálózati integráció és a privát végpontok egészen az App Service alapszintű szintjéig érhetők el. Az ingyenes szint nem támogatja ezeket a funkciókat. Ezzel az architektúrával:

  • A háttéralkalmazás nyilvános forgalma le van tiltva.
  • Az App Service kimenő forgalmát a rendszer a virtuális hálózatra irányítja, és elérheti a háttéralkalmazást.
  • Az App Service képes DNS-feloldás elvégzésére a háttéralkalmazásban.

Ez a forgatókönyv az App Service egyik lehetséges N szintű forgatókönyvét mutatja be. Az oktatóanyagban ismertetett fogalmak segítségével összetettebb N szintű alkalmazásokat hozhat létre.

Ismertetett témák:

  • Hozzon létre egy virtuális hálózatot és alhálózatokat az App Service virtuális hálózati integrációjához.
  • Hozzon létre privát DNS-zónákat.
  • Privát végpontok létrehozása.
  • Virtuális hálózati integráció konfigurálása az App Service-ben.
  • Tiltsa le az alapszintű hitelesítést az App Service-ben.
  • Folyamatosan üzembe helyezhető egy zárolt háttérbeli webalkalmazásban.

Előfeltételek

Az oktatóanyag két Node.js gitHubon üzemeltetett mintaalkalmazást használ. Ha még nem rendelkezik GitHub-fiókkal, hozzon létre ingyenes fiókot.

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

Az oktatóanyag elvégzéséhez:

1. Webalkalmazás két példányának létrehozása

Egy webalkalmazás két példányára van szüksége, egyet az előtérben, egyet pedig a háttérrendszerhez. A virtuális hálózati integráció és a privát végpontok használatához legalább az Alapszintű szintet kell használnia. Később konfigurálja a virtuális hálózati integrációt és más konfigurációkat.

  1. Hozzon létre egy erőforráscsoportot az oktatóanyagban létrehozott összes erőforrás kezeléséhez.

    # Save resource group name and region as variables for convenience
    groupName=myresourcegroup
    region=eastus
    az group create --name $groupName --location $region
    
  2. Hozzon létre egy App Service-csomagot. A <app-service-plan-name> sztringet cserélje le egy egyedi névre. Módosítsa a paramétert --sku , ha másik termékváltozatot kell használnia. Győződjön meg arról, hogy nem használja az ingyenes szintet, mivel ez a termékváltozat nem támogatja a szükséges hálózati funkciókat.

    # 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. Hozza létre a webalkalmazásokat. Cserélje le és írja be <frontend-app-name> két globálisan egyedi névvel (az érvényes karakterek a következőka-z: és 0-9-).<backend-app-name> Ebben az oktatóanyagban Node.js mintaalkalmazásokkal rendelkezik. Ha saját alkalmazásokat szeretne használni, ennek megfelelően módosítsa a --runtime paramétert. Futtassa az webapp list-runtimes az elérhető futtatókörnyezetek listáját.

    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. Hálózati infrastruktúra létrehozása

A következő hálózati erőforrásokat fogja létrehozni:

  • Egy virtuális hálózat.
  • Az App Service virtuális hálózati integrációjának alhálózata.
  • A privát végpont alhálózata.
  • Privát DNS-zóna.
  • Privát végpont.
  1. Hozzon létre egy virtuális hálózatot. A <virtual-network-name> sztringet cserélje le egy egyedi névre.

    # 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. Hozzon létre egy alhálózatot az App Service virtuális hálózati integrációjához.

    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
    

    Az App Service esetében a virtuális hálózati integrációs alhálózatnak ajánlott legalább CIDR-blokktal rendelkeznie/26. /24 több mint elegendő. --delegations Microsoft.Web/serverfarms megadja, hogy az alhálózat delegálva legyen az App Service virtuális hálózati integrációjához.

  3. Hozzon létre egy másik alhálózatot a privát végpontokhoz.

    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
    

    A privát végpont alhálózatai esetében a privát végpont hálózati házirendjeinek letiltásához állítsa be --disable-private-endpoint-network-policies a következőttrue: .

  4. Hozza létre a privát DNS-zónát.

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

    További információ ezekről a beállításokról: Azure Private Endpoint DNS-konfiguráció.

    Feljegyzés

    Ha a privát végpontot a portál használatával hozza létre, a rendszer automatikusan létrehoz egy privát DNS-zónát, és nem kell külön létrehoznia. Az oktatóanyag konzisztenciája érdekében a privát DNS-zónát és a privát végpontot külön hozza létre az Azure CLI használatával.

  5. Kapcsolja a saját DNS-zónát a virtuális hálózathoz.

    az network private-dns link vnet create --resource-group $groupName --name myDnsLink --zone-name privatelink.azurewebsites.net --virtual-network $vnetName --registration-enabled False
    
  6. A virtuális hálózat privát végpont alhálózatában hozzon létre egy privát végpontot a háttér-webalkalmazáshoz. Cserélje le <backend-app-name> a háttérbeli webalkalmazás nevére.

    # 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. Csatolja a privát végpontot a privát DNS-zónához a háttéralkalmazás privát végpontjának DNS-zónacsoportjával. Ez a DNS-zónacsoport segít automatikusan frissíteni a privát DNS-zónát a privát végpont frissítésekor.

    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. Amikor privát végpontot hoz létre egy App Service-hez, a nyilvános hozzáférés implicit módon le lesz tiltva. Ha az alapértelmezett URL-címével próbálja elérni a háttérbeli webalkalmazást, a rendszer megtagadja a hozzáférést. A böngészőben keresse meg ezt a <backend-app-name>.azurewebsites.net viselkedést.

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

    Az App Service privát végpontokkal kapcsolatos hozzáférési korlátozásaival kapcsolatos további információkért lásd Azure-alkalmazás szolgáltatáshozzáférés korlátozásait.

3. Virtuális hálózati integráció konfigurálása az előtérbeli webalkalmazásban

Virtuális hálózati integráció engedélyezése az alkalmazásban. Cserélje le <frontend-app-name> az előtér-webalkalmazás nevére.

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

A virtuális hálózat integrációja lehetővé teszi, hogy a kimenő forgalom közvetlenül a virtuális hálózatba áramoljon. Alapértelmezés szerint csak az RFC-1918-ban definiált helyi IP-forgalom lesz átirányítva a virtuális hálózathoz, ami a privát végpontokhoz szükséges. Ha az összes forgalmat a virtuális hálózatra szeretné irányítani, olvassa el a Virtuális hálózatok integrációs útválasztásának kezelése című témakört. Az összes forgalom útválasztása akkor is használható, ha az internetes forgalmat a virtuális hálózaton keresztül szeretné irányítani, például egy Azure-beli virtuális hálózat NAT-án vagy egy Azure Firewallon keresztül.

4. Az üzembe helyezés engedélyezése a háttérbeli webalkalmazásban az internetről

Mivel a háttér-webalkalmazás nem érhető el nyilvánosan, engedélyeznie kell, hogy a folyamatos üzembe helyezési eszköz elérje az alkalmazást azáltal, hogy az SCM-webhelyet nyilvánosan elérhetővé teszi. Maga a fő webalkalmazás továbbra is megtagadhatja az összes forgalmat.

  1. Nyilvános hozzáférés engedélyezése a háttérbeli webalkalmazáshoz.

    az webapp update --resource-group $groupName --name <backend-app-name> --set publicNetworkAccess=Enabled
    
  2. A fő webalkalmazás nem egyező szabályműveletének beállítása az összes forgalom letiltásához. Ez a beállítás nem engedélyezi a nyilvános hozzáférést a fő webalkalmazáshoz annak ellenére, hogy az általános alkalmazáshozzáférés beállítása a nyilvános hozzáférés engedélyezésére van beállítva.

    az resource update --resource-group $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Deny
    
  3. Állítsa be az SCM-hely nem egyező szabályműveletét az összes forgalom engedélyezéséhez.

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

5. FTP- és SCM-hozzáférés zárolása

Most, hogy a háttérrendszer SCM-webhelye nyilvánosan elérhető, jobb biztonsággal kell zárolnia.

  1. Tiltsa le az FTP-hozzáférést mind az előtérbeli, mind a háttérbeli webalkalmazásokhoz. Cserélje le és <backend-app-name> írja be <frontend-app-name> az alkalmazásneveket.

    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. Tiltsa le a WebDeploy-portokhoz és az SCM/speciális eszközwebhelyekhez való alapvető hitelesítési hozzáférést mindkét webalkalmazáshoz. Cserélje le és <backend-app-name> írja be <frontend-app-name> az alkalmazásneveket.

    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
    

Az App Service alapszintű hitelesítésének letiltása korlátozza az FTP- és SCM-végpontok elérését a Microsoft Entra ID által támogatott felhasználók számára, ami tovább védi az alkalmazásokat. Az alapszintű hitelesítés letiltásáról, többek között a bejelentkezések teszteléséről és monitorozásáról további információt az App Service alapszintű hitelesítésének letiltása című témakörben talál.

6. Folyamatos üzembe helyezés konfigurálása a GitHub Actions használatával

  1. Lépjen a Node.js háttéralkalmazásra. Ez az alkalmazás egy egyszerű "Helló világ!" alkalmazás alkalmazás.

  2. A GitHub oldal jobb felső részén válassza az Elágazás gombot.

  3. Válassza ki a tulajdonost, és hagyja meg az alapértelmezett adattárnevet.

  4. Válassza az Elágazás létrehozása lehetőséget .

  5. Ismételje meg ugyanezt a folyamatot az Node.js előtérbeli mintaalkalmazás esetében. Ez az alkalmazás egy egyszerű webalkalmazás, amely egy távoli URL-címet ér el.

  6. Hozzon létre egy szolgáltatásnevet. Cserélje le és <frontend-app-name><backend-app-name> írja be <subscription-id>az értékeket.

    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
    

    A kimenet egy JSON-objektum, amelynek szerepkör-hozzárendelési hitelesítő adatai hozzáférést biztosítanak az App Service-alkalmazásokhoz. Másolja ezt a JSON-objektumot a következő lépéshez. Tartalmazza az ügyfél titkos kódját, amely jelenleg csak látható. Mindig ajánlott minimális hozzáférést biztosítani. A jelen példában szereplő hatókör csak az alkalmazásokra korlátozódik, nem pedig a teljes erőforráscsoportra.

  7. A szolgáltatásnév hitelesítő adatainak GitHub-titkos kulcsként való tárolásához nyissa meg a GitHub egyik elágaztatott mintaadattárát, és nyissa meg a Gépház> Security>Secrets és változók>műveleteit.

  8. Válassza az Új tárház titkos kód lehetőséget, és hozzon létre egy titkos kulcsot az alábbi értékek mindegyikéhez. Az értékek a korábban másolt json-kimenetben találhatók.

    Név szerint Érték
    AZURE_APP_ID <application/client-id>
    AZURE_PASSWORD <client-secret>
    AZURE_TENANT_ID <tenant-id>
    AZURE_SUBSCRIPTION_ID <subscription-id>
  9. Ismételje meg ezt a folyamatot a másik elágazott mintaadattár esetében.

  10. Ha folyamatos üzembe helyezést szeretne beállítani a GitHub Actions használatával, jelentkezzen be az Azure Portalra.

  11. Lépjen az előtér-webalkalmazás Áttekintés lapjára.

  12. A bal oldali panelen válassza az Üzembe helyezési központ lehetőséget. Ezután válassza a Gépház.

  13. A Forrás mezőben válassza a "GitHub" lehetőséget a CI/CD beállításai közül.

    Screenshot that shows how to choose the deployment source.

  14. Ha első alkalommal telepíti a GitHubot, válassza az Engedélyezés lehetőséget, és kövesse az engedélyezési utasításokat. Ha egy másik felhasználó adattárából szeretné üzembe helyezni az üzembe helyezést, válassza a Fiók módosítása lehetőséget.

  15. Ha az előfeltételek részeként elágaztatott Node.js mintaalkalmazást használja, használja a következő beállításokat a Szervezet, az Adattár és az Ág esetében.

    Beállítás Érték
    Szervezet <your-GitHub-organization>
    Adattár nodejs-frontend
    Ág main
  16. Válassza a Mentés lehetőséget.

  17. Ismételje meg ugyanazokat a lépéseket a háttér-webalkalmazás esetében. Az Üzembe helyezési központ beállításai az alábbi táblázatban találhatók.

    Beállítás Érték
    Szervezet <your-GitHub-organization>
    Adattár nodejs-backend
    Ág main

7. Szolgáltatásnév használata a GitHub Actions üzembe helyezéséhez

Az Üzembehelyezési központ konfigurációja létrehozott egy alapértelmezett munkafolyamat-fájlt az egyes mintaadattárakban, de alapértelmezés szerint egy közzétételi profilt használ, amely alapszintű hitelesítést használ. Mivel letiltotta az alapszintű hitelesítést, ha bejelöli a Naplók lapot az Üzembe helyezési központban, látni fogja, hogy az automatikusan aktivált üzembe helyezés hibát eredményez. Módosítania kell a munkafolyamat-fájlt, hogy a szolgáltatásnévvel hitelesítse magát az App Service-ben. A minta munkafolyamatokról a Munkafolyamat-fájl hozzáadása a GitHub-adattárban című témakörben olvashat.

  1. Nyissa meg az egyik elágaztatott GitHub-adattárat, és nyissa meg a <repo-name>/.github/workflows/ könyvtárat.

  2. Válassza ki az automatikusan létrehozott munkafolyamat-fájlt, majd a jobb felső sarokban lévő "ceruza" gombot a fájl szerkesztéséhez. Cserélje le a tartalmat a következő szövegre, amely feltételezi, hogy korábban létrehozta a GitHub titkos kulcsait a hitelesítő adatokhoz. Frissítse a helyőrzőt <web-app-name> az "env" szakaszban, majd véglegesítse közvetlenül a fő ágra. Ez a véglegesítés aktiválja a GitHub-műveletet, hogy újra fusson, és telepítse a kódot, ezúttal a szolgáltatásnév használatával a hitelesítéshez.

    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. Ismételje meg ezt a folyamatot a munkafolyamat-fájlhoz a másik elágaztatott GitHub-adattárban.

Az új GitHub-véglegesítések egy újabb üzembe helyezést váltanak ki az egyes alkalmazásokhoz. Az üzembe helyezésnek ezúttal sikeresnek kell lennie, mivel a munkafolyamat a szolgáltatásnév használatával hitelesíti az alkalmazás SCM-webhelyeit.

A folyamatos üzembe helyezés olyan szolgáltatókkal való konfigurálásához, mint a GitHub Actions, részletes útmutatásért lásd: Folyamatos üzembe helyezés Azure-alkalmazás szolgáltatásban.

8. Kapcsolatok és alkalmazáshozzáférés ellenőrzése

  1. Keresse meg az előtérbeli webalkalmazást az URL-címével: https://<frontend-app-name>.azurewebsites.net.

  2. A szövegmezőbe írja be a háttérbeli webalkalmazás URL-címét: https://<backend-app-name>.azurewebsites.net. Ha megfelelően állítja be a kapcsolatokat, a "Hello from the backend web app!" üzenetet kell kapnia, amely a háttér webalkalmazás teljes tartalma. Az előtérbeli webalkalmazás kimenő forgalmát a rendszer a virtuális hálózaton keresztül irányítja át. Az előtérbeli webalkalmazás biztonságosan csatlakozik a háttérbeli webalkalmazáshoz a privát végponton keresztül. Ha valami baj van a kapcsolatokkal, az előtérbeli webalkalmazás összeomlik.

  3. Próbáljon meg közvetlenül navigálni a háttérbeli webalkalmazásra a következő URL-címmel: https://<backend-app-name>.azurewebsites.net. Ekkor megjelenik az üzenet Web App - Unavailable. Ha el tudja érni az alkalmazást, győződjön meg arról, hogy konfigurálta a privát végpontot, és hogy az alkalmazás hozzáférési korlátozásai a fő webalkalmazás összes forgalmának letiltására vannak beállítva.

  4. Annak ellenőrzéséhez, hogy az előtér-webalkalmazás privát hivatkozáson keresztül éri-e el a háttérbeli webalkalmazást, az SSH az előtér egyik példányára. Az SSH-hoz futtassa a következő parancsot, amely létrehoz egy SSH-munkamenetet az alkalmazás webtárolójában, és megnyit egy távoli rendszerhéjat a böngészőben.

    az webapp ssh --resource-group $groupName --name <frontend-app-name>
    
  5. Amikor megnyílik a rendszerhéj a böngészőben, futtassa nslookup a háttérbeli webalkalmazás elérését a háttér-webalkalmazás privát IP-címével. A webhely tartalmának ismételt ellenőrzéséhez is futtatható curl . Cserélje le <backend-app-name> a háttérbeli webalkalmazás nevére.

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

    Screenshot of SSH session showing how to validate app connections.

    A nslookup megoldásnak a háttérbeli webalkalmazás privát IP-címére kell feloldódnia. A magánhálózati IP-címnek a virtuális hálózatból származó címnek kell lennie. A privát IP-cím megerősítéséhez lépjen a háttérbeli webalkalmazás Hálózatkezelés lapjára.

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

  6. Ismételje meg ugyanezt nslookup , és curl parancsokat egy másik terminálról (amely nem SSH-munkamenet az előtérpéldányokon).

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

    A nslookup háttérbeli webalkalmazás nyilvános IP-címét adja vissza. Mivel a háttérbeli webalkalmazás nyilvános hozzáférése le van tiltva, a nyilvános IP-cím elérésekor a hozzáférés megtagadása hibaüzenet jelenik meg. Ez a hiba azt jelenti, hogy ez a webhely nem érhető el a nyilvános internetről, ami a kívánt viselkedés. Ez nslookup nem oldja fel a privát IP-címet, mert ez csak a virtuális hálózaton belülről, a privát DNS-zónán keresztül oldható fel. Csak az előtérbeli webalkalmazás van a virtuális hálózaton belül. Ha a külső terminálról próbál futtatni curl a háttérbeli webalkalmazáson, a visszaadott HTML tartalmazza a következőt Web App - Unavailable: . Ez a hiba megjeleníti a korábban a böngészőben a háttérbeli webalkalmazásra való navigáláskor látott hibalap HTML-kódját.

9. Erőforrások megtisztítása

Az előző lépésekben Azure-erőforrásokat hozott létre egy erőforráscsoportban. Ha várhatóan nem lesz szüksége ezekre az erőforrásokra a jövőben, törölje az erőforráscsoportot a következő parancs Cloud Shellben történő futtatásával.

az group delete --name myresourcegroup

A parancs futtatása eltarthat néhány percig.

Gyakori kérdések

Létezik alternatív megoldás a szolgáltatásnév használatával történő üzembe helyezésre?

Mivel ebben az oktatóanyagban letiltotta az alapszintű hitelesítést, nem végezhet hitelesítést a háttérbeli SCM-webhelyen felhasználónévvel és jelszóval, és közzétételi profillal sem. Egyszerű szolgáltatásnév helyett OpenID Csatlakozás is használhat.

Mi történik, ha konfigurálom a GitHub Actions üzembe helyezését az App Service-ben?

Az Azure automatikusan létrehoz egy munkafolyamat-fájlt az adattárban. A kijelölt adattárban és ágban lévő új véglegesítések mostantól folyamatosan üzembe helyezhetők az App Service-alkalmazásban. A véglegesítéseket és az üzembe helyezéseket a Naplók lapon követheti nyomon.

Egy alapértelmezett munkafolyamat-fájl, amely közzétételi profilt használ az App Service-hitelesítéshez, hozzáadódik a GitHub-adattárhoz. Ezt a fájlt a <repo-name>/.github/workflows/ könyvtárban tekintheti meg.

Biztonságos- e a háttérrendszer SCM-jének nyilvánosan hozzáférhetőnek hagyása?

Ha zárolja az FTP- és SCM-hozzáférést, az biztosítja, hogy csak a Microsoft Entra által támogatott tagok férhessenek hozzá az SCM-végponthoz annak ellenére, hogy az nyilvánosan elérhető. Ez a beállítás biztosítja, hogy a háttérbeli webalkalmazás továbbra is biztonságos legyen.

Van mód az üzembe helyezésre anélkül, hogy egyáltalán megnyitná a háttérbeli SCM-helyet?

Ha aggódik az SCM-webhelyhez való nyilvános hozzáférés engedélyezése miatt, vagy szabályzatok korlátozzák, fontolja meg az App Service egyéb üzembe helyezési lehetőségeit, például a ZIP-csomagból való futtatást.

Hogyan helyezhetem üzembe ezt az architektúrát az ARM/Bicep használatával?

Az oktatóanyagban létrehozott erőforrások ARM/Bicep-sablonnal telepíthetők. A Bicep-sablonhoz csatlakoztatott alkalmazás lehetővé teszi egy biztonságos N szintű alkalmazásmegoldás létrehozását.

Az ARM/Bicep-sablonok üzembe helyezéséről az Erőforrások üzembe helyezése a Bicep és az Azure CLI használatával című témakörben olvashat.

Következő lépések