Öğretici: Azure App Service'de 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 bir ön ucunuz olabilir. Arka uç kaynakları bir veritabanına, depolama hesabına, anahtar kasasına, başka bir sanal makineye veya bu kaynakların bir bileşimine bağlanabilir. Bu mimari, N katmanlı bir uygulamanın temelini 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ı uygulamanın nasıl dağıtılacağı açıklanır. Tüm trafik, Sanal Ağ tümleştirmesi ve özel uç noktalar kullanılarak Azure Sanal Ağı içinde yalıtılmıştır. Diğer senaryoları içeren daha kapsamlı yönergeler için bkz:

Bu eğitimde, siz:

  • App Service sanal ağ tümleştirmesi için sanal ağ ve alt ağlar oluşturma
  • Özel DNS bölgeleri ve özel uç noktalar oluşturma
  • App Service'te sanal ağ tümleştirmesini yapılandırma
  • App Service'te temel kimlik doğrulamayı devre dışı bırakma
  • Sıkı güvenlik önlemleriyle kısıtlanmış bir arka uç web uygulamasına sürekli dağıtım

Önkoşullar

Öğreticide, GitHub üzerinde 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 hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Bu eğitimi tamamlamak için:

Senaryo mimarisini gözden geçirin

Bu öğreticide, aşağıdaki diyagramda gösterilen bir mimarinin nasıl yapılandırıldığı gösterilmektedir. Senaryo, App Service'teki olası N katmanlı yapılandırmalardan birini temsil eder. Daha karmaşık N katmanlı uygulamalar oluşturmak için bu öğreticide ele alınan kavramları kullanabilirsiniz.

Ön uç uygulamasıyla sanal ağ tümleştirmesini ve arka uçta özel uç noktayı içeren N katmanlı App Service mimarisinin diyagramı.

  • Mimaride iki alt ağ içeren bir sanal ağ vardır. Bir alt ağ ön uç web uygulamasıyla tümleşiktir ve diğer alt ağ arka uç web uygulaması için özel bir uç noktaya sahiptir. Sanal ağ, tümleşik ön uç uygulamasını hedefleyen trafik dışında tüm gelen ağ trafiğini engeller.

  • Ön uç web uygulaması sanal ağ ile tümleşiktir ve genel İnternet'ten erişilebilir.

  • Arka uç web uygulamasına 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 adresi aracılığıyla erişilebilir hale getirir.

  • Özel DNS bölgesi bir DNS adının özel uç nokta IP adresine çözümlenmesine olanak tanır.

Not

Sanal ağ tümleştirmesini ve özel uç noktaları yapılandırmak için Azure App Service veya daha yüksek bir katmanın Basic katmanı gerekir. Ücretsiz katmanı bu özellikleri desteklemez.

Bu öğreticideki senaryo aşağıdaki davranışı sağlar:

  • Arka uç uygulamasına yönelik genel trafik engellenir.
  • App Service'ten gelen çıkış trafiği 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.

İki web uygulaması oluşturma

Biri ön uç, diğeri de arka uç için olan iki App Service web uygulamasına ihtiyacınız vardır. Uygulamalar aynı bölge konumunda çalıştırılabilir. Sanal ağ tümleştirmesini ayarlamak ve özel uç noktalarla çalışmak için en azından Azure App Service Basic katmanını kullanın. Sanal ağ tümleştirmesini ve diğer ayarları daha sonra yapılandıracaksınız.

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

    <resource-group> yer tutucusunu, zava-resources gibi yeni kaynak grubunuzun adı olarak ayarlayın. Yer tutucuyu <region-location> , gibi eastusyeni kaynak grubunuzun bölgesine ayarlayın.

    # 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
    

    Daha fazla bilgi için az group create command başvurusuna bakın.

  2. Kaynaklarınız için bir App Service planı oluşturun.

    <app-service-plan> yer tutucusunu, zava-app-service-plan gibi yeni App Service planınızın adı olarak ayarlayın.

    Öğretici örnek, --sku parametresini P1V3 (Premium V3) olarak ayarlar. Bu değeri kullanabilir veya farklı bir SKU belirtebilirsiniz. SKU bu öğretici için gerekli ağ özelliklerini desteklemelidir. Temel katmanı veya üzerini seçin.

    # 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
    

    Daha fazla bilgi için az appservice plan create command başvurusuna bakın.

  3. Ön uç ve arka uç web uygulamalarını oluşturun.

    Öğreticideki örnek, çalışma zamanı dili sürümü NODE:24-lts olan iki örnek Node.js uygulaması oluşturur. Kendi uygulamalarınızı kullanmayı tercih ediyorsanız parametre --runtime değerini buna göre ayarlayın<language-version>. Kullanılabilir çalışma zamanları listesi için komutunu çalıştırabilirsiniz az webapp list-runtimes :

    az webapp list-runtimes
    

    <frontend-app-name> yer tutucusunu, zava-frontend-app gibi yeni frontend web uygulamanızın adı olarak ayarlayın. Ad genel olarak benzersiz olmalı ve geçerli karakterlerden (a-z, 0-9, -) oluşmalıdır. Benzer şekilde, <backend-app-name> yer tutucusunu yeni arka uç web uygulamanızın adı olarak, örneğin zava-backend-app şeklinde ayarlayın.

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

    Daha fazla bilgi için az webapp create command başvurusuna bakın.

