Oktatóanyag: Biztonságos N szintű alkalmazás létrehozása Azure App Service

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

Ez az oktatóanyag bemutatja, 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. A Azure Virtual Network minden forgalmat elkülönít a Virtual Network integráció és private végpontok használatával. Az egyéb forgatókönyveket is tartalmazó átfogóbb útmutatásért lásd:

Ebben az útmutatóban Ön:

  • Virtuális hálózat és alhálózatok létrehozása az App Service virtuális hálózati integrációjához
  • Privát DNS-zónák és privát végpontok létrehozása
  • Virtuális hálózati integráció konfigurálása az App Service-ben
  • Alapszintű hitelesítés letiltása az App Service-ben
  • Folyamatos üzembe helyezés zárolt háttérbeli webalkalmazásban

Előfeltételek

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

Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.

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

A forgatókönyv architektúrájának áttekintése

Ez az oktatóanyag bemutatja, hogyan konfigurálhat egy architektúrát, amely az alábbi ábrán látható. Ez a forgatókönyv az App Service egyik lehetséges N szintű konfigurációját jelöli. Az oktatóanyagban ismertetett fogalmak segítségével összetettebb N szintű alkalmazásokat hozhat létre.

Az N szintű App Service architektúrájának diagramja, beleértve a virtuális hálózati integrációt egy előtérbeli alkalmazással és a háttérrendszer privát végpontjával.

  • Az architektúra két alhálózatot tartalmazó virtuális hálózattal rendelkezik. Az egyik alhálózat integrálva van az előtérbeli webalkalmazással, a másik alhálózat pedig egy privát végponttal a háttér-webalkalmazáshoz. A virtuális hálózat blokkolja az összes bejövő hálózati forgalmat, kivéve az integrált előtéralkalmazást célként szolgáló forgalmat.

  • Egy előtérbeli webalkalmazás integrálva van a virtuális hálózatba, és elérhető a nyilvános internetről.

  • A háttérbeli webalkalmazások csak a virtuális hálózat privát végpontja révén érhetők el.

  • A privát végpontok integrálhatók a háttér-webalkalmazással, és a webalkalmazást egy privát IP-címen keresztül teszik elérhetővé.

  • A saját DNS zóna lehetővé teszi a DNS-név feloldását a privát végpont IP-címére.

Megjegyzés

A virtuális hálózati integráció és a privát végpontok konfigurálásához szükség van a Basic Azure App Service vagy magasabb szintre. Az ingyenes szint nem támogatja ezeket a funkciókat.

Az oktatóanyagban szereplő forgatókönyv a következő viselkedést mutatja be:

  • A háttéralkalmazás nyilvános forgalma le van tiltva.
  • Az App Service-ből a virtuális hálózatra irányuló kimenő forgalom elérheti a háttéralkalmazást.
  • Az App Service dns-feloldásokat hajthat végre a háttéralkalmazásban.

A két webalkalmazás létrehozása

