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.
Bu makalede, Azure platformunda bir web uygulamasının barındırılmasını, korunmasını, ölçeklendirilip izlenmesini kolaylaştırmak için sağlam ve üretime hazır bir altyapının nasıl dağıtılacağına ilişkin kapsamlı bir kılavuz sağlanmaktadır.
AWS'de Yelb dağıtımı
AWS'de Yelb örnek web uygulaması Bash, AWS CLI, eksctl, kubectl ve Helm kullanılarak dağıtılır. Yardımcı örnek, AWS Elastic Kubernetes Service'te (EKS)Yelb uygulamasının dağıtımını otomatikleştirmek için kullanabileceğiniz Bash betiklerini ve YAML bildirimlerini içerir. Bu çözüm, Amazon Elastic Kubernetes Service (EKS) üzerinde çalışan bir web uygulamasını korumak için AWS WAF kullanarak bir web uygulaması güvenlik duvarının nasıl uygulandığını gösterir. EkS kümesi oluşturmak ve Yelb uygulamasını dağıtmak için Bash betiklerini kullanabilirsiniz. Yelb web uygulaması, Amazon Application Load Balancer (ALB) kullanılarak genel İnternet'e sunulur ve AWS WAF web erişim denetim listesi (web ACL) kullanılarak korunur. Ayrıntılı yönergeler için bkz. AWS Elastic Kubernetes Service'ten (EKS) Azure Kubernetes Service'e (AKS) Web Uygulaması Taşıma.
Azure'da Yelb dağıtımı
Aşağıdaki bölümlerde , Yelb örnek web uygulamasını bir Azure Kubernetes Service (AKS) kümesine dağıtmayı ve NGINX giriş denetleyicisi gibi bir giriş denetleyicisi aracılığıyla kullanıma sunma hakkında bilgi edineceksiniz. Giriş denetleyicisi hizmetine, AKS kümesini barındıran sanal ağ içindeki trafiği dengeleyen bir iç (veya özel) yük dengeleyici aracılığıyla erişilebilir. Karma bir senaryoda yük dengeleyici ön ucuna şirket içi ağdan erişilebilir. İç yük dengeleme hakkında daha fazla bilgi edinmek için bkz. Azure Kubernetes Service (AKS) ile iç yük dengeleyici kullanma.
Yardımcı örnek, Helm grafiğini kullanarak uygulama yönlendirme eklentisiyle yönetilen bir NGINX giriş denetleyicisi veya yönetilmeyen bir NGINX giriş denetleyicisi yüklemeyi destekler. NGINX giriş denetleyicisi ile uygulama yönlendirme eklentisi aşağıdaki özellikleri sağlar:
- Kubernetes NGINX giriş denetleyicisini temel alan yönetilen NGINX giriş denetleyicilerinin kolay yapılandırılması.
- Genel ve özel bölge yönetimi için Azure DNS ile tümleştirme.
- Azure Key Vault'ta depolanan sertifikalarla SSL sonlandırma.
Diğer yapılandırmalar için
- DNS ve SSL yapılandırması
- Uygulama yönlendirme eklentisi yapılandırması
- Azure özel DNS bölgesi için iç NGIX giriş denetleyicisini yapılandırın.
Güvenliği artırmak için Yelb uygulaması bir Azure Application Gateway kaynağı tarafından korunur. Bu kaynak AKS kümesiyle aynı sanal ağ içindeki ayrılmış bir alt ağa veya eşlenmiş bir sanal ağa dağıtılır. Azure Web Uygulaması Güvenlik Duvarı (WAF),Azure Kubernetes Service'te (AKS) barındırılan ve Yaygın açıklara ve güvenlik açıklarına karşı Azure Application Gateway aracılığıyla kullanıma sunulan web uygulamasına erişimin güvenliğini sağlar.
Önkoşullar
- Etkin bir Azure aboneliği. Hesabınız yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.
- Azure hesabınızdaki bir abonelikte, Sahip Azure yerleşik rolü veya Kullanıcı Erişimi Yöneticisi ve Katkıda Bulunan yerleşik rolleri bulunmaktadır.
- Azure CLI sürüm 2.61.0 veya üzeri. Daha fazla bilgi için bkz . Azure CLI'yı yükleme.
- Azure Kubernetes Service (AKS) önizleme uzantısı.
- jq sürüm 1.5 veya üzeri.
- Python 3 veya üzeri.
- kubectl sürüm 1.21.0 veya üzeri
- Helm sürüm 3.0.0 veya üzeri
- Visual Studio Code, Bicep uzantısıyla birlikte desteklenen platformlardan birine yüklenir.
- Yelb web uygulaması için geçerli bir TLS sertifikasına sahip mevcut bir Azure Key Vault kaynağı.
- Yelb uygulamasının ad çözümlemesi için mevcut bir Azure DNS Bölgesi veya eşdeğer DNS sunucusu.
Mimarlık
Bu örnek, AKS kümesi oluşturmak, Yelb uygulamasını dağıtmak, NGINX giriş denetleyicisini kullanarak UI hizmetini kullanıma sunmak ve Azure Application Gateway ve Azure Web Uygulaması Güvenlik Duvarı (WAF) ile korumak için Bicep şablonları, Bash betikleri ve YAML bildirimlerinden oluşan bir koleksiyon sağlar.
Bu örnek ayrıca iki ayrı Bicep parametre dosyası ve her biri iki farklı çözüm seçeneği dağıtmaya yönelik iki Bash betikleri ve YAML bildirimi kümesi içerir. Bicep hakkında daha fazla bilgi için bkz. Bicep nedir?
HTTP aracılığıyla Application Gateway ve Yelb çağrısında TLS sonlandırma
Bu çözümde Azure Web Uygulaması Güvenlik Duvarı (WAF), kötü amaçlı saldırıları engelleyerek sistemin güvenliğini sağlar.
Azure Application Gateway istemci uygulamalarından gelen çağrıları alır, TLS sonlandırması gerçekleştirir ve istekleri AKS tarafından barındırılan yelb-ui hizmete iletir. Bu iletişim, HTTP aktarım protokolü kullanılarak iç yük dengeleyici ve NGINX giriş denetleyicisi aracılığıyla sağlanır. Aşağıdaki diyagramda mimari gösterilmektedir:
İleti akışı aşağıdaki gibidir:
-
Azure Application Gateway TLS sonlandırmasını işler ve HTTP üzerinden AKS tarafından barındırılan
yelb-uihizmete gelen çağrılar gönderir. - Application Gateway Dinleyicisi, güvenli iletişim sağlamak için Azure Key Vault'tan alınan bir SSL sertifikası kullanır.
- Dinleyici ile ilişkili Azure WAF İlkesi, gelen isteklere OWASP kuralları ve özel kurallar uygulayarak birçok kötü amaçlı saldırı türünü etkili bir şekilde önler.
- Application Gateway Arka Uç HTTP Ayarları, 80 numaralı bağlantı noktasını kullanarak HTTP aracılığıyla Yelb uygulamasını çağırır.
- Application Gateway Arka Uç Havuzu ve Sistem Durumu Yoklaması, trafik yönetimi için HTTP protokolunu kullanarak AKS iç yük dengeleyici aracılığıyla NGINX giriş denetleyicisini çağırır.
- NGINX giriş denetleyicisi, küme içinde güvenli iletişim sağlamak için AKS iç yük dengeleyicisini kullanır.
- Kubernetes giriş nesnesi NGINX giriş denetleyicisini kullanarak uygulamayı iç yük dengeleyici aracılığıyla HTTP aracılığıyla kullanıma sunar.
- türüne
yelb-uiClusterIPsahip hizmet, çağrısını küme içinde veya NGINX giriş denetleyicisi aracılığıyla kısıtlar.
Azure Application Gateway kullanarak uçtan uca TLS uygulama
TLS sonlandırma
Azure Application Gateway , ağ geçidi düzeyinde TLS sonlandırmayı destekler; bu da arka uç sunucularına gönderilmeden önce ağ geçidinde trafiğin şifresinin çözüldüğünü gösterir. TLS sonlandırmayı yapılandırmak için dinleyiciye bir TLS/SSL sertifikası eklemeniz gerekir. Sertifika, hem özel hem de ortak anahtarları içeren Kişisel Bilgi Değişimi (PFX) biçiminde olmalıdır. Sertifikayı Azure Key Vault'tan Application Gateway'e aktarabilirsiniz. Daha fazla bilgi için bkz. Key Vault sertifikalarıyla TLS sonlandırma.
Sıfır Güven güvenlik modeli
Sıfır Güven güvenlik modelini benimserseniz, Azure Application Gateway gibi bir hizmet proxy'si ile arka uç sunucuları arasında şifrelenmemiş iletişimi engellemeniz gerekir. Sıfır Güven güvenlik modeliyle, ağ içindeki kaynaklara erişmeye çalışan hiçbir kullanıcıya veya cihaza otomatik olarak güven verilmez. Bunun yerine, kullanıcının konumuna veya ağına bakılmaksızın her istek için kimlik ve yetkilendirmenin sürekli doğrulanmasını gerektirir. Senaryomuzda, Sıfır Güven güvenlik modelinin uygulanması, Azure Application Gateway'i gelen istekler için ön uç işlevi gören bir hizmet ara sunucusu olarak kullanmayı içerir. Bu istekler daha sonra şifrelenmiş biçimde Azure Kubernetes Service'teki (AKS) NGINX giriş denetleyicisine iner.
Application Gateway ile uçtan uca TLS
Azure Application Gateway'i arka uç sunucularıyla uçtan uca TLS şifrelemesi için yapılandırarak Sıfır Güven yaklaşımı uygulayabilirsiniz. Uçtan uca TLS şifrelemesi , Application Gateway'in tanımlama bilgisi tabanlı oturum benzimliği, URL tabanlı yönlendirme, sitelere dayalı yönlendirme ve X-Forwarded-* üst bilgilerini yeniden yazma veya ekleme gibi katman 7 yük dengeleme özelliklerinden yararlanırken hassas verileri arka uca güvenli bir şekilde iletmenizi sağlar.
Application Gateway uçtan uca TLS iletişim moduyla yapılandırıldığında, ağ geçidindeki TLS oturumlarını sonlandırır ve kullanıcı trafiğinin şifresini çözer. Daha sonra, trafiği yönlendirecek uygun arka uç havuzu örneğini seçmek için yapılandırılan kuralları uygular. Ardından Application Gateway, arka uç sunucusuna yeni bir TLS bağlantısı başlatır ve isteği arka uçtan iletmeden önce arka uç sunucusunun ortak anahtar sertifikasını kullanarak verileri yeniden şifreler. Web sunucusundan gelen yanıt, son kullanıcıya ulaşmadan önce aynı işlemi izler. Uçtan uca TLS'yi etkinleştirmek için Arka Uç HTTP Ayarı'ndaki protokol ayarını HTTPS olarak ayarlamanız ve arka uç havuzuna uygulamanız gerekir. Bu yaklaşım, arka uç sunucularıyla iletişiminizin güvenliğinin sağlanmasını ve gereksinimlerinizle uyumlu olmasını sağlar.
Daha fazla bilgi için bkz. Application Gateway uçtan uca TLS şifrelemesi ve Application Gateway'inizin güvenliğini sağlamaya yönelik en iyi yöntemler.
Bu çözümde Azure Web Uygulaması Güvenlik Duvarı (WAF), kötü amaçlı saldırıları engelleyerek sistemin güvenliğini sağlar.
Azure Application Gateway, istemci uygulamalarından gelen çağrıları işler, TLS sonlandırması gerçekleştirir ve iç yük dengeleyici ve NGINX giriş denetleyicisi aracılığıyla HTTPS aktarım protokolunu kullanarak temel aks tarafından barındırılan hizmeti çağırarak yelb-ui uygular. Aşağıdaki diyagramda mimari gösterilmektedir:
İleti akışı aşağıdaki gibidir:
- Azure Application Gateway TLS sonlandırmasını işler ve HTTPS üzerinden arka uç uygulamasıyla iletişim kurar.
- Application Gateway Dinleyicisi , Azure Key Vault'tan alınan bir SSL sertifikası kullanır.
- Dinleyici ile ilişkili Azure WAF İlkesi, kötü amaçlı saldırıları engellemek için gelen isteklere karşı OWASP kurallarını ve özel kuralları çalıştırır.
- Application Gateway Arka Uç HTTP Ayarları, 443 numaralı bağlantı noktasında HTTPS aracılığıyla AKS tarafından barındırılan
yelb-uihizmeti çağıracak şekilde yapılandırılır. - Uygulama Geçidi Arka Uç Havuzu ve Sağlık Denetleyicisi, AKS iç yük dengeleyicisi aracılığıyla HTTPS kullanarak NGINX giriş denetleyicisine çağrı yapar.
- NGINX giriş denetleyicisi, AKS iç yük dengeleyicisini kullanmak için dağıtılır.
- SAKS kümesi, gizli bilgileri, sertifikaları ve anahtarları bir CSI birimi aracılığıyla Azure Key Vault'tan almak üzere Gizli Bilgiler Deposu CSI Sürücüsü eklentisi için Azure Key Vault sağlayıcısıyla yapılandırılır.
- Key Vault'tan Application Gateway tarafından kullanılan sertifikayı almak için SecretProviderClass kullanılır.
- Kubernetes giriş nesnesi, AKS iç yük dengeleyici aracılığıyla HTTPS aracılığıyla uygulamayı kullanıma açmak için NGINX giriş denetleyicisini kullanır.
- Hizmetin
yelb-ui, çağrısını küme içinde veyaClusterIParacılığıyla kısıtlayan bir türü vardır.
Sistemin güvenliğini ve kararlılığını sağlamaya yardımcı olmak için aşağıdaki önerileri göz önünde bulundurun:
- En iyi güvenliği sağlamak için Azure WAF İlkesi'ni düzenli olarak en son kurallarla güncelleştirin.
- Gelen istekleri ve olası saldırıları izlemek ve analiz etmek için izleme ve günlüğe kaydetme mekanizmaları uygulayın.
- Güvenlik açıklarını gidermek ve güvenli bir altyapıyı korumak için AKS kümesi, NGINX giriş denetleyicisi ve Application Gateway'in bakım ve güncelleştirmelerini düzenli olarak gerçekleştirin.
- Gelen istekleri ve olası saldırıları izlemek ve analiz etmek için izleme ve günlüğe kaydetme mekanizmaları uygulayın.
- Güvenlik açıklarını gidermek ve güvenli bir altyapıyı korumak için AKS kümesi, NGINX giriş denetleyicisi ve Application Gateway'in bakım ve güncelleştirmelerini düzenli olarak gerçekleştirin.
Konak adı
Application Gateway Dinleyicisi ve Kubernetes girişi aynı konak adını kullanacak şekilde yapılandırılmıştır. Aşağıdaki nedenlerle bir hizmet ara sunucusu ve arka uç web uygulaması için aynı ana bilgisayar adını kullanmak önemlidir:
- Oturum durumunun korunması: Ara sunucu ve arka uç uygulaması için farklı bir ana bilgisayar adı kullandığınızda oturum durumu kaybolabilir. Bu, kullanıcı oturumlarının düzgün devam etmeyebileceği ve kötü bir kullanıcı deneyimine ve olası veri kaybına neden olabileceği anlamına gelir.
- Kimlik doğrulama hatası: Ana bilgisayar adı ara sunucu ile arka uç uygulaması arasında farklılık gösteriyorsa, kimlik doğrulama mekanizmaları başarısız olabilir. Bu yaklaşım, kullanıcıların uygulama içinde oturum açamamasına veya güvenli kaynaklara erişememesine neden olabilir.
- URL'lerin yanlışlıkla açığa çıkarılması: Konak adı korunmazsa arka uç URL'lerinin son kullanıcılara açık olma riski vardır. Bu, olası güvenlik açıklarına ve hassas bilgilere yetkisiz erişime yol açabilir.
- Tanımlama bilgisi sorunları: Tanımlama bilgileri, kullanıcı oturumlarının korunmasında ve istemci ile sunucu arasında bilgi geçirilmesinde önemli bir rol oynar. Konak adı farklı olduğunda tanımlama bilgileri beklendiği gibi çalışmayabilir ve bu, başarısız kimlik doğrulaması, hatalı oturum yönetimi ve yanlış yönlendirme gibi sorunlara yol açabilir.
- Uçtan uca TLS/SSL gereksinimleri: Ara sunucu ile arka uç hizmeti arasında güvenli iletişim için uçtan uca TLS/SSL gerekiyorsa, özgün ana bilgisayar adı için eşleşen bir TLS sertifikası gereklidir. Aynı konak adının kullanılması sertifika yönetimi işlemini basitleştirir ve güvenli iletişimin sorunsuz bir şekilde kurulmasını sağlar.
Hizmet ara sunucusu ve arka uç web uygulaması için aynı ana bilgisayar adını kullanarak bu sorunlardan kaçınabilirsiniz. Arka uç uygulaması, oturum durumunun, kimlik doğrulamasının ve URL işlemenin doğru çalıştığından emin olarak web tarayıcısıyla aynı etki alanını görür.
İleti Akışı
Aşağıdaki diyagramda, dağıtım ve çalışma zamanı sırasında ileti akışına yönelik adımlar gösterilmektedir.
Dağıtım iş akışı
Aşağıdaki adımlarda dağıtım işlemi açıklanmaktadır. Bu iş akışı, önceki diyagramdaki yeşil sayılara karşılık gelir.
- Güvenlik mühendisi, iş yükünün kullandığı özel etki alanı için bir sertifika oluşturur ve bunu bir Azure anahtar kasasına kaydeder. İyi bilinen bir sertifika yetkilisinden (CA) geçerli bir sertifika alabilirsiniz.
- Platform mühendisi main.bicepparams Bicep parametreleri dosyasında gerekli bilgileri belirtir ve Azure kaynaklarını oluşturmak için Bicep şablonlarını dağıtır. Gerekli bilgiler şunları içerir:
- Azure kaynakları için bir ön ek.
- Mevcut Azure Key Vault'un, iş yükü ana bilgisayar adı ve Application Gateway dinleyicisinin özel etki alanı için TLS sertifikasını tutan adı ve kaynak grubu.
- Aks kümenize aşağıdaki paketleri yüklemek için dağıtım betiğini yapılandırabilirsiniz. Daha fazla bilgi için Bicep modülünün parametreler bölümüne bakın.
- Prometheustopluluğu Kubernetes Helm grafiklerini kullanan Prometheus ve Grafana: Varsayılan olarak, bu örnek yapılandırma Aks kümesine Prometheus ve Grafana'yı yüklemez. Bunun yerine Azure Yönetilen Prometheus'u ve Azure Yönetilen Grafana'yı yükler.
- cert-manager: Hem Application Gateway hem de NGINX giriş denetleyicisi Azure Key Vault'tan önceden yüklenmiş bir TLS sertifikası kullandığından, bu örnekte Sertifika Yöneticisi gerekli değildir.
- Helm grafiği aracılığıyla NGINX giriş denetleyicisi: Yönetilen NGINX giriş denetleyicisini uygulama yönlendirme eklentisiyle kullanıyorsanız Helm aracılığıyla NGINX giriş denetleyicisinin başka bir örneğini yüklemeniz gerekmez.
- Application Gateway Dinleyicisi TLS sertifikasını Azure Key Vault'tan alır.
- Kubernetes giriş nesnesi, Yelb UI hizmetini HTTPS üzerinden kullanıma açmak için Gizli Diziler Deposu CSI Sürücüsü için Azure Key Vault sağlayıcısından elde edilen sertifikayı kullanır.
- Application Gateway Dinleyicisi, TlS sertifikasını Azure key Vault'tan alır.
- Kubernetes giriş nesnesi, Yelb UI hizmetini HTTPS aracılığıyla kullanıma açmak için Azure Key Vault sağlayıcısından Gizli Dizi Deposu CSI Sürücüsü için alınan sertifikayı kullanır.
Çalışma zamanı iş akışı
- İstemci uygulaması, ana bilgisayar adını kullanarak örnek web uygulamasını çağırır. Application Gateway Dinleyicisi'nin özel etki alanıyla ilişkilendirilmiş DNS bölgesi, DNS sorgusunu Application Gateway'in ön uç IP yapılandırması tarafından kullanılan Azure genel IP adresiyle çözümlemek için bir
Akayıt kullanır. - İstek, Application Gateway'in ön uç IP yapılandırması tarafından kullanılan Azure genel IP'sine gönderilir.
- Application Gateway aşağıdaki eylemleri gerçekleştirir:
- Application Gateway TLS sonlandırmasını işler ve HTTPS üzerinden arka uç uygulamasıyla iletişim kurar.
- Application Gateway Dinleyicisi , Azure Key Vault'tan alınan bir SSL sertifikası kullanır.
- Dinleyiciyle ilişkilendirilmiş Azure WAF İlkesi, gelen isteğe karşı OWASP kurallarını ve özel kuralları çalıştırır ve kötü amaçlı saldırıları engeller.
- Application Gateway Arka Uç HTTP Ayarları, 443 numaralı bağlantı noktasında HTTPS aracılığıyla örnek web uygulamasını çağıracak şekilde yapılandırılır.
- Application Gateway Arka Uç Havuzu, HTTPS kullanarak AKS iç yük dengeleyici aracılığıyla NGINX giriş denetleyicisini çağırır.
- İstek, NGINX giriş denetleyicisinin podunu barındıran aracı düğümlerinden birine gönderilir.
- NGINX giriş denetleyicisi çoğaltmalarından biri isteği işler ve isteği hizmetin hizmet uç noktalarından
yelb-uibirine gönderir. -
yelb-uiyelb-appserverhizmetini çağırır. -
yelb-appserver,yelb-dbveyelb-cachehizmetlerini çağırır. -
yelb-uiyelb-appserverhizmetini çağırır. -
yelb-appserver,yelb-dbveyelb-cachehizmetlerini çağırır.
Dağıtım
Varsayılan olarak, Bicep şablonları Aks kümesini Azure CNI Katman ağı eklentisi ve Cilium veri düzlemi ile yükler. Alternatif bir ağ eklentisi kullanabilirsiniz. Ayrıca, proje nasıl bir AKS kümesi aşağıdaki uzantılar ve özelliklerle dağıtılacağını gösterir.
- Microsoft Entra İş Yükü Kimliği
- Istio tabanlı hizmet ağı eklentisi
- API Server VNET tümleştirmesi
- Azure NAT Ağ Geçidi
- Olay temelli otomatik ölçeklendirme (KEDA) eklentisi
- Dapr uzantısı
- Flux V2 uzantısı
- Dikey Pod Otomatik Ölçeklendirme
- Gizli Anahtar Deposu CSI Sürücüsü için Azure Key Vault Sağlayıcısı
- Görüntü Temizleyici
- Azure Kubernetes Service (AKS) Ağ Gözlemlenebilirliği
- Uygulama yönlendirme eklentisiyle yönetilen NGINX girişi
Üretim ortamında, Çalışma Süresi SLA'sı ile özel bir AKS kümesi dağıtmanızı kesinlikle öneririz. Daha fazla bilgi için bkz. Genel DNS adresine sahip özel AKS kümesi.
Alternatif olarak, yetkili IP adresi aralıklarını kullanarak bir genel AKS kümesi dağıtabilir ve API sunucusuna güvenli erişim sağlayabilirsiniz. Bicep şablonlarını kullanarak Azure'da altyapıyı dağıtma hakkında ayrıntılı bilgi ve yönergeler için yardımcı Azure kod örneğine bakın.
Üretim ortamında, Çalışma Süresi SLA'sı ile özel bir AKS kümesi dağıtmanızı kesinlikle öneririz. Daha fazla bilgi için bkz. Genel DNS adresi olan özel AKS kümesi. Alternatif olarak, yetkili IP adresi aralıklarını kullanarak bir genel AKS kümesi dağıtabilir ve API sunucusuna güvenli erişim sağlayabilirsiniz. Bicep şablonlarını kullanarak Azure'da altyapıyı dağıtma hakkında ayrıntılı bilgi ve yönergeler için yardımcı Azure kod örneğine bakın.
Sonraki adım
Katkıda Bulunanlar
Microsoft bu makaleyi korur. Orijinal olarak aşağıdaki katkıda bulunanlar yazdı:
Asıl yazar:
- Paolo Salvatori | Baş Müşteri Mühendisi
Diğer katkıda bulunanlar:
- Ken Kilty | Baş TPM
- Russell de Pina | Baş TPM
- Erin Schaffer | İçerik Geliştirici 2