Kurz: Vytvoření zabezpečené N-vrstvé aplikace v Azure App Service

Mnoho aplikací má více než jednu komponentu. Můžete mít například front-end, který je veřejně přístupný a připojuje se k back-endovému rozhraní API nebo webové aplikaci. Back-endové prostředky se můžou připojit k databázi, účtu úložiště, trezoru klíčů, jinému virtuálnímu počítači nebo kombinaci těchto prostředků. Tato architektura je základem N-vrstvé aplikace. Je důležité, aby takové aplikace byly navrženy tak, aby chránily back-endové prostředky v co největší možné míře.

Tento kurz popisuje, jak nasadit zabezpečenou N-vrstvou aplikaci s front-endovou webovou aplikací, která se připojuje k jiné síťové izolované webové aplikaci. Veškerý provoz je v rámci vaší virtuální sítě Azure izolovaný pomocí integrace virtuální sítě a privátních koncových bodů. Podrobnější pokyny, které zahrnují další scénáře, najdete tady:

V tomto kurzu se naučíte:

  • Vytvoření virtuální sítě a podsítí pro integraci virtuální sítě služby App Service
  • Vytvoření privátních zón DNS a privátních koncových bodů
  • Konfigurace integrace virtuální sítě ve službě App Service
  • Zakázání základního ověřování ve službě App Service
  • Průběžné nasazování do uzamčené back-endové webové aplikace

Požadavky

Tento kurz používá dvě ukázkové Node.js aplikace hostované na GitHub. Pokud ještě účet GitHub nemáte, vytvořte si ho zdarma.

Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.

Pro absolvování tohoto kurzu potřebujete:

Kontrola architektury scénáře

Tento kurz ukazuje, jak nakonfigurovat architekturu znázorněnou v následujícím diagramu. Tento scénář představuje jednu z možných N-vrstvých konfigurací ve službě App Service. Koncepty popsané v tomto kurzu můžete použít k vytváření složitějších N-vrstvých aplikací.

Diagram architektury pro N-vrstvou službu App Service, včetně integrace virtuální sítě s front-endovou aplikací a privátním koncovým bodem v back-endu

  • Architektura má virtuální síť , která obsahuje dvě podsítě. Jedna podsíť je integrovaná s front-endovou webovou aplikací a druhá podsíť má privátní koncový bod pro back-endovou webovou aplikaci. Virtuální síť blokuje veškerý příchozí síťový provoz s výjimkou provozu, který cílí na integrovanou front-endovou aplikaci.

  • Front-endová webová aplikace je integrovaná do virtuální sítě a přístupná z veřejného internetu.

  • Back-endová webová aplikace je přístupná jenom prostřednictvím privátního koncového bodu ve virtuální síti.

  • Privátní koncový bod se integruje s back-endovou webovou aplikací a zpřístupňuje webovou aplikaci prostřednictvím privátní IP adresy.

  • Zóna Privátní DNS umožňuje překlad názvu DNS na IP adresu privátního koncového bodu.

Poznámka:

Ke konfiguraci integrace virtuální sítě a privátních koncových bodů potřebujete úroveň Basic úrovně Azure App Service nebo vyšší. Úroveň Free tyto funkce nepodporuje.

Scénář v tomto kurzu poskytuje následující chování:

  • Veřejný provoz do back-endové aplikace je zablokovaný.
  • Odchozí provoz ze služby App Service je směrován do virtuální sítě a může dosáhnout back-endové aplikace.
  • App Service může provést překlad DNS do back-endové aplikace.

Vytvoření dvou webových aplikací