Két App Service-webalkalmazásra van szüksége, egyet az előtérhez, egyet pedig a háttérrendszerhez. Az alkalmazások ugyanazon a régióban futtathatók. A virtuális hálózati integráció beállításához és a privát végpontokkal való munkához használja legalább a Basic Azure App Service szintjét. Később konfigurálhatja a virtuális hálózati integrációt és más beállításokat.

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

    Állítsa be a <resource-group> helyőrzőt az új erőforráscsoport nevére, például zava-resources. Állítsa be a <region-location> helyőrzőt az új erőforráscsoport régiójára, például eastus.

    # 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 $regionLocation
    

    További információért lásd a az group create parancs referenciát.

  2. Hozzon létre egy App Service-csomagot az erőforrásaihoz.

    Állítsa be a <app-service-plan> helyőrzőt az új App Service-csomag nevére, például zava-app-service-plan.

    Az oktatóanyag példája a(z) --sku paramétert P1V3 értékre (Premium V3) állítja be. Ezt az értéket használhatja, vagy megadhat egy másik termékváltozatot. Az SKU-nak támogatnia kell az oktatóanyaghoz szükséges hálózati funkciókat. Válassza ki az alapszintű vagy magasabb szintet.

    # 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 P1V3
    

    További információért lásd az az appservice plan create parancsreferenciát.

  3. Hozza létre az előtérbeli és a háttérbeli webalkalmazásokat.

    Az oktatóanyag példája két minta Node.js-alkalmazást hoz létre, amelyekben a futtatókörnyezet nyelvi verziója NODE:24-lts. Ha inkább saját alkalmazásokat szeretne használni, ennek megfelelően állítsa be a --runtime paraméter <language-version> értékét. Az elérhető futtatókörnyezetek listájához futtathatja az webapp list-runtimes a parancsot:

    az webapp list-runtimes
    

    Állítsa be a <frontend-app-name> helyőrzőt az új előtér-webalkalmazás nevére, például zava-frontend-app. A névnek globálisan egyedinek kell lennie, és érvényes karakterekből (a-z, , 0-9). - Hasonlóképpen állítsa a <backend-app-name> helyőrzőt az új háttérbeli webalkalmazás nevére, például zava-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"
    

    További információért tekintse meg a webapp create parancsreferenciát.

A hálózati infrastruktúra létrehozása

A virtuális hálózati infrastruktúra a következő erőforrásokból áll:

  • Egy Azure Virtual Network-példány
  • Az App Service virtuális hálózati integrációjának alhálózata
  • Egy másik alhálózat a privát végponthoz
  • Egy Azure saját DNS zóna
  • Privát végpont
  1. Azure-beli virtuális hálózat létrehozása.

    Állítsa be a <virtual-network-name> helyőrzőt az új virtuális hálózat nevére, például zava-virtual-network. A névnek globálisan egyedinek kell lennie.

    # 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/16
    

    További információkért lásd az az network vnet create parancshivatkozást.

  2. Hozzon létre egy alhálózatot az App Service virtuális hálózati integrációjához.

    Állítsa a <network-integration-subnet> helyőrzőt az új alhálózat nevére, amely támogatja a virtuális hálózat integrációját, például zava-integration-subnet.

    Az App Service esetében ajánlott, hogy a virtuális hálózati integrációs alhálózat legalább /26 méretű CIDR-blokkal rendelkezzen. /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.

    # 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 false
    

    További információért lásd a(z) az network vnet subnet create parancsreferenciát.

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

    Állítsa a <private-endpoint-subnet> helyőrzőt az új alhálózat nevére, amely támogatja a privát végpontot, például zava-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 true
    

    A privát végpontok alhálózatai esetében le kell tiltania a privát végpontokra vonatkozó hálózati szabályzatokat úgy, hogy a --disable-private-endpoint-network-policies jelzőt true értékre állítja. További információ: Az az network vnet subnet create parancs választható paraméterei.

    Megjegyzés

    A --private-endpoint-network-policies jelölő hamarosan lecserélheti a jelölőt --disable-private-endpoint-network-policies .

  4. Hozza létre a Azure saját DNS zónát.

    Állítsa a <private-zone-name> helyőrzőt az új saját DNS zóna nevére, például zava-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 $privateDNSZone
    

    További információért lásd az az network vnet subnet create parancs referenciáját. A saját DNS zóna konfigurálásáról további információt a Azure szolgáltatás DNS-zóna konfigurációjában talál.

    Megjegyzés

    Ha a privát végpontot a Azure portálon hozza létre, a rendszer automatikusan létrehoz egy Azure saját DNS zónát a konfigurációhoz. Ebben az oktatóanyagban az eljárási konzisztencia érdekében a saját DNS zónát és a privát végpontot külön kell létrehoznia a Azure CLI használatával.

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

    Állítsa a <dns-link-name> helyőrzőt az új DNS-hivatkozás nevére, például zava-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 False
    

    További információkért lásd a(z) az network private-dns link vnet create parancsreferenciát.

  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.

    Állítsa a <private-endpoint-name> helyőrzőt a háttér-webalkalmazás új privát végpontjának nevére, például zava-backend-endpoint. Állítsa a <service-connection-name> helyőrzőt az új szolgáltatáskapcsolat nevére, például zava-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 $privateEndpointSubnet
    

    További információkért lásd a az network private-endpoint create parancshivatkozását.

  7. Csatolja a privát végpontot a saját DNS zónához a háttéralkalmazás privát végpontjának DNS-zónacsoportjával.

    Állítsa be a <dns-zone-group-name> helyőrzőt az új DNS-zónacsoport nevére, például zava-dns-zone-group. A DNS-zónacsoport segít a saját DNS zóna automatikus frissítésében a privát végpont frissítésekor.

    # 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 $privateDNSZone
    

    További információért lásd az az network private-endpoint dns-zone-group create parancs referenciáját.

  8. Ellenőrizze, hogy a privát végponthoz való közvetlen hozzáférés megtagadva van-e.

    Amikor privát végpontot hoz létre egy App Service-alkalmazáshoz, a nyilvános hozzáférés implicit módon le lesz tiltva. Ha az alapértelmezett URL-cím használatával próbál hozzáférni a háttérbeli webalkalmazáshoz, a rendszer megtagadja a hozzáférést.

    Egy böngészőben adja meg a háttér-webalkalmazás alapértelmezett URL-címét, például <backend-app-name>.azurewebsites.net.

    A böngészőüzenet azt jelzi, hogy a közvetlen hozzáférés megtagadva:

    Képernyőkép a böngészőüzenetről, ha a háttéralkalmazáshoz való közvetlen hozzáférés tiltott.

    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.

