Güvenli bir şekilde yönetilen web uygulamaları

Azure App Service
Azure Application Gateway
Azure SQL Database
Azure VPN Gateway
Azure Web Application Firewall

Bu makalede, Azure Uygulaması Hizmet Ortamı'nı kullanarak güvenli uygulamaları dağıtmaya genel bir bakış sağlanır. İnternet'ten uygulama erişimini kısıtlamak için Azure Uygulaması lication Gateway hizmeti ve Azure Web Uygulaması Güvenlik Duvarı kullanılır. Bu makalede, Azure DevOps kullanan App Service Ortamı için sürekli tümleştirme ve sürekli dağıtım (CI/CD) hakkında da rehberlik sağlanır.

Bu senaryo genellikle müşterilerin uygulama düzeyinde güvenliğe ek olarak platform düzeyinde güvenliğin bilincinde olduğu bankacılık ve sigorta gibi sektörlerde dağıtılır. Bu kavramları göstermek için kullanıcıların gider raporları göndermesine olanak tanıyan bir uygulama kullanacağız.

Olası kullanım örnekleri

Aşağıdaki kullanım örnekleri için bu senaryoyu göz önünde bulundurun:

  • Ek güvenliğin gerekli olduğu bir Azure Web Uygulaması oluşturma.
  • Paylaşılan kiracı App Service Planları yerine ayrılmış kiracı sağlama.
  • Azure DevOps'un şirket içinde yük dengeli (ILB) Bir Uygulama Hizmeti Ortamı ile kullanılması.

Mimari

Diagram featuring the sample scenario architecture for Secure ILB App Service Environment Deployment.

Bu mimarinin bir Visio dosyasını indirin.