Potřebujete dvě webové aplikace App Service, jednu pro front-end a jednu pro back-end. Aplikace mohou běžet ve stejné oblasti. Pokud chcete nastavit integraci virtuální sítě a pracovat s privátními koncovými body, použijte alespoň úroveň Basic úrovně Azure App Service. Integraci virtuální sítě a další nastavení nakonfigurujete později.

  1. Vytvořte skupinu prostředků pro správu všech prostředků pro účely tohoto kurzu.

    Zástupný symbol <resource-group> nastavte na název vaší nové skupiny prostředků, například zava-resources. <region-location> Nastavte zástupný symbol na oblast nové skupiny prostředků, například 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
    

    Další informace najdete v referenčních informacích k příkazu az group create .

  2. Vytvořte plán služby App Service pro vaše prostředky.

    <app-service-plan> Nastavte zástupný symbol na název nového plánu služby App Service, například zava-app-service-plan.

    Příklad v kurzu nastaví parametr --sku na P1V3 (Premium V3). Tuto hodnotu můžete použít nebo zadat jinou skladovou položku. SKU musí podporovat požadované síťové funkce pro tento kurz. Vyberte úroveň Basic nebo vyšší.

    # 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
    

    Další informace najdete v referenci k příkazu az appservice plan create.

  3. Vytvořte front-endové a back-endové webové aplikace.

    Ukázkový příklad vytvoří dvě ukázkové aplikace Node.js, jejichž verze jazyka modulu runtime je NODE:24-lts. Pokud dáváte přednost používání vlastních aplikací, nastavte hodnotu parametru --runtime<language-version> odpovídajícím způsobem. Můžete spustit příkaz az webapp list-runtimes pro zobrazení seznamu dostupných runtime verzí:

    az webapp list-runtimes
    

    <frontend-app-name> Nastavte zástupný symbol na název nové front-endové webové aplikace, například zava-frontend-app. Název musí být globálně jedinečný a musí se skládat z platných znaků (a-z, 0-9, -). Podobně nastavte zástupný text <backend-app-name> na název vaší nové backendové webové aplikace, například 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"
    

    Další informace najdete v referenčních informacích k příkazu az webapp create .

Vytvoření síťové infrastruktury

Infrastruktura virtuální sítě se skládá z následujících prostředků:

  • Instance služby Azure Virtual Network
  • Podsíť pro integraci virtuální sítě služby App Service
  • Další podsíť privátního koncového bodu
  • Zóna Azure Privátní DNS
  • Privátní koncový bod
  1. Vytvořte virtuální síť Azure.

    <virtual-network-name> Nastavte zástupný symbol na název nové virtuální sítě, například zava-virtual-network. Název musí být globálně jedinečný.

    # 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
    

    Další informace najdete v referenčních informacích k příkazu az network vnet create .

  2. Vytvořte podsíť pro integraci virtuální sítě služby App Service.

    <network-integration-subnet> Nastavte zástupný symbol na název nové podsítě, která podporuje integraci virtuální sítě, například zava-integration-subnet.

    Pro App Service se doporučuje, aby podsíť pro integraci virtuální sítě měla blok CIDR o velikosti alespoň /26. /24 je více než dostačující. --delegations Microsoft.Web/serverfarms určuje, že podsíť je delegovaná pro integraci virtuální sítě služby App Service.

    # 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
    

    Další informace najdete v referenčních informacích k příkazu az network vnet subnet create .

  3. Vytvořte další podsíť pro privátní koncové body.

    <private-endpoint-subnet> Nastavte zástupný symbol na název nové podsítě, která podporuje privátní koncový bod, například 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
    

    U podsítí privátních koncových bodů je nutné zakázat zásady sítě privátních koncových bodů nastavením příznaku --disable-private-endpoint-network-policies na true. Další informace najdete v volitelných parametrech příkazu az network vnet subnet create .

    Poznámka:

    Příznak --private-endpoint-network-policies může brzy nahradit --disable-private-endpoint-network-policies příznak.

  4. Vytvořte zónu Azure Privátní DNS.

    Nastavte zástupný symbol <private-zone-name> na název nové zóny Privátní DNS, například 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
    

    Další informace najdete v referenčních informacích k příkazu az network vnet subnet create . Další informace o konfiguraci privátní zóny DNS najdete v článku Konfigurace zóny DNS služby Azure.

    Poznámka:

    Pokud na portálu Azure vytvoříte privátní koncový bod, automaticky se pro vaši konfiguraci vytvoří zóna Azure Privátní DNS. Pro procedurální konzistenci v tomto kurzu vytvoříte zónu Privátní DNS a privátní koncový bod samostatně pomocí Azure CLI.

  5. Propojte zónu Privátní DNS s virtuální sítí.

    <dns-link-name> Nastavte zástupný text na název nového odkazu DNS, například 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
    

    Další informace najdete v referenční dokumentaci k příkazu az network private-dns link vnet create.

  6. V podsíti privátního koncového bodu vaší virtuální sítě vytvořte privátní koncový bod pro vaši back-endovou webovou aplikaci.

    <private-endpoint-name> Nastavte zástupný symbol na název nového privátního koncového bodu pro vaši back-endovou webovou aplikaci, například zava-backend-endpoint. <service-connection-name> Nastavte zástupný symbol na název nového připojení služby, například 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
    

    Další informace najdete v referenčních informacích k příkazu az network private-endpoint create .

  7. Propojte privátní koncový bod se zónou privátního DNS pomocí skupiny zón DNS pro privátní koncový bod back-endové webové aplikace.

    <dns-zone-group-name> Nastavte zástupný symbol na název nové skupiny zón DNS, například zava-dns-zone-group. Skupina zón DNS pomáhá s automatickou aktualizací zóny Privátní DNS při aktualizaci privátního koncového bodu.

    # 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
    

    Další informace najdete v referenčních informacích k příkazu az network private-endpoint dns-zone-group create .

  8. Ověřte, že je odepřen přímý přístup k privátnímu koncovému bodu.

    Když pro aplikaci App Service vytvoříte privátní koncový bod, veřejný přístup se implicitně zakáže. Pokud se pokusíte získat přístup k back-endové webové aplikaci pomocí výchozí adresy URL, přístup se odepře.

    V prohlížeči zadejte výchozí adresu URL back-endové webové aplikace, například <backend-app-name>.azurewebsites.net.

    Zpráva prohlížeče indikuje, že přímý přístup byl odepřen:

    Snímek obrazovky se zprávou prohlížeče, když je zakázaný přímý přístup k back-endové aplikaci

    Další informace o omezeních přístupu ve službě App Service při použití privátních koncových bodů najdete v tématu Omezení přístupu ve službě Azure App Service.