A virtuális hálózat integrációjának konfigurálása

A virtuális hálózati infrastruktúra létrehozása után beállíthatja a virtuális hálózati integrációt az előtérbeli webalkalmazásban. 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 > Private Address Space protokoll útvonalán definiált helyi IP-forgalom van meghatározva a virtuális hálózathoz. Ez az útválasztási szint szükséges a privát végpontok engedélyezéséhez.

Engedélyezze a virtuális hálózati integrációt az előtérbeli webalkalmazásban. Az alábbi parancs feltételezi, hogy az alhálózat és a webalkalmazás ugyanabban az erőforráscsoportban található.

az webapp vnet-integration add --resource-group $resourceGroupName --name $frontendAppName --vnet $virtualNetworkName --subnet $networkIntegrationSubnet

További információért lásd az az webapp vnet-integration add parancshivatkozást.

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 átirányítá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 Virtual Network NAT vagy Azure Firewall.

Üzembe helyezés engedélyezése a háttérbeli webalkalmazásban

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 az internetről. 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 $resourceGroupName --name $backendAppName --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 $resourceGroupName --name $backendAppName --namespace Microsoft.Web \
       --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Deny
    
  3. Állítsa be az SCM-webhely nem egyező szabályához tartozó műveletet úgy, hogy az minden forgalmat engedélyezzen.

    az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \
       --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
    

FTP- és SCM-hozzáférés korlátozása

Mivel a háttérbeli SCM-webhely 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ás esetében:

    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=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:

    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
    

Ha letiltja az alapszintű hitelesítést az App Service-ben, korlátozza az FTP- és SCM-végpontok elérését az Microsoft Entra ID regisztrált felhasználók számára. Ez a művelet tovább védi az alkalmazásokat. További információ az alapszintű hitelesítés letiltásáról, beleértve a bejelentkezések tesztelését és monitorozását: Az alapszintű hitelesítés letiltása az App Service-ben.

Folyamatos telepítés konfigurálása GitHub Actionsszel

Ehhez az eljáráshoz két olyan alkalmazásra van szüksége, amelyek készen állnak az App Service előtérbeli és háttéralkalmazásaiban való üzembe helyezésre. A webalkalmazások eléréséhez egy szolgáltatásnévre és GitHub Actions használatával végzett folyamatos üzembe helyezésre van szükség.