Veri akışı

  1. HTTP/HTTPS istekleri önce Application Gateway'e isabet eder.
  2. İsteğe bağlı olarak (diyagramda gösterilmez), Web Uygulaması için Microsoft Entra kimlik doğrulamasını etkinleştirebilirsiniz. Trafik Application Gateway'e ilk kez çarptıktan sonra kullanıcıdan uygulamayla kimlik doğrulaması için kimlik bilgileri sağlaması istenir.
  3. Kullanıcı istekleri ortamın iç yük dengeleyicisi (ILB) üzerinden akar ve bu da trafiği Expenses Web App'e yönlendirir.
  4. Kullanıcı daha sonra bir gider raporu oluşturmaya devam eder.
  5. Gider raporunu oluşturmanın bir parçası olarak, dağıtılan API Uygulaması kullanıcının yönetici adını ve e-postasını almak için çağrılır.
  6. Oluşturulan gider raporu Azure SQL Veritabanı depolanır.
  7. Sürekli dağıtımı kolaylaştırmak için kod Azure DevOps örneğinde denetlendi.
  8. Derleme VM'sinde Azure DevOps Aracısı yüklüdür ve derleme VM'sinin Web Uygulamasının App Service Ortamı dağıtılacağı bitleri çekmesine olanak tanır (Derleme VM'si aynı sanal ağın içindeki bir alt ağa dağıtıldığından).

Components

  • App Service Ortamı, uygulamayı yüksek ölçekte güvenli bir şekilde çalıştırmak için tamamen yalıtılmış, ayrılmış bir ortam sağlar. Ayrıca, App Service Ortamı ve üzerinde çalışan iş yükleri bir sanal ağın arkasında olduğundan, ek bir güvenlik ve yalıtım katmanı da sağlar. Yüksek ölçek ve yalıtım gereksinimi, ILB App Service Ortamı seçiminin yapılmasına neden oldu.
  • Bu iş yükü yalıtılmış App Service fiyatlandırma katmanını kullandığından uygulama, Standart'a kıyasla daha hızlı işlemciler, SSD depolama ve iki kat bellek-çekirdek oranı kullanarak Azure veri merkezinde özel ayrılmış bir ortamda çalışır.
  • Azure Uygulaması Hizmetleri Web Uygulaması ve API Uygulaması ana bilgisayar web uygulamaları ve RESTful API'leri. Bu uygulamalar ve API'ler, otomatik ölçeklendirme, özel etki alanları vb. sunan yalıtılmış hizmet planında, ancak ayrılmış bir katmanda barındırılır.
  • Azure Application Gateway , Katman 7'de çalışan ve web uygulamasına gelen trafiği yöneten bir web trafiği yük dengeleyicidir. Trafiğin şifresini yeniden çözmek için web uygulamasını barındıran web sunucularından ek yük kaldıran SSL boşaltma özelliği sunar.
  • Web Uygulaması Güvenlik Duvarı (WAF), Application Gateway'in bir özelliğidir. Application Gateway'de WAF'nin etkinleştirilmesi güvenliği daha da artırır. WAF, web uygulamasını siteler arası betik oluşturma, oturum ele geçirmeleri ve SQL ekleme gibi saldırılara karşı korumak için OWASP kurallarını kullanır.
  • Azure SQL Veritabanı seçildi çünkü bu uygulamadaki verilerin çoğu ilişkisel verilerdir ve bazı veriler belge ve Blob olarak kullanılır.
  • Azure Ağı , Azure'da çeşitli ağ özellikleri sağlar ve ağlar Azure'daki diğer sanal ağlarla eşlenebilir. Bağlan, ExpressRoute veya siteden siteye aracılığıyla şirket içi veri merkezleriyle de oluşturulabilir. Bu durumda, verilerin yalnızca Azure sanal ağı ile SQL Veritabanı örneği arasında akmasını sağlamak için sanal ağda bir hizmet uç noktası etkinleştirilir.
  • Azure DevOps , ekiplerin çevik geliştirmeyi destekleyen özellikleri kullanarak sprint'ler sırasında işbirliği yapmasına ve derleme ve yayın işlem hatları oluşturmasına yardımcı olmak için kullanılır.
  • Yüklü aracının ilgili derlemeyi aşağı çekebilmesi ve web uygulamasını ortama dağıtabilmesi için bir Azure derleme VM'si oluşturuldu.

Alternatifler

bir App Service Ortamı, Windows üzerinde normal web uygulamaları çalıştırabilir veya bu örnekte olduğu gibi, her biri Linux kapsayıcısı olarak çalışan ortam içinde dağıtılan web uygulamaları. Bu tek örnekli kapsayıcılı uygulamaları barındırmak için bir App Service Ortamı seçildi. Kullanabileceğiniz alternatifler vardır; çözümünüzü tasarlarken aşağıdaki önemli noktaları gözden geçirin.

  • Azure Service Fabric: Ortamınız çoğunlukla Windows tabanlıysa ve iş yükleriniz öncelikli olarak .NET Framework tabanlıysa ve .NET Core'a yeniden eklemeyi düşünüyorsanız, Windows Server Kapsayıcılarını desteklemek ve dağıtmak için Service Fabric'i kullanın. Ayrıca, Service Fabric C# veya Java programlama API'lerini destekler ve yerel mikro hizmetler geliştirmek için kümeler Windows veya Linux'ta sağlanabilir.
  • Azure Kubernetes Service (AKS), genellikle mikro hizmet tabanlı mimari kullanan karmaşık çok kapsayıcılı uygulamaları barındırmaya daha uygun bir açık kaynak proje ve düzenleme platformudur. AKS, Kubernetes kümesi sağlama ve yapılandırma karmaşıklıklarını soyutlayan yönetilen bir Azure hizmetidir. Ancak, kubernetes platformunu desteklemek ve korumak için önemli bir bilgi gereklidir, bu nedenle birkaç tek örnekli kapsayıcılı web uygulaması barındırmak en iyi seçenek olmayabilir.

Veri katmanı için diğer seçenekler şunlardır:

  • Azure Cosmos DB: Verilerinizin çoğu ilişkisel olmayan biçimdeyse, Azure Cosmos DB iyi bir alternatiftir. Bu hizmet MongoDB, Cassandra, Graph verileri veya basit tablo depolama gibi diğer veri modellerini çalıştırmak için bir platform sağlar.

Dikkat edilmesi gereken noktalar

ILB App Service Ortamı sertifikalarla ilgilenirken dikkat edilmesi gereken bazı noktalar vardır. Sertifikanın sonunda depolanacağı sunucu tarafından oluşturulan bir Sertifika İmzalama İsteği gerektirmeden güvenilen bir köke zincirlenmiş bir sertifika oluşturmanız gerekir. Örneğin, Internet Information Services (IIS) ile ilk adım IIS sunucunuzdan bir CSR oluşturmak ve ardından BUNU SSL sertifika veren yetkiliye göndermektir.

bir App Service Ortamı İç Yük Dengeleyici'den (ILB) CSR düzenleyemezsiniz. Bu sınırlamayı işlemenin yolu joker karakter yordamını kullanmaktır.

Joker karakter yordamı, CSR yerine DNS adı sahipliği kanıtı kullanmanıza olanak tanır. Dns ad alanınız varsa, özel DNS TXT kaydı koyabilirsiniz, joker karakter yordamı kaydın orada olup olmadığını denetler ve bulunursa, doğru kayda sahip olduğunuz için DNS sunucusunun sahibi olduğunuzu bilir. Bu bilgilere bağlı olarak, güvenilir bir köke kaydolan bir sertifika yayınlar ve daha sonra ILB'nize yükleyebilirsiniz. ILB'de güvenilir bir kök SSL sertifikanız olduğundan, Web Apps'te tek tek sertifika depolarıyla herhangi bir işlem yapmanız gerekmez.

ILB App Service Ortamı çalışan hizmetler arasında güvenli çağrılar yapmak istiyorsanız otomatik olarak imzalanan veya dahili olarak verilen SSL sertifikasının çalışmasını sağlayın. ILB App Service Ortamı şirket içinde verilen SSL sertifikasıyla nasıl çalışacağına ve iç CA'nın güvenilen kök depoya nasıl yükleneceklerine ilişkin dikkate alınacak başka bir çözüm.

App Service Ortamı sağlarken, ortam için bir etki alanı adı seçerken aşağıdaki sınırlamaları göz önünde bulundurun. Etki alanı adları şu şekilde olamaz:

  • net
  • azurewebsites.net
  • p.azurewebsites.net
  • nameofthease.p.azurewebsites.net

Ayrıca, uygulamalar için kullanılan özel etki alanı adı ve ILB App Service Ortamı tarafından kullanılan etki alanı adı çakışamaz. Etki alanı adı contoso.com olan bir ILB App Service Ortamı için, uygulamalarınız için aşağıdaki gibi özel etki alanı adları kullanamazsınız:

  • www.contoso.com
  • abcd.def.contoso.com
  • abcd.contoso.com

ILB App Service Ortamı için bu özel etki alanı adlarıyla çakışmayacak bir etki alanı seçin. Bu örnekte ortamınızın etki alanı için contoso-internal.com gibi bir şey kullanabilirsiniz çünkü bu, .contoso.com ile biten özel etki alanı adlarıyla çakışmaz.

Dikkate alınması gereken bir diğer nokta da DNS'dir. App Service Ortamı içindeki uygulamaların birbirleriyle iletişim kurmasına izin vermek için, örneğin bir web uygulamasının BIR API ile konuşmasına izin vermek için ortamı barındıran sanal ağınız için DNS'nin yapılandırılmış olması gerekir. Kendi DNS'nizi getirebilir veya Azure DNS özel bölgelerini kullanabilirsiniz.

Kullanılabilirlik

Ölçeklenebilirlik

Güvenlik

Dayanıklılık

  • Daha fazla dayanıklılık ve ölçeklenebilirlik için coğrafi olarak dağıtılmış ölçeği App Service Ortamı ile kullanmayı göz önünde bulundurun.
  • Dayanıklılık için tipik tasarım desenlerini gözden geçirin ve uygun yerlerde bunları uygulamayı göz önünde bulundurun.
  • App Service için önerilen birkaç uygulamayı Azure Mimari Merkezi'nde bulabilirsiniz.
  • Veri katmanı için etkin coğrafi çoğaltmayı ve görüntüler ve kuyruklar için coğrafi olarak yedekli depolamayı kullanmayı göz önünde bulundurun.
  • Dayanıklılık hakkında daha ayrıntılı bir tartışma için Azure Mimari Merkezi'ndeki ilgili makaleye bakın.

Bu senaryoyu dağıtın

Bu senaryoyu dağıtmak için, her bileşeni el ile dağıtmayı gösteren bu adım adım öğreticiyi izleyin. Öğreticiyi takip ederken v2 yerine v3 App Service Ortamı seçin. Bu öğretici ayrıca basit bir Contoso gider raporlama uygulaması çalıştıran bir .NET örnek uygulaması sağlar.

Fiyatlandırma

Bu senaryoyu çalıştırmanın maliyetini keşfedin. Tüm hizmetler maliyet hesaplayıcısında önceden yapılandırılmıştır. Fiyatlandırmanın belirli bir kullanım örneğinde nasıl değişeceğini görmek için uygun değişkenleri beklenen trafiğinizle eşleşecek şekilde değiştirin.

Almayı beklediğiniz trafik miktarına göre üç örnek maliyet profili sağladık:

  • Küçük: Bu fiyatlandırma örneği, ayda birkaç bin kullanıcıya hizmet veren en düşük üretim düzeyi örneği için gerekli bileşenleri temsil eder. Uygulama, otomatik ölçeklendirmeyi etkinleştirmek için yeterli olacak tek bir standart web uygulaması örneği kullanıyor. Diğer bileşenlerin her biri, maliyeti en aza indirecek temel bir katmana ölçeklendirilir, ancak yine de üretim düzeyinde iş yükünü işlemek için SLA desteği ve yeterli kapasite olduğundan emin olur.
  • Orta: Bu fiyatlandırma örneği, orta büyüklükte bir dağıtım için gereken bileşenleri temsil eder. Burada bir ay boyunca yaklaşık 100.000 kullanıcı olduğunu tahmin ediyoruz. Beklenen trafik, orta düzeyde bir standart katmana sahip tek bir app service örneğinde işlenir. Ayrıca, bilişsel ve arama hizmetlerinin orta katmanları hesap makinesine eklenir.
  • Büyük: Bu fiyatlandırma örneği, terabaytlarca veri taşıyarak aylık milyonlarca kullanıcının sırasıyla yüksek ölçekli bir uygulamayı temsil eder. Bu kullanım düzeyinde, traffic manager tarafından önlenen birden çok bölgeye dağıtılan yüksek performanslı, premium katman web uygulamaları gereklidir. Veriler şu bileşenlerden oluşur: depolama, veritabanları ve CDN, tümü terabaytlar için yapılandırılmış veriler.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazar:

  • Faysal Mustafa | Kıdemli Müşteri Mühendisi

Sonraki adımlar