Ağ altyapısını oluşturma

Sanal ağ altyapısı aşağıdaki kaynaklardan oluşur:

  • Azure Sanal Ağ örneği
  • App Service sanal ağ tümleştirmesi için bir alt ağ
  • Özel uç nokta için başka bir alt ağ
  • Bir Azure Özel DNS bölgesi
  • Özel uç nokta
  1. Azure sanal ağı oluşturma.

    <virtual-network-name> yer tutucusunu, örneğin zava-virtual-network, yeni sanal ağınızın adı olarak ayarlayın. Adın genel olarak benzersiz olması gerekir.

    # 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
    

    Daha fazla bilgi için az network vnet create komut başvurusuna bakın.

  2. App Service sanal ağ tümleştirmesi için bir alt ağ oluşturun.

    <network-integration-subnet> yer tutucusunu, sanal ağ entegrasyonunu destekleyen yeni alt ağınızın adı olarak, örneğin zava-integration-subnet, ayarlayın.

    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.

    # 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
    

    Daha fazla bilgi için az network vnet subnet create komut başvurusuna bakın.

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

    Özel uç noktayı destekleyen yeni alt ağınızın adı olarak, örneğin <private-endpoint-subnet>, zava-endpoint-subnet yer tutucusunu ayarlayın.

    # 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
    

    Özel uç nokta alt ağları için, --disable-private-endpoint-network-policies bayrağını true olarak ayarlayarak özel uç nokta ağ ilkelerini devre dışı bırakmanız gerekir. Daha fazla bilgi için az network vnet subnet create komutu için isteğe bağlı parametreler bölümüne bakın.

    Not

    --private-endpoint-network-policies bayrağı yakında --disable-private-endpoint-network-policies bayrağının yerini alabilir.

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

    <private-zone-name> yer tutucuyu yeni Özel DNS bölgenizin adı olarak ayarlayın( örneğin, 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
    

    Daha fazla bilgi için az network vnet subnet create komut başvurusuna bakın. Özel DNS bölgesini yapılandırma hakkında daha fazla bilgi için bkz. Azure hizmet DNS bölgesi yapılandırması.

    Not

    Azure portalında özel uç nokta oluşturursanız, yapılandırmanız için otomatik olarak bir Azure Özel DNS bölgesi oluşturulur. Bu öğreticide işlem tutarlılığı sağlamak için Azure CLI’yi kullanarak Özel DNS bölgesini ve özel uç noktayı ayrı ayrı oluşturursunuz.

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

    <dns-link-name> yer tutucusunu, zava-private-link gibi yeni DNS bağlantınızın adı olarak ayarlayın.

    # 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
    

    Daha fazla bilgi için az network private-dns link vnet create komut başvurusuna bakın.

  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.

    Yer tutucuyu <private-endpoint-name> , arka uç web uygulamanızın yeni özel uç noktasının adına (gibi) zava-backend-endpointayarlayın. <service-connection-name> yer tutucusunu, zava-backend-connection gibi yeni hizmet bağlantısının adı olarak ayarlayın.

    # 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
    

    Daha fazla bilgi için az network private-endpoint create komut başvurusuna bakın.

  7. Özel uç noktayı, arka uç web uygulamasının özel uç noktası için bir DNS bölgesi grubuyla Özel DNS bölgesine bağlayın.

    <dns-zone-group-name> yer tutucusunu, örneğin zava-dns-zone-group gibi, yeni DNS Bölgesi grubunuzun adına ayarlayın. DNS bölgesi grubu, özel uç nokta güncelleştirildiğinde Özel DNS bölgesinin otomatik olarak güncelleştirilmiş olması konusunda yardımcı olur.

    # 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
    

    Daha fazla bilgi için az network private-endpoint dns-zone-group create komut başvurusuna bakın.

  8. Özel uç noktanıza doğrudan erişimin reddedildiğinden emin olun.

    App Service uygulaması 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.

    Tarayıcıda arka uç web uygulamanızın varsayılan URL'sini girin, örneğin <backend-app-name>.azurewebsites.net.

    Tarayıcı iletisi doğrudan erişimin reddedilmiş olduğunu gösterir:

    Arka uç uygulamasına doğrudan erişim yasaklandığında tarayıcı iletisinin ekran görüntüsü.

    Özel uç noktalara sahip App Service erişim kısıtlamaları hakkında daha fazla bilgi için bkz. Azure App Service erişim kısıtlamaları.

Sanal Ağ Entegrasyonunu Yapılandırma

Sanal ağ altyapısını oluşturduktan sonra, ön uç web uygulamanızda sanal ağ tümleştirmesi ayarlayabilirsiniz. Sanal ağ tümleştirmesi, giden trafiğin doğrudan sanal ağa akmasını sağlar. Varsayılan olarak, yalnızca RFC-1918 > Özel Adres Alanı protokolünde tanımlanan yerel IP trafiği sanal ağa yönlendirilir. Bu yönlendirme düzeyi, özel uç noktaları etkinleştirmek için ihtiyacınız olan düzeydir.

Ön uç web uygulamanızda sanal ağ tümleştirmesini etkinleştirin. Aşağıdaki komut, alt ağın ve web uygulamasının aynı kaynak grubunda yer aldığını varsayar.

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

Daha fazla bilgi için az webapp vnet-integration add komut başvurusuna bakın.

Tüm trafiği 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.

Arka uç web uygulamasına dağıtımı etkinleştirme

Arka uç web uygulamanız genel olarak erişilebilir olmadığından, SCM sitesini İnternet'ten genel olarak erişilebilir 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 $resourceGroupName --name $backendAppName --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 $resourceGroupName --name $backendAppName --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 $resourceGroupName --name $backendAppName --namespace Microsoft.Web \
       --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
    

FTP ve SCM erişimini kısıtlama

Arka uç SCM siteniz herkese açık olduğundan daha iyi bir güvenlikle kilitlemeniz gerekir.

  1. Hem ön uç hem de arka uç web uygulaması için FTP erişimini devre dışı bırakın:

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

    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
    

App Service'te temel kimlik doğrulamasını devre dışı bırakırsanız, FTP ve SCM uç noktalarına erişimi Microsoft Entra ID kayıtlı kullanıcılarla sınırlarsınız. Bu eylem, 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.

GitHub Actions ile sürekli dağıtımı yapılandırma

Bu yordam için App Service ön uç ve arka uç uygulamalarınıza dağıtmaya hazır iki uygulamaya ihtiyacınız vardır. Web uygulamalarına erişmek için bir hizmet sorumlusuna ve GitHub Actions ile sürekli dağıtıma ihtiyacınız vardır.

Dağıtım testi için web uygulamaları alma

GitHub Azure Samples depoları dağıtım için örnek Node.js uygulamaları sağlar.

  1. Tarayıcıda Node.js Arka uç örnek uygulamasına gidin.

    Değişiklik yapabilmek için GitHub deposunu çatallayarak kendi kopyanızı oluşturun. Bu örnek bir 'Merhaba Dünya' uygulaması oluşturur. Bu uygulamayı arka uç web uygulamanıza dağıtırsınız.

  2. Node.js Ön uç örnek uygulaması için aynı işlemi yineleyin.

    Değişiklik yapabilmek için GitHub deposunu çatallayarak kendi kopyanızı oluşturun. Bu örnek, URL'nin içeriğini getiren ve görüntüleyen bir web uygulaması oluşturur. Bu uygulamayı ön uç web uygulamanıza dağıtırsınız.

Hizmet sorumlusunu yapılandırın

Ön uç web uygulamanız ve arka uç web uygulamanız için bir hizmet sorumlusuna ihtiyacınız vardır.

  1. Hizmet sorumlusu oluştur.

    Yer tutucuyu <service-principal-name> gibi zava-service-principalyeni hizmet sorumlunuzun adına ayarlayın.

    Diğer <placeholder> parametre değerlerini kendi kaynaklarınız için bilgilerle değiştirin.

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

    Çıkış, App Service uygulamalarınıza erişim sağlayan rol ataması kimlik bilgilerine sahip bir JSON nesnesidir.

    {
      "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, hizmet sorumlusu parolanızı içerir ve bu parola yalnızca şu anda görülebilir.

    Tavsiye

    Minimum erişim vermek iyi bir uygulamadır. Bu örnekte kapsam, kaynak grubunun tamamıyla değil yalnızca uygulamalarla sınırlıdır.

  2. Hizmet asıl adınızın kaydına sahip olmak için JSON nesnesini kopyalayın.

  3. GitHub Eylem iş akışınızın bir parçası olarak Azure oturum açma işlemine hizmet sorumlusu kimlik bilgilerinizi sağlayın.

    Kimlik bilgilerini, iş akışınızda başvurulan GitHub gizli anahtarları olarak depolayın.

    1. Bir tarayıcıda, GitHub'da arka uç Node.js uygulamanız için çatallanmış repoya gidin.

    2. Ayarlar>Güvenlik>Gizli bilgileri ve değişkenler>Eylemler'e gidin.

    3. Yeni depo gizlisi'ni seçin ve aşağıdaki ayarların her biri için bir gizli oluşturun.

      JSON çıkışınızdaki değerleri kullanın.

      Ayar Değer 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. GitHub'da ön uç Node.js uygulamanızın çatallanmış deposu için aynı işlemi tekrarlayın.

GitHub Actions ile sürekli dağıtım ayarlama

GitHub Actions ile sürekli dağıtım ayarlayabilirsiniz.

  1. Azure portalında ön uç web uygulamanızın Overview sayfasına gidin.

  2. Sol menüde Dağıtım>merkezini seçin.

  3. Settings sekmesinde Source seçeneğini GitHub:

    Azure portalında ön uç web uygulaması için dağıtım kaynağının nasıl seçileceğini gösteren Screenshot.

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

  5. Azure hesabınıza GitHub yetki verdikten sonra CI/CD'yi yapılandırmak için Organization, Repository ve Branch seçin. Bir kuruluş veya depo bulamazsanız, GitHub üzerinde daha fazla izin etkinleştirmeniz gerekebilir. Daha fazla bilgi için bkz. Kuruluşunuzun depolarına kullanıcı erişimini yönetme.

    Ayar Değer
    Organizasyon <your-GitHub-organization>
    Depo <forked-repository-name>
    Şube ana
  6. Kaydet'i seçin.

  7. Bu işlemi backend web uygulamanız ve ilgili fork’lanmış kaynak deposu için tekrarlayın.

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

Artık bağlantıları denetlemeye ve ön uç ve arka uç web uygulamalarınıza erişmeye hazırsınız.

  1. URL'si ile doğrudan https://<backend-app-name>.azurewebsites.net web uygulamanıza göz atmayı deneyin.

    Aşağıdaki tarayıcı iletisini görmeniz gerekir:

    Arka uç uygulamasına doğrudan erişim yasaklandığında tarayıcı iletisinin ekran görüntüsü.

    Uygulamaya ulaşabiliyorsanız yapılandırmanızı denetleyin:

    • Özel uç noktanın doğru ayarlandığını onaylayın.

    • Uygulamanızın erişim kısıtlamalarının ana web uygulaması için tüm trafiği reddedecek şekilde ayarlandığını onaylayın.

  2. Şimdi url'si ile doğrudan https://<frontend-app-name>.azurewebsites.net web uygulamanıza göz atmayı deneyin.

    Bağlantı başarılı olduğunda aşağıdaki sayfayı görürsünüz:

    Tarayıcıda çalışan ön uç uygulamasına başarılı bir bağlantının ekran görüntüsü.

  3. URL kutusuna arka uç web uygulamanızın https://<backend-app-name>.azurewebsites.netURL'sini girin ve Getir'i seçin.

    Bağlantıları düzgün ayarlarsanız, sayfa arka uç web uygulamasından ileti içeriğini gösterecek şekilde yenilenir:

    Ön uç uygulaması arka uç uygulamasına erişim girişiminde bulunduktan sonra tarayıcı içeriğinin ekran görüntüsü.

    Ö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, çıkışta Hata 403 - Yasak iletisini görürsünüz.

SSH oturumu oluşturma ve uzak kabuk açma

Ön uç web uygulamasının bir ön uç örneğine SSH kullanarak özel bağlantı üzerinden arka uç web uygulamasına ulaştığını doğrulayın.

  1. Uygulamanızın web kapsayıcısına bir SSH oturumu başlatın ve tarayıcınızda bir uzak kabuk oturumu açın:

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

    Daha fazla bilgi için az webapp ssh komut başvurusuna bakın.

  2. Komut kabuğu tarayıcınızda açıldıktan sonra, arka uç web uygulamanızın özel IP adresini kullanarak arka uç web uygulamanıza erişilebildiğini doğrulayın.

    Aşağıdaki komutlarda parametre değerlerini kendi kaynağınızın bilgileriyle değiştirin <placeholder> .

    1. nslookup komutunu çalıştırın:

      nslookup <backend-app-name>.azurewebsites.net
      
    2. curl Site içeriğini yeniden doğrulamak için komutunu çalıştırın:

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

    Arka uçla uygulama bağlantılarını doğrulamayı gösteren bir ön uç örneğine yönelik SSH oturumunun ekran görüntüsü.

    nslookup komutu, 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 adresinizi Azure portalından onaylayabilirsiniz. Arka uç web uygulamanızın Ayarlar>Ağ İletişimi sayfasına gidin.

     Gelen IP adresinin vurgulandığı Azure portalında bir web uygulamasının Ağ sayfasını gösteren ekran görüntüsü.

  3. Aynı nslookup ve curl komutlarını başka bir terminalden (ön uç örneklerinizde SSH oturumu olmayan bir oturum) yineleyin.

    Erişimin yasak olduğunu gösteren arka uç web uygulaması için nslookup ve curl komutlarını çalıştıran bir dış terminalin ekran görüntüsü.

    komutu 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, sitenin herkese açık internetten erişilemediği anlamına gelir; bu da zaten amaçlanan davranıştır.

    Adres nslookup yalnızca özel DNS bölgesi üzerinden sanal ağın içinden çözümlenebilir olduğundan, komut özel IP'ye çözümlenmez. Sanal ağda yalnızca ön uç web uygulaması bulunur. Komutunu dış terminalden arka uç web uygulamasında çalıştırmaya curl çalışırsanız, döndürülen HTML Hata 403 iletisini içerir: Yasak - Erişmeye çalıştığınız web uygulaması erişiminizi engelledi. Bazı terminaller, arka uç web uygulamasına doğrudan erişmeye çalıştığınızda döndürülen hata sayfasıyla aynı HTML'yi de görüntüler.

Kaynakları temizle

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

<placeholder> parametre değerini kendi kaynağınızın bilgileriyle değiştirin:

az group delete --name <resource-group>

Bu komutun tamamlanması birkaç dakika sürebilir.

Sık sorulan sorular

Bu öğreticide, güvenli bir N katmanlı web uygulamasını desteklemek için temel bir altyapı dağıttınız. App Service, güvenlikle ilgili en iyi yöntemleri ve önerileri takip eden uygulamalar çalıştırdığınızdan emin olmanıza yardımcı olabilecek özellikler sağlar.

Bu bölüm, uygulamalarınızı daha da güvenli bir şekilde korumanıza ve kaynaklarınızı en iyi yöntemlere göre dağıtmanıza ve yönetmenize yardımcı olabilecek sık sorulan soruların yanıtlarını içerir.

Hizmet sorumlusu dışındaki yöntemlerle dağıtım yapma

Bu öğreticide temel kimlik doğrulamayı devre dışı bıraktınız. Kullanıcı adı ve parola kullanarak veya yayımlama profili kullanarak arka uç SCM sitesiyle kimlik doğrulaması yapamazsınız. Ancak, hizmet sorumlusu kullanarak kimlik doğrulaması yerine OpenID Connect kimlik bilgilerini kullanabilirsiniz.

App Service'te GitHub Actions dağıtımı yapılandırma

Azure deponuzda bir iş akışı dosyasını otomatik olarak oluşturur. Seçili depo ve daldaki yeni gönderimler, App Service uygulamanıza sürekli olarak dağıtılır. İşlemeleri ve dağıtımları GitHub Logs sekmesinde 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 sitesinin güvenli genel erişimini onaylayın

FTP ve SCM erişimini kilitlediğinizde, uç nokta genel erişime açık olsa bile yalnızca Microsoft Entra tarafından desteklenen kimliklerin SCM uç noktasına erişebilmesini sağlayabilirsiniz. Bu ayar, arka uç web uygulamanızın hala güvenli olduğundan emin olmanıza yardımcı olur.

Açık bir arka uç SCM sitesi olmadan dağıtın

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

Bu mimariyi bir şablonla dağıtın

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

ARM ve Bicep şablonlarının nasıl dağıtılacağını öğrenmek için Azure CLI ile Bicep dosyalarını dağıtma belgesine bakın.