Öğretici: Azure Uygulaması Hizmetinde güvenli bir n katmanlı uygulama oluşturma

Birçok uygulamanın tek bir bileşenden fazlası vardır. Örneğin, genel olarak erişilebilen ve bir arka uç API'sine veya web uygulamasına bağlanan ve bir veritabanına, depolama hesabına, anahtar kasasına, başka bir VM'ye veya bu kaynakların bir bileşimine bağlanan bir ön ucunuz olabilir. Bu mimari N katmanlı bir uygulamayı oluşturur. Bunun gibi uygulamaların arka uç kaynaklarını mümkün olan en büyük ölçüde korumak için tasarlanmış olması önemlidir.

Bu öğreticide, ağdan yalıtılmış başka bir web uygulamasına bağlanan bir ön uç web uygulamasıyla güvenli bir N katmanlı uygulama dağıtmayı öğreneceksiniz. Sanal Ağ tümleştirmesi ve özel uç noktalar kullanılarak tüm trafik Azure Sanal Ağ içinde yalıtılır. Diğer senaryoları içeren daha kapsamlı yönergeler için bkz:

Senaryo mimarisi

Aşağıdaki diyagramda, bu öğretici sırasında oluşturacağınız mimari gösterilmektedir.

Architecture diagram of an n-tier App Service.

  • Sanal ağ biri ön uç web uygulamasıyla tümleştirilmiş, diğeri ise arka uç web uygulaması için özel bir uç noktaya sahip olmak üzere iki alt ağ içerir. Sanal ağ, tümleştirilmiş ön uç uygulaması dışında tüm gelen ağ trafiğini engeller.
  • Ön uç web uygulaması Sanal ağa tümleşik ve genel İnternet'ten erişilebilir.
  • Arka uç web uygulaması Yalnızca sanal ağdaki özel uç nokta üzerinden erişilebilir.
  • Özel uç nokta Arka uç web uygulamasıyla tümleşir ve web uygulamasını özel bir IP adresiyle erişilebilir hale getirir.
  • Özel DNS bölgesi Bir DNS adını özel uç noktanın IP adresine çözümlemenize olanak tanır.

Not

Sanal ağ tümleştirmesi ve özel uç noktalar, App Service'teki Temel katmana kadar tüm kullanılabilir. Ücretsiz katmanı bu özellikleri desteklemez. Bu mimariyle:

  • Arka uç uygulamasına yönelik genel trafik engellenir.
  • App Service'ten giden trafik sanal ağa yönlendirilir ve arka uç uygulamasına ulaşabilir.
  • App Service arka uç uygulaması için DNS çözümlemesi gerçekleştirebilir.

Bu senaryo, App Service'teki olası N katmanlı senaryolardan birini gösterir. Daha karmaşık N katmanlı uygulamalar oluşturmak için bu öğreticide ele alınan kavramları kullanabilirsiniz.

Öğrenecekleriniz:

  • App Service sanal ağ tümleştirmesi için bir sanal ağ ve alt ağlar oluşturun.
  • Özel DNS bölgeleri oluşturun.
  • Özel uç noktalar oluşturun.
  • App Service'te sanal ağ tümleştirmesini yapılandırın.
  • App Service'te temel kimlik doğrulamasını devre dışı bırakın.
  • Kilitli bir arka uç web uygulamasına sürekli dağıtın.

Önkoşullar

Öğreticide GitHub'da barındırılan iki örnek Node.js uygulaması kullanılır. Henüz bir GitHub hesabınız yoksa ücretsiz olarak bir hesap oluşturun.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Bu öğreticiyi tamamlamak için:

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

1. Web uygulamasının iki örneğini oluşturma

Bir web uygulamasının biri ön uç, diğeri de arka uç için olmak üzere iki örneğine ihtiyacınız vardır. Sanal ağ tümleştirmesi ve özel uç noktaları kullanmak için en azından Temel katmanı kullanmanız gerekir. Daha sonra sanal ağ tümleştirmesini ve diğer yapılandırmaları yapılandıracaksınız.

  1. Bu öğreticide oluşturduğunuz tüm kaynakları yönetmek için bir kaynak grubu oluşturun.

    # Save resource group name and region as variables for convenience
    groupName=myresourcegroup
    region=eastus
    az group create --name $groupName --location $region
    
  2. App Service planı oluşturun. <app-service-plan-name> yerine benzersiz bir ad yazın. --sku Farklı bir SKU kullanmanız gerekiyorsa parametresini değiştirin. SKU gerekli ağ özelliklerini desteklemediğinden ücretsiz katmanı kullanmadığınızdan emin olun.

    # 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. Web uygulamalarını oluşturun. ve değerini genel olarak benzersiz iki adla değiştirin <frontend-app-name> (geçerli karakterler , 0-9a-zve -).<backend-app-name> Bu öğreticide size örnek Node.js uygulamaları sağlanır. Kendi uygulamalarınızı kullanmak istiyorsanız parametresini --runtime buna göre değiştirin. Kullanılabilir çalışma zamanlarının listesi için komutunu çalıştırın az webapp list-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. Ağ altyapısı oluşturma