Webalkalmazások lekérése üzembehelyezési teszteléshez

A GitHub Azure minták adattárai Node.js mintaalkalmazásokat biztosítanak az üzembe helyezéshez.

  1. Egy böngészőben nyissa meg a Node.js háttéralkalmazást.

    Ágazzon el a GitHub-tárhelyről annak érdekében, hogy saját másolattal rendelkezzen, amelyben módosításokat végezhet. Ez a minta egy "„Helló világ!” alkalmazás" alkalmazást hoz létre. Ezt az alkalmazást a háttér-webalkalmazásban helyezheti üzembe.

  2. Ismételje meg ugyanezt a folyamatot a Node.js Előtérbeli mintaalkalmazás esetében.

    Ágazzon el a GitHub-tárhelyről annak érdekében, hogy saját másolattal rendelkezzen, amelyben módosításokat végezhet. Ez a minta létrehoz egy webalkalmazást, amely lekéri és megjeleníti az URL-cím tartalmát. Ezt az alkalmazást az előtérbeli webalkalmazásban helyezheti üzembe.

A szolgáltatási főazonosító konfigurálása

Szüksége van egy szolgáltatásnévre az előtéri webalkalmazásához és a háttérwebalkalmazásához.

  1. Hozzon létre egy szolgáltatási főszereplőt.

    Állítsa be a <service-principal-name> helyőrzőt az új szolgáltatásnév nevére, például zava-service-principal.

    Cserélje le a többi <placeholder> paraméterértéket a saját erőforrásaira vonatkozó információkra.

    # 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>
    

    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.

    {
      "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"
    }
    

    A JSON tartalmazza a szolgáltatásnév-azonosító jelszavát, amely csak ebben a pillanatban látható.

    Jótanács

    Ajánlott minimális hozzáférést biztosítani. Ebben a példában a hatókör csak az alkalmazásokra korlátozódik, nem a teljes erőforráscsoportra.

  2. Másolja ki a JSON-objektumot, hogy feljegyezhesse a szolgáltatásnévazonosítót.

  3. Adja meg a szolgáltatásfelelősi objektum hitelesítő adatait az Azure bejelentkezés művelet részeként a GitHub Akció munkafolyamatában.

    Tárolja a hitelesítő adatokat GitHub-secretsként, amelyekre a munkafolyamat hivatkozik.

    1. Egy böngészőben nyissa meg a Node.js-alapú háttéralkalmazás GitHubon található elágaztatott tárolóját.

    2. Lépjen a Beállítások>biztonsági>titkos kulcsok és változók>műveletek lapra.

    3. Válassza az Új tárház titkos kód lehetőséget, és hozzon létre egy titkos kulcsot az alábbi beállítások mindegyikéhez.

      Használja a JSON-kimenet értékeit.

      Beállítás Érték Example
      AZURE_CLIENT_ID <application/client-id> 00001111-aaaa-2222-bbbb-3333cccc4444
      AZURE_TENANT_ID <tenant-id> aaaabbbb-6666-cccc-7777-dddd8888eeee
      AZURE_SUBSCRIPTION_ID <subscription-id> cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a
    4. Ismételje meg ezt a folyamatot a frontend Node.js-alkalmazás GitHubon lévő forkolt tárolójához is.

Állítsa be a folyamatos üzembe állítást a GitHub Actions-szal