Konfigurujte integraci virtuální sítě

Po vytvoření infrastruktury virtuální sítě můžete nastavit integraci virtuální sítě ve webové aplikaci front-endu. Integrace virtuální sítě umožňuje, aby odchozí provoz proudil přímo do virtuální sítě. Ve výchozím nastavení se do virtuální sítě směruje pouze místní provoz IP definovaný v protokolu RFC-1918 > Private Address Space . Tato úroveň směrování je to, co potřebujete k povolení privátních koncových bodů.

Povolte integraci virtuální sítě ve webové aplikaci front-endu. Následující příkaz předpokládá, že podsíť a webová aplikace jsou umístěné ve stejné skupině prostředků.

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

Další informace najdete v referenční dokumentaci k příkazu az webapp vnet-integration add.

Pokud chcete směrovat veškerý provoz do virtuální sítě, přečtěte si téma Správa směrování integrace virtuální sítě. Směrování veškerého provozu se dá použít také v případě, že chcete směrovat internetový provoz přes virtuální síť, například přes Azure Virtual Network NAT nebo Azure Firewall.

Povolení nasazení do back-endové webové aplikace

Vzhledem k tomu, že vaše back-endová webová aplikace není veřejně přístupná, musíte svému nástroji pro průběžné nasazování povolit přístup k vaší aplikaci tím, že web SCM veřejně zpřístupníte z internetu. Samotná hlavní webová aplikace může dál odepřít veškerý provoz.

  1. Povolte veřejný přístup pro back-endovou webovou aplikaci.

    az webapp update --resource-group $resourceGroupName --name $backendAppName --set publicNetworkAccess=Enabled
    
  2. Nastavte akci pro neshodující se pravidla pro hlavní webovou aplikaci tak, aby blokovala veškerý provoz.

    Toto nastavení zakazuje veřejný přístup k hlavní webové aplikaci, i když je obecné nastavení přístupu k aplikaci nastavené tak, aby umožňovalo veřejný přístup.

    az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \
       --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Deny
    
  3. Nastavte akci pro neodpovídající pravidla pro web SCM na povolení veškerého provozu.

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

Omezení přístupu k FTP a SCM