Aşağıdaki ağ kaynaklarını oluşturacaksınız:

  • Bir sanal ağ.
  • App Service sanal ağ tümleştirmesi için bir alt ağ.
  • Özel uç nokta için bir alt ağ.
  • Özel bir DNS bölgesi.
  • Özel uç nokta.
  1. Özel ağ oluşturun. <virtual-network-name> yerine benzersiz bir ad yazın.

    # 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. App Service sanal ağ tümleştirmesi için bir alt ağ oluşturun.

    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
    

    App Service için sanal ağ tümleştirme alt ağının en az CIDR bloğuna /26 sahip olması önerilir. /24 fazla yeterlidir. --delegations Microsoft.Web/serverfarmsAlt ağın App Service sanal ağ tümleştirmesi için temsilci olarak atandığını belirtir.

  3. Özel uç noktalar için başka bir alt ağ oluşturun.

    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
    

    Özel uç nokta alt ağları için olarak ayarlayarak --disable-private-endpoint-network-policiestrueözel uç nokta ağ ilkelerini devre dışı bırakmanız gerekir.

  4. Özel DNS bölgesini oluşturun.

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

    Bu ayarlar hakkında daha fazla bilgi için bkz . Azure Özel Uç Nokta DNS yapılandırması.

    Not

    Portalı kullanarak özel uç nokta oluşturursanız, sizin için otomatik olarak bir özel DNS bölgesi oluşturulur ve bunu ayrı olarak oluşturmanız gerekmez. Bu öğreticiyle tutarlılık sağlamak için Azure CLI kullanarak özel DNS bölgesini ve özel uç noktayı ayrı ayrı oluşturursunuz.

  5. Özel DNS bölgesini sanal ağa bağlayın.

    az network private-dns link vnet create --resource-group $groupName --name myDnsLink --zone-name privatelink.azurewebsites.net --virtual-network $vnetName --registration-enabled False
    
  6. Sanal ağınızın özel uç nokta alt ağında arka uç web uygulamanız için özel bir uç nokta oluşturun. değerini arka uç web uygulaması adınızla değiştirin <backend-app-name> .

    # 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. Özel uç noktayı, arka uç web uygulaması özel uç noktası için bir DNS bölge grubuyla özel DNS bölgesine bağlayın. Bu DNS bölgesi grubu, özel uç noktada bir güncelleştirme olduğunda özel DNS Bölgesini otomatik olarak güncelleştirmenize yardımcı olur.

    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. App Service için özel uç nokta oluşturduğunuzda, genel erişim örtük olarak devre dışı bırakılır. Arka uç web uygulamanıza varsayılan URL'sini kullanarak erişmeye çalışırsanız erişiminiz reddedilir. Bir tarayıcıdan bu davranışı onaylamak için adresine gidin <backend-app-name>.azurewebsites.net .

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

    Özel uç noktaları olan App Service erişim kısıtlamaları hakkında daha fazla bilgi için bkz. hizmet erişim kısıtlamaları Azure Uygulaması.

3. Ön uç web uygulamanızda sanal ağ tümleştirmesini yapılandırma

Uygulamanızda sanal ağ tümleştirmesini etkinleştirin. yerine <frontend-app-name> ön uç web uygulamasının adını yazın.

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

Sanal ağ tümleştirmesi, giden trafiğin doğrudan sanal ağa akmasını sağlar. Varsayılan olarak, yalnızca RFC-1918'de tanımlanan yerel IP trafiği, özel uç noktalar için ihtiyacınız olan sanal ağa yönlendirilir. Tüm trafiğinizi sanal ağa yönlendirmek için bkz . Sanal ağ tümleştirme yönlendirmesini yönetme. İnternet trafiğini azure Sanal Ağ NAT veya Azure Güvenlik Duvarı gibi sanal ağınız üzerinden yönlendirmek istiyorsanız tüm trafiği yönlendirmek de kullanılabilir.

4. İnternet'ten arka uç web uygulamasına dağıtımı etkinleştirme