A folyamatos üzembe helyezést a GitHub Actions állíthatja be.

  1. A Azure portálon nyissa meg az előtér-webalkalmazás Overview lapját.

  2. A bal oldali menüben válassza az Üzembehelyezési>központ lehetőséget.

  3. A Beállítások lapon állítsa a Forrás beállítást GitHub értékre.

    Képernyőkép, amely bemutatja, hogyan választható ki az előtérbeli webalkalmazás üzembe helyezési forrása az Azure Portalon.

  4. 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ó tárházából szeretne üzembe helyezni, válassza a Fiók módosítása lehetőséget.

  5. Miután engedélyezte Azure-fiókját a GitHubhoz, válassza ki a Organization, Repository és a Branch lehetőséget a CI/CD konfigurálásához. Ha nem talál szervezetet vagy adattárat, lehetséges, hogy további engedélyeket kell engedélyeznie a GitHub. További információ: A szervezet adattáraihoz való felhasználói hozzáférés kezelése.

    Beállítás Érték
    Organizáció <your-GitHub-organization>
    Repository <forked-repository-name>
    Fiók
  6. Válassza a Mentés lehetőséget.

  7. Ismételje meg ezt a folyamatot az Ön háttérwebalkalmazása és a hozzá tartozó leforkolt adattár esetében.

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

Most már készen áll az előtér- és háttérbeli webalkalmazások kapcsolatainak és hozzáférésének ellenőrzésére.

  1. Próbáljon meg közvetlenül a háttérbeli webalkalmazásban böngészni annak URL-címével. https://<backend-app-name>.azurewebsites.net

    A következő böngészőüzenetnek kell megjelennie:

    Képernyőkép a böngészőüzenetről, ha a háttéralkalmazáshoz való közvetlen hozzáférés tiltott.

    Ha el tudja érni az alkalmazást, ellenőrizze a konfigurációt:

    • Ellenőrizze, hogy a privát végpont megfelelően van-e beállítva.

    • Győződjön meg arról, 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.

  2. Most próbálja meg közvetlenül a frontend webalkalmazást a saját URL-címén, https://<frontend-app-name>.azurewebsites.net, megnyitni.

    Ha a kapcsolat sikeres, a következő oldal jelenik meg:

    Képernyőkép a böngészőben futó előtéralkalmazással való sikeres kapcsolatról.

  3. Az URL-mezőbe írja be a háttér-webalkalmazás URL-címét, https://<backend-app-name>.azurewebsites.net és válassza a Beolvasás lehetőséget.

    Ha megfelelően állítja be a kapcsolatokat, a lap frissül, hogy megjelenjen az üzenet tartalma a háttér webalkalmazásból:

    Képernyőkép a böngésző tartalmáról, miután az előtéralkalmazás megkísérel hozzáférni a háttéralkalmazáshoz.

    Az előtérbeli webalkalmazásból érkező összes kimenő forgalom a virtuális hálózaton keresztül halad á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 nincs rendben a kapcsolataival, a kimenetben a 403-as hiba – Tiltott üzenet jelenik meg.

SSH-kapcsolat létesítése és távoli parancsértelmező megnyitása