Vzhledem k tomu, že je back-endová lokalita SCM veřejně přístupná, musíte ji uzamknout s lepším zabezpečením.

  1. Zakažte přístup FTP pro front-endovou i back-endovou webovou aplikaci:

    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. Zakažte u obou webových aplikací přístup pomocí základního ověřování k portům WebDeploy a webům SCM a rozšířených nástrojů:

    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
    

Když zakážete základní ověřování ve službě App Service, omezíte přístup ke koncovým bodům FTP a SCM uživatelům zaregistrovaným v Microsoft Entra ID. Tato akce dále zabezpečuje vaše aplikace. Další informace o zakázání základního ověřování, včetně testování a monitorování přihlášení, najdete v tématu Zakázání základního ověřování ve službě App Service.

Konfigurace průběžného nasazování pomocí GitHub Actions

Pro účely tohoto postupu potřebujete dvě aplikace, které jsou připravené k nasazení do front-endu a back-endových aplikací služby App Service. Pro přístup k webovým aplikacím potřebujete instanční objekt a průběžné nasazování pomocí GitHub Actions.

Získání webových aplikací pro testování nasazení

Úložiště Azure na GitHub poskytují ukázkové Node.js aplikace pro nasazení.

  1. V prohlížeči přejděte do ukázkové aplikace Node.js Back-end.

    Vytvořte fork úložiště GitHub, abyste měli vlastní kopii, abyste mohli provádět změny. Tato ukázka vytvoří aplikaci Hello World. Tuto aplikaci nasadíte do back-endové webové aplikace.

  2. Stejný postup opakujte pro ukázkovou aplikaci Node.js Front-end.

    Vytvořte fork úložiště GitHub, abyste měli vlastní kopii, abyste mohli provádět změny. Tato ukázka vytvoří webovou aplikaci, která načte a zobrazí obsah adresy URL. Tuto aplikaci nasadíte do front-endové webové aplikace.

Nakonfigurujte služebního principála

Pro front-endovou webovou aplikaci a back-endovou webovou aplikaci potřebujete instanční objekt služby.

  1. Vytvořte service principal.

    Nastavte zástupný symbol <service-principal-name> na název vašeho nového instančního objektu služby, například zava-service-principal.

    Nahraďte ostatní <placeholder> hodnoty parametrů informacemi o vlastních prostředcích.

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

    Výstupem je objekt JSON s přihlašovacími údaji pro přiřazení role, které poskytují přístup k vašim aplikacím App Service.

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

    JSON obsahuje heslo vašeho instančního objektu služby, které je viditelné pouze v tomto okamžiku.

    Tip

    Osvědčeným postupem je udělit minimální přístup. V tomto příkladu je rozsah omezen jenom na aplikace, ne na celou skupinu prostředků.

  2. Zkopírujte objekt JSON, abyste měli zaznamenaný název instančního objektu služby.

  3. Zadejte pověření hlavní služby k operaci Přihlášení do Azure jako součást pracovního postupu akce GitHub.

    Uložte přihlašovací údaje jako GitHub Secrets, na které odkazuje váš workflow.

    1. V prohlížeči přejděte do forku úložiště back-endové aplikace Node.js na GitHub.

    2. Přejděte na Nastavení>Zabezpečení>Tajné kódy a proměnné>Akce.

    3. Vyberte Nový tajný klíč úložiště a vytvořte tajný kód pro každé z následujících nastavení.

      Použijte hodnoty z výstupu JSON.

      Nastavení Hodnota 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. Tento postup opakujte pro forkované úložiště pro front-endovou Node.js aplikaci na GitHub.

Nastavení průběžného nasazování pomocí GitHub Actions