Arka uç web uygulamanız genel olarak erişilebilir olmadığından, SCM sitesini herkese açık hale getirerek sürekli dağıtım aracınızın uygulamanıza erişmesine izin vermelisiniz. Ana web uygulamasının kendisi tüm trafiği reddetmeye devam edebilir.

  1. Arka uç web uygulaması için genel erişimi etkinleştirin.

    az webapp update --resource-group $groupName --name <backend-app-name> --set publicNetworkAccess=Enabled
    
  2. Ana web uygulamasının eşleşmeyen kural eylemini tüm trafiği reddedecek şekilde ayarlayın. Genel uygulama erişimi ayarı genel erişime izin verecek şekilde ayarlanmış olsa bile bu ayar ana web uygulamasına genel erişimi reddeder.

    az resource update --resource-group $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Deny
    
  3. SCM sitesinin eşleşmeyen kural eylemini tüm trafiğe izin verecek şekilde ayarlayın.

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

5. FTP ve SCM erişimini kilitleme

Artık arka uç SCM sitesine genel erişim sağlandığından, siteyi daha iyi bir güvenlikle kilitlemeniz gerekir.

  1. Hem ön uç hem de arka uç web uygulamaları için FTP erişimini devre dışı bırakın. ve <backend-app-name> değerini uygulama adlarınızla değiştirin<frontend-app-name>.

    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. Her iki web uygulaması için de WebDeploy bağlantı noktalarına ve SCM/gelişmiş araç sitelerine temel kimlik doğrulaması erişimini devre dışı bırakın. ve <backend-app-name> değerini uygulama adlarınızla değiştirin<frontend-app-name>.

    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
    

App Service'te temel kimlik doğrulamasının devre dışı bırakılması, FTP ve SCM uç noktalarına erişimi Microsoft Entra Id tarafından yedeklenen kullanıcılarla sınırlar ve bu da uygulamalarınızın güvenliğini daha da sağlar. Oturum açma bilgilerini test etme ve izleme de dahil olmak üzere temel kimlik doğrulamasını devre dışı bırakma hakkında daha fazla bilgi için bkz . App Service'te temel kimlik doğrulamasını devre dışı bırakma.

6. GitHub Actions kullanarak sürekli dağıtımı yapılandırma

  1. Node.js arka uç örnek uygulamasına gidin. Bu uygulama basit bir Merhaba Dünya uygulamasıdır.

  2. GitHub sayfasının sağ üst kısmındaki Çatal düğmesini seçin.

  3. Sahip'i seçin ve varsayılan Depo adını bırakın.

  4. Çatal oluştur'u seçin.

  5. Node.js ön uç örnek uygulaması için aynı işlemi yineleyin. Bu uygulama, uzak URL'ye erişen temel bir web uygulamasıdır.

  6. Hizmet sorumlusu oluşturma. , <frontend-app-name>ve <backend-app-name> değerlerini değerlerinizle değiştirin<subscription-id>.

    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
    

    Çıkış, App Service uygulamalarınıza erişim sağlayan rol ataması kimlik bilgilerine sahip bir JSON nesnesidir. Sonraki adım için bu JSON nesnesini kopyalayın. Bu, şu anda yalnızca görünür olan istemci gizli dizinizi içerir. Minimum erişim vermek her zaman iyi bir uygulamadır. Bu örnekteki kapsam, kaynak grubunun tamamıyla değil yalnızca uygulamalarla sınırlıdır.

  7. Hizmet sorumlusunun kimlik bilgilerini GitHub gizli dizileri olarak depolamak için GitHub'daki çatallanmış örnek depolardan birine gidin ve Ayarlar> Güvenlik>Gizli Dizileri>ve değişkenleri Eylemleri'ne gidin.

  8. Yeni depo gizli dizisi'ni seçin ve aşağıdaki değerlerin her biri için bir gizli dizi oluşturun. Değerler, daha önce kopyaladığınız json çıkışında bulunabilir.

    Veri Akışı Adı Değer
    AZURE_APP_ID <application/client-id>
    AZURE_PASSWORD <client-secret>
    AZURE_TENANT_ID <tenant-id>
    AZURE_SUBSCRIPTION_ID <subscription-id>
  9. Bu işlemi diğer çatallanmış örnek depo için yineleyin.

  10. GitHub Actions ile sürekli dağıtım ayarlamak için Azure portalında oturum açın.

  11. Ön uç web uygulamanızın Genel Bakış sayfasına gidin.

  12. Sol bölmede Dağıtım Merkezi'ni seçin. Ardından Ayarlar'ı seçin.

  13. Kaynak kutusunda CI/CD seçeneklerinden "GitHub" öğesini seçin.

    Screenshot that shows how to choose the deployment source.

  14. GitHub'dan ilk kez dağıtıyorsanız Yetkile'yi seçin ve yetkilendirme istemlerini izleyin. Farklı bir kullanıcının deposundan dağıtmak istiyorsanız Hesabı Değiştir'i seçin.

  15. Önkoşulların bir parçası olarak çatallanan Node.js örnek uygulamasını kullanıyorsanız Kuruluş, Depo ve Dal için aşağıdaki ayarları kullanın.

    Ayar Value
    Organization <your-GitHub-organization>
    Depo nodejs-frontend
    Şube main
  16. Kaydet'i seçin.

  17. Arka uç web uygulamanız için aynı adımları yineleyin. Dağıtım Merkezi ayarları aşağıdaki tabloda verilmiştir.

    Ayar Value
    Organization <your-GitHub-organization>
    Depo nodejs-backend
    Şube main

