Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
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 kullanarak Azure'da kimlik doğrulaması.
İ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 ve yönetme.
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.
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.
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.
Bu öğreticinin tüm kaynaklarını yönetmek için bir kaynak grubu oluşturun.
<resource-group>yer tutucusunu,zava-resourcesgibi yeni kaynak grubunuzun adı olarak ayarlayın. Yer tutucuyu<region-location>, gibieastusyeni 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 $regionLocationDaha fazla bilgi için az group create command başvurusuna bakın.
Kaynaklarınız için bir App Service planı oluşturun.
<app-service-plan>yer tutucusunu,zava-app-service-plangibi yeni App Service planınızın adı olarak ayarlayın.Öğretici örnek,
--skuparametresiniP1V3(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 P1V3Daha fazla bilgi için az appservice plan create command başvurusuna bakın.
Ön uç ve arka uç web uygulamalarını oluşturun.
Öğreticideki örnek, çalışma zamanı dili sürümü
NODE:24-ltsolan iki örnek Node.js uygulaması oluşturur. Kendi uygulamalarınızı kullanmayı tercih ediyorsanız parametre--runtimedeğerini buna göre ayarlayın<language-version>. Kullanılabilir çalışma zamanları listesi için komutunu çalıştırabilirsinizaz webapp list-runtimes:az webapp list-runtimes<frontend-app-name>yer tutucusunu,zava-frontend-appgibi 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ğinzava-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
Azure sanal ağı oluşturma.
<virtual-network-name>yer tutucusunu, örneğinzava-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/16Daha fazla bilgi için az network vnet create komut başvurusuna bakın.
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ğinzava-integration-subnet, ayarlayın.App Service için sanal ağ tümleştirme alt ağının en az CIDR bloğuna
/26sahip olması önerilir./24fazla 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 falseDaha fazla bilgi için az network vnet subnet create komut başvurusuna bakın.
Ö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-subnetyer 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-policiesbayrağınıtrueolarak 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-policiesbayrağı yakında--disable-private-endpoint-network-policiesbayrağının yerini alabilir.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 $privateDNSZoneDaha 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.
Özel DNS bölgesini sanal ağa bağlayın.
<dns-link-name>yer tutucusunu,zava-private-linkgibi 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 FalseDaha fazla bilgi için az network private-dns link vnet create komut başvurusuna bakın.
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-connectiongibi 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 $privateEndpointSubnetDaha fazla bilgi için az network private-endpoint create komut başvurusuna bakın.
Ö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ğinzava-dns-zone-groupgibi, 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 $privateDNSZoneDaha fazla bilgi için az network private-endpoint dns-zone-group create komut başvurusuna bakın.
Ö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:
Ö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.
Arka uç web uygulaması için genel erişimi etkinleştirin.
az webapp update --resource-group $resourceGroupName --name $backendAppName --set publicNetworkAccess=EnabledAna 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=DenySCM 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.
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=falseHer 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.
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.
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.
Hizmet sorumlusu oluştur.
Yer tutucuyu
<service-principal-name>gibizava-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.
Hizmet asıl adınızın kaydına sahip olmak için JSON nesnesini kopyalayın.
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.
Bir tarayıcıda, GitHub'da arka uç Node.js uygulamanız için çatallanmış repoya gidin.
Ayarlar>Güvenlik>Gizli bilgileri ve değişkenler>Eylemler'e gidin.
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-3333cccc4444AZURE_TENANT_ID <tenant-id>aaaabbbb-6666-cccc-7777-dddd8888eeeeAZURE_SUBSCRIPTION_ID <subscription-id>cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6aGitHub'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.
Azure portalında ön uç web uygulamanızın Overview sayfasına gidin.
Sol menüde Dağıtım>merkezini seçin.
Settings sekmesindeSource seçeneğiniGitHub :Azure portalında ön uç web uygulaması için dağıtım kaynağının nasıl seçileceğini gösteren
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.
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 Kaydet'i seçin.
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.
URL'si ile doğrudan
https://<backend-app-name>.azurewebsites.netweb uygulamanıza göz atmayı deneyin.Aşağıdaki tarayıcı iletisini görmeniz gerekir:
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.
Şimdi url'si ile doğrudan
https://<frontend-app-name>.azurewebsites.netweb uygulamanıza göz atmayı deneyin.Bağlantı başarılı olduğunda aşağıdaki sayfayı görürsünüz:
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ç 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.
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 $frontendAppNameDaha fazla bilgi için az webapp ssh komut başvurusuna bakın.
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>.nslookupkomutunu çalıştırın:nslookup <backend-app-name>.azurewebsites.netcurlSite içeriğini yeniden doğrulamak için komutunu çalıştırın:curl https://<backend-app-name>.azurewebsites.net
nslookupkomutu, 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.
Aynı
nslookupvecurlkomutlarını başka bir terminalden (ön uç örneklerinizde SSH oturumu olmayan bir oturum) yineleyin.
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
nslookupyalnı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ırmayacurlç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.
İlgili içerik
Uygulamanızı Azure Sanal Ağ - App Service ağ özellikleri
- .NET için güvenilir web uygulaması düzeni