Průběžné nasazování můžete nastavit pomocí GitHub Actions.

  1. Na portálu Azure přejděte na stránku Přehled vaší front-endové webové aplikace.

  2. V nabídce vlevo vyberte Centrum nasazení>.

  3. Na kartě Nastavení nastavte možnost Zdroj na GitHub:

    Screenshot, který ukazuje, jak zvolit zdroj nasazení pro front-endovou webovou aplikaci na webu Azure portal.

  4. Pokud nasazujete z GitHubu poprvé, vyberte Autorizovat a postupujte podle pokynů k autorizaci. Pokud chcete nasadit z jiného úložiště uživatele, vyberte Změnit účet.

  5. Po autorizaci účtu Azure s GitHubem vyberte Organizaci, Repository a Branch, pro které chcete nakonfigurovat CI/CD. Pokud nemůžete najít organizaci nebo úložiště, možná budete muset povolit další oprávnění pro GitHub. Další informace najdete v tématu Správa přístupu uživatelů k úložištím vaší organizace.

    Nastavení Hodnota
    Organizace <your-GitHub-organization>
    Repository <forked-repository-name>
    Větev hlavní
  6. Zvolte Uložit.

  7. Tento postup opakujte pro vaši back-endovou webovou aplikaci a odpovídající rozvětvované úložiště.

Ověření připojení a přístupu k aplikacím

Teď jste připraveni zkontrolovat připojení a přístup k front-endovým a back-endovým webovým aplikacím.

  1. Zkuste přejít přímo na back-endovou webovou aplikaci s její adresou URL. https://<backend-app-name>.azurewebsites.net

    Měla by se zobrazit následující zpráva prohlížeče:

    Snímek obrazovky se zprávou prohlížeče, když je zakázaný přímý přístup k back-endové aplikaci

    Pokud se k aplikaci dostanete , zkontrolujte konfiguraci:

    • Ověřte, že je privátní koncový bod správně nastavený.

    • Ověřte, že jsou omezení přístupu pro vaši aplikaci nastavená tak, aby odepřela veškerý provoz pro hlavní webovou aplikaci.

  2. Teď zkuste přejít přímo na front-endovou webovou aplikaci s její adresou URL. https://<frontend-app-name>.azurewebsites.net

    Po úspěšném připojení se zobrazí následující stránka:

    Snímek obrazovky úspěšného připojení k front-endové aplikaci spuštěné v prohlížeči

  3. Do pole Adresa URL zadejte adresu URL back-endové webové aplikace, https://<backend-app-name>.azurewebsites.net a vyberte možnost Načíst.

    Pokud připojení nastavíte správně, stránka se aktualizuje, aby se zobrazil obsah zprávy z back-endové webové aplikace:

    Snímek obrazovky s obsahem prohlížeče po pokusu front-endové aplikace o přístup k back-endové aplikaci

    Veškerý odchozí provoz z front-endové webové aplikace směruje přes virtuální síť. Vaše front-endová webová aplikace se bezpečně připojuje k back-endové webové aplikaci prostřednictvím privátního koncového bodu.

    Pokud u připojení něco není v pořádku, ve výstupu se zobrazí zpráva Chyba 403 – Zakázáno .

Vytvoření relace SSH a otevření vzdáleného prostředí

Ověřte pomocí SSH připojení k instanci frontendu, že frontendová webová aplikace komunikuje s backendovou webovou aplikací přes privátní linku.

  1. Vytvořte relaci SSH s webovým kontejnerem vaší aplikace a otevřete vzdálené prostředí v prohlížeči:

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

    Další informace najdete v referenčních informacích k příkazu az webapp ssh .

  2. Po otevření příkazového řádku v prohlížeči ověřte pomocí privátní IP adresy své backendové webové aplikace, že je vaše backendová webová aplikace dostupná.

    V následujících příkazech nahraďte hodnoty parametru <placeholder> informacemi o vlastním prostředku.

    1. Spusťte příkaz nslookup:

      nslookup <backend-app-name>.azurewebsites.net
      
    2. Spuštěním curl příkazu znovu ověřte obsah webu:

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

    Snímek obrazovky relace SSH s instancí front-endu ukazující, jak ověřit připojení aplikací k back-endu

    Příkaz nslookup by se měl přeložit na privátní IP adresu vaší back-endové webové aplikace. Privátní IP adresa by měla být adresa z vaší virtuální sítě.

    Privátní IP adresu můžete potvrdit na portálu Azure. Přejděte na stránku Nastavení>sítě pro vaši back-endovou webovou aplikaci.

    Snímek obrazovky zobrazující stránku Sítě webové aplikace na portálu Azure se zvýrazněnou příchozí IP adresou.

  3. Opakujte stejné nslookup příkazy a curl příkazy z jiného terminálu (jedna, která není relací SSH ve vašich front-endových instancích).

    Snímek obrazovky externího terminálu s příkazy nslookup a curl pro back-endovou webovou aplikaci zobrazující přístup je zakázáno.

    Příkaz nslookup vrátí veřejnou IP adresu back-endové webové aplikace. Protože veřejný přístup k back-endové webové aplikaci je zakázaný, pokud se pokusíte připojit k veřejné IP adrese, zobrazí se chyba odepření přístupu. Tato chyba znamená, že web není přístupný z veřejného internetu, což je zamýšlené chování.

    Příkaz nslookup se nepřekládá na privátní IP adresu, protože adresa se dá přeložit jenom z virtuální sítě prostřednictvím zóny privátního DNS. Ve virtuální síti je pouze front-endová webová aplikace. Pokud se pokusíte spustit curl příkaz v back-end webové aplikaci z externího terminálu, vrácený kód HTML obsahuje zprávu Chyba 403 Zakázáno – Webová aplikace, ke které jste se pokusili připojit, přístup zablokoval. Některé terminály také zobrazují stejný kód HTML jako chybová stránka vrácená při pokusu o přímý přístup k back-endové webové aplikaci.