7. GitHub Actions dağıtımı için hizmet sorumlusu kullanın

Dağıtım Merkezi yapılandırmanız örnek depolarınızın her birinde varsayılan bir iş akışı dosyası oluşturmuştur, ancak varsayılan olarak temel kimlik doğrulaması kullanan bir yayımlama profili kullanır. Temel kimlik doğrulamasını devre dışı bırakdığınızdan, Dağıtım Merkezi'ndeki Günlükler sekmesini denetlerseniz, otomatik olarak tetiklenen dağıtımın bir hatayla sonuçlandığını görürsünüz. App Service ile kimlik doğrulaması yapmak için hizmet sorumlusunu kullanmak için iş akışı dosyasını değiştirmeniz gerekir. Örnek iş akışları için bkz . İş akışı dosyasını GitHub deponuza ekleme.

  1. Çatallanmış GitHub depolarınızdan birini açın ve dizine <repo-name>/.github/workflows/ gidin.

  2. Otomatik olarak oluşturulan iş akışı dosyasını seçin ve ardından sağ üstteki "kalem" düğmesini seçerek dosyayı düzenleyin. İçeriği, daha önce kimlik bilgileriniz için GitHub gizli dizilerini oluşturduğunuzu varsayan aşağıdaki metinle değiştirin. "env" bölümünün altındaki için yer tutucuyu <web-app-name> güncelleştirin ve ardından doğrudan ana dala işleyin. Bu işleme, github eyleminin yeniden çalıştırılmasını ve kodunuzun dağıtılması için tetikler ve bu kez kimlik doğrulaması için hizmet sorumlusunu kullanır.

    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. Diğer çatallanmış GitHub deponuzdaki iş akışı dosyası için bu işlemi yineleyin.

Yeni GitHub işlemeleri, uygulamalarınızın her biri için başka bir dağıtım tetikler. İş akışı uygulamaların SCM sitelerinde kimlik doğrulaması yapmak için hizmet sorumlusunu kullandığından bu kez dağıtım başarılı olmalıdır.

GitHub Actions gibi sağlayıcılarla sürekli dağıtımı yapılandırma hakkında ayrıntılı yönergeler için bkz. Azure Uygulaması Service'e sürekli dağıtım.