Ellenőrizze egy frontendpéldányra SSH-val csatlakozva, hogy a frontend webalkalmazás a privát kapcsolaton keresztül eléri-e a backend webalkalmazást.

  1. Nyisson SSH-munkamenetet az alkalmazás webes konténeréhez, és nyisson meg egy távoli parancssori felületet a böngészőben:

    az webapp ssh --resource-group $resourceGroupName --name $frontendAppName
    

    További információkért tekintse meg az az webapp ssh parancsreferenciáját.

  2. Miután megnyílik a parancsértelmező a böngészőben, a háttéralkalmazás privát IP-címét használva győződjön meg arról, hogy a háttéralkalmazás elérhető-e.

    Az alábbi parancsokban cserélje le a <placeholder> paraméterértékeket a saját erőforrás adataira.

    1. Futtassa a nslookup következő parancsot:

      nslookup <backend-app-name>.azurewebsites.net
      
    2. Futtassa a parancsot a curl webhely tartalmának ismételt ellenőrzéséhez:

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

    Képernyőkép egy előtérpéldány SSH-munkamenetéről, amely bemutatja, hogyan érvényesítheti az alkalmazáskapcsolatokat a háttérrendszerrel.

    A nslookup parancsnak 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ét a Azure portálon ellenőrizheti. Nyissa meg a háttér-webalkalmazás Beállítások>hálózatkezelési lapját.

    Screenshot, amely egy webalkalmazás hálózati oldalát jeleníti meg a Azure portálon a bejövő IP-cím kiemelésével.

  3. Ismételje meg ugyanezt nslookup és curl parancsokat egy másik terminálból (amely nem SSH-munkamenet az előtérbeli példányokon).

    Képernyőkép a háttér-webalkalmazás nslookup és curl parancsait futtató külső terminálról, amelyen a hozzáférés tiltott.

    A nslookup parancs a háttér-webalkalmazás nyilvános IP-címét adja vissza. Mivel a háttérbeli webalkalmazás nyilvános elérése le van tiltva, ha megpróbálja elérni a nyilvános IP-címet, „Hozzáférés megtagadva” hibaüzenetet kap. Ez a hiba azt jelenti, hogy a webhely nem érhető el a nyilvános internetről, ami a kívánt viselkedés.

    A nslookup parancs nem oldható fel a privát IP-címre, mert a cím 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 található a virtuális hálózaton belül. Ha a curl parancsot a külső terminálról próbálja futtatni a háttér-webalkalmazáson, a visszaadott HTML a 403-as hibaüzenetet tartalmazza, tiltott – Az elérni próbált webalkalmazás letiltotta a hozzáférést. Egyes terminálok ugyanazt a HTML-t jelenítik meg, mint a háttér-webalkalmazás közvetlen elérésekor visszaadott hibalap.

Erőforrások tisztí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.

Cserélje le a <placeholder> paraméter értékét a saját erőforrás adataira:

az group delete --name <resource-group>

A parancs végrehajtása több percig is eltarthat.

Gyakori kérdések

Ebben az oktatóanyagban üzembe helyezett egy alapinfrastruktúrát egy biztonságos N szintű webalkalmazás támogatásához. Az App Service olyan funkciókat biztosít, amelyekkel biztosítható, hogy olyan alkalmazásokat futtasson, amelyek a biztonsági ajánlott eljárásokat és javaslatokat követik.

Ez a szakasz válaszokat tartalmaz a gyakori kérdésekre, amelyek segíthetnek az alkalmazások további védelmében, valamint az erőforrások ajánlott eljárások szerinti üzembe helyezésében és kezelésében.

Üzembe helyezés a service principaltól eltérő módszerekkel

Ebben az oktatóanyagban letiltotta az alapszintű hitelesítést. A háttérrendszerbeli SCM-webhelyen nem végezhet hitelesítést felhasználónévvel és jelszóval, illetve közzétételi profillal. Azonban a szolgáltatásnév használatával történő hitelesítés helyett használhatja az OpenID Connect hitelesítő adatait.

GitHub Actions üzembe helyezés konfigurálása az App Service-ben

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

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.

A háttérrendszerbeli SCM-webhely biztonságos nyilvános hozzáférésének megerősítése

Ha lezárja az FTP- és SCM-hozzáférést, akkor biztosíthatja, hogy csak a Microsoft Entra által kezelt identitások férhessenek hozzá az SCM-végponthoz, annak ellenére, hogy a végpont nyilvánosan elérhető. Ez a beállítás segít megnyugtatni, hogy a háttérbeli webalkalmazás továbbra is biztonságos.

Üzembe helyezés nyílt háttérrendszerbeli SCM-hely nélkül

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

Az architektúra üzembe helyezése sablonnal

Az oktatóanyagban létrehozott erőforrások Azure Resource Manager sablon (ARM-sablon) vagy Bicep sablon használatával telepíthetők. A háttérbeli webalkalmazáshoz kapcsolódó Bicep-fájl lehetővé teszi egy biztonságos, többrétegű alkalmazásmegoldás létrehozását.

Az ARM- és Bicep-sablonok üzembe helyezéséről a A Bicep fájlok üzembe helyezése a Azure CLI című témakörben olvashat.