Vyčistěte zdroje

V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud předpokládáte, že už tyto prostředky nebudete potřebovat, odstraňte skupinu prostředků spuštěním následujícího příkazu ve službě Cloud Shell:

Nahraďte hodnotu parametru <placeholder> informacemi o vašem vlastním prostředku:

az group delete --name <resource-group>

Provedení tohoto příkazu může trvat i několik minut.

Nejčastější dotazy

V tomto kurzu jste nasadili základní infrastrukturu pro podporu zabezpečené N-vrstvé webové aplikace. App Service poskytuje funkce, které vám pomůžou zajistit spouštění aplikací, které dodržují osvědčené postupy a doporučení zabezpečení.

Tato část obsahuje odpovědi na nejčastější dotazy, které vám můžou pomoct dále zabezpečit aplikace a nasazovat a spravovat prostředky podle osvědčených postupů.

Nasazení jinými metodami než pomocí instančního objektu služby

V tomto kurzu jste zakázali základní ověřování. Vůči back-endovému webu SCM se nemůžete ověřit pomocí uživatelského jména a hesla ani pomocí publikačního profilu. Místo ověřování pomocí instančního objektu však můžete použít přihlašovací údaje OpenID Connect.

Konfigurace nasazení GitHub Actions ve službě App Service

Azure automaticky vygeneruje soubor pracovního postupu v úložišti. Nová potvrzení ve vybraném úložišti a větvi se průběžně nasazují do vaší aplikace App Service. Potvrzení a nasazení můžete sledovat na kartě Logs v GitHub.

Do úložiště GitHub se přidá výchozí soubor pracovního postupu, který používá profil publikování k ověření ve službě App Service. Tento soubor můžete zobrazit tak, že přejdete do <repo-name>/.github/workflows/ adresáře.

Potvrzení bezpečného veřejného přístupu k back-endovému webu SCM

Když omezíte přístup k FTP a SCM, můžete zajistit, aby ke koncovému bodu SCM měly přístup pouze objekty zabezpečení podporované službou Microsoft Entra, i když je tento koncový bod veřejně přístupný. Toto nastavení vám pomůže ujistit se, že vaše back-endová webová aplikace je stále zabezpečená.

Nasazení bez otevřené back-endové lokality SCM

Pokud máte obavy o povolení veřejného přístupu k webu SCM nebo máte omezení zásad, zvažte další možnosti nasazení služby App Service, jako je spuštění z balíčku ZIP.

Nasazení této architektury pomocí šablony

Prostředky, které jste vytvořili v tomto kurzu, můžete nasadit pomocí šablony Azure Resource Manager (šablony ARM) nebo šablony Bicep. Aplikace připojená k souboru Bicep pro back-endovou webovou aplikaci umožňuje vytvořit zabezpečené řešení vícevrstvé aplikace.

Informace o nasazení šablon ARM a Bicep se dozvíte v Nasazení souborů Bicep pomocí Azure CLI.