8. Bağlantıları ve uygulama erişimini doğrulama

  1. URL'si ile ön uç web uygulamasına göz atın: https://<frontend-app-name>.azurewebsites.net.

  2. Metin kutusuna arka uç web uygulamanızın URL'sini girin: https://<backend-app-name>.azurewebsites.net. Bağlantıları düzgün ayarlarsanız, arka uç web uygulamasının tüm içeriği olan "Arka uç web uygulamasından merhaba!" iletisini almanız gerekir. Ön uç web uygulamasından gelen tüm giden trafik sanal ağ üzerinden yönlendirilir. Ön uç web uygulamanız, özel uç nokta üzerinden arka uç web uygulamanıza güvenli bir şekilde bağlanıyor. Bağlantılarınızda bir sorun varsa ön uç web uygulamanız kilitlenir.

  3. URL'si ile doğrudan arka uç web uygulamanıza gezinmeyi deneyin: https://<backend-app-name>.azurewebsites.net. iletisini Web App - Unavailablegörmeniz gerekir. Uygulamaya ulaşabiliyorsanız özel uç noktayı yapılandırdığınızdan ve uygulamanız için erişim kısıtlamalarının ana web uygulaması için tüm trafiği reddedecek şekilde ayarlandığından emin olun.

  4. Ön uç web uygulamasının özel bağlantı üzerinden arka uç web uygulamasına ulaştığını daha fazla doğrulamak için ön ucunuzun örneklerinden birine SSH ekleyin. SSH'ye, uygulamanızın web kapsayıcısında bir SSH oturumu oluşturan ve tarayıcınızda bir uzak kabuk açan aşağıdaki komutu çalıştırın.

    az webapp ssh --resource-group $groupName --name <frontend-app-name>
    
  5. Kabuk tarayıcınızda açıldığında, arka uç web uygulamanızın özel IP'sini kullanarak arka uç web uygulamanıza ulaşıldığını onaylamak için komutunu çalıştırın nslookup . Site içeriğini yeniden doğrulamak için komutunu da çalıştırabilirsiniz curl . değerini arka uç web uygulaması adınızla değiştirin <backend-app-name> .

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

    Screenshot of SSH session showing how to validate app connections.

    , nslookup arka uç web uygulamanızın özel IP adresine çözümlenmelidir. Özel IP adresi, sanal ağınızdaki bir adres olmalıdır. Özel IP'nizi onaylamak için arka uç web uygulamanızın sayfasına gidin.

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

  6. Aynı nslookup ve curl komutlarını başka bir terminalden (ön ucunuzun örneklerinde SSH oturumu olmayan bir terminal) yineleyin.

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

    , nslookup arka uç web uygulamasının genel IP'sini döndürür. Arka uç web uygulamasına genel erişim devre dışı bırakıldığından, genel IP'ye erişmeye çalışırsanız erişim reddedildi hatası alırsınız. Bu hata, bu sitenin hedeflenen davranış olan genel İnternet'ten erişilebildiği anlamına gelir. nslookup yalnızca özel DNS bölgesi aracılığıyla sanal ağ içinden çözümlenebildiği için özel IP'ye çözümlenmez. Sanal ağda yalnızca ön uç web uygulaması bulunur. Dış terminalden arka uç web uygulamasında çalıştırmayı curl denerseniz, döndürülen HTML içerir Web App - Unavailable. Bu hata, tarayıcınızda arka uç web uygulamasına gezinmeyi denediğinizde daha önce gördüğünüz hata sayfasının HTML'sini görüntüler.

9. Kaynakları temizleme

Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Bu kaynakların gelecekte gerekli olacağını düşünmüyorsanız, Cloud Shell’de aşağıdaki komutu çalıştırarak kaynak grubunu silin.

az group delete --name myresourcegroup

Bu komutun çalıştırılması birkaç dakika sürebilir.

Sık sorulan sorular

Hizmet sorumlusu kullanarak dağıtımın alternatifi var mı?

Bu öğreticide temel kimlik doğrulamasını devre dışı bırakdığınızdan, arka uç SCM sitesinde kullanıcı adı ve parolayla kimlik doğrulaması yapamazsınız ve yayımlama profiliyle de kimlik doğrulaması yapamazsınız. Hizmet sorumlusu yerine OpenID Bağlan de kullanabilirsiniz.

App Service'te GitHub Actions dağıtımını yapılandırdığımda ne olur?

Azure, deponuzda bir iş akışı dosyasını otomatik olarak oluşturur. Seçili depodaki ve daldaki yeni işlemeler artık App Service uygulamanıza sürekli olarak dağıtılır. İşlemeleri ve dağıtımları Günlükler sekmesinden izleyebilirsiniz.

App Service'de kimlik doğrulaması yapmak için yayımlama profili kullanan varsayılan iş akışı dosyası GitHub deponuza eklenir. Dizine <repo-name>/.github/workflows/ giderek bu dosyayı görüntüleyebilirsiniz.

Arka uç SCM'sini genel olarak erişilebilir durumda bırakmak güvenli mi?

FTP ve SCM erişimini kilitlediğinizde, genel erişime açık olsa bile SCM uç noktasına yalnızca Microsoft Entra destekli sorumluların erişebilmesini sağlar. Bu ayar arka uç web uygulamanızın hala güvenli olduğundan emin olmanız gerekir.

Arka uç SCM sitesini açmadan dağıtmanın bir yolu var mı?

SCM sitesine genel erişimi etkinleştirme konusunda endişeleniyorsanız veya ilke tarafından kısıtlandıysanız, ZIP paketinden çalıştırma gibi diğer App Service dağıtım seçeneklerini göz önünde bulundurun.

ARM/Bicep ile bu mimariyi nasıl dağıtabilirim?

Bu öğreticide oluşturduğunuz kaynaklar ARM/Bicep şablonu kullanılarak dağıtılabilir. Arka uç web uygulamasına bağlı Uygulama Bicep şablonu, güvenli bir N katmanlı uygulama çözümü oluşturmanıza olanak tanır.

ARM/Bicep şablonlarını dağıtmayı öğrenmek için bkz . Bicep ve Azure CLI ile kaynakları dağıtma.

Sonraki adımlar