Aracılığıyla paylaş


Azure Kubernetes Service (AKS) hizmetinde ağ bağlantısı ve güvenlik için en iyi yöntemler

Azure Kubernetes Service'te (AKS) küme oluşturup yönetirken düğümleriniz ve uygulamalarınız için ağ bağlantısı sağlarsınız. Bu ağ kaynakları IP adresi aralıklarını, yük dengeleyicileri ve giriş denetleyicilerini içerir.

Bu en iyi yöntemler makalesi, küme operatörleri için ağ bağlantısı ve güvenliğine odaklanır. Bu makalede şunları öğreneceksiniz:

  • AKS'deki kubenet ve Azure Container Networking Interface (CNI) ağ modlarını karşılaştırın.
  • Gerekli IP adresleme ve bağlantı için planlayın.
  • Yük dengeleyicileri, giriş denetleyicilerini veya web uygulaması güvenlik duvarını (WAF) kullanarak trafiği dağıtabilirsiniz.
  • Küme düğümlerine güvenli bir şekilde bağlanın.

Uygun ağ modelini seçin

En iyi yöntem kılavuzu

Mevcut sanal ağlarla veya şirket içi ağlarla tümleştirme için AKS'de Azure CNI ağını kullanın. Bu ağ modeli, kurumsal bir ortamda kaynakların ve denetimlerin daha fazla ayrılmasına olanak tanır.

Sanal ağlar, AKS düğümlerinin ve müşterilerin uygulamalarınıza erişmesi için temel bağlantıyı sağlar. AKS kümelerini sanal ağlara dağıtmanın iki farklı yolu vardır:

  • Azure CNI ağı: Bir sanal ağa dağıtılır ve Azure CNI Kubernetes eklentisini kullanır. Podlar, diğer ağ hizmetlerine veya şirket içi kaynaklara yönlendirebilen tek tek IP'leri alır.
  • Kubenet ağı: Azure, küme dağıtılırken sanal ağ kaynaklarını yönetir ve kubenet Kubernetes eklentisini kullanır.

Azure CNI ve kubenet, üretim dağıtımları için geçerli seçeneklerdir.

CNI Ağı

Azure CNI, kapsayıcı çalışma zamanının bir ağ sağlayıcısına istekte bulunmasına olanak tanıyan, satıcıdan bağımsız bir protokoldür. Podlara ve düğümlere IP adresleri atar ve mevcut Azure sanal ağlarına bağlanırken IP adresi yönetimi (IPAM) özellikleri sağlar. Her düğüm ve pod kaynağı, Azure sanal ağında bir IP adresi alır. Diğer kaynaklar veya hizmetlerle iletişim kurmak için ek yönlendirmeye gerek yoktur.

Her birini tek bir Azure sanal asına bağlayan köprüleri olan iki düğümü gösteren diyagram

Özellikle, üretim için Azure CNI ağı kaynakların denetiminin ve yönetiminin ayrılmasına olanak tanır. Güvenlik açısından bakıldığında, genellikle farklı ekiplerin bu kaynakları yönetmesini ve güvenliğini sağlamasını istersiniz. Azure CNI ağı ile mevcut Azure kaynaklarına, şirket içi kaynaklara veya diğer hizmetlere doğrudan her poda atanan IP adresleri aracılığıyla bağlanırsınız.

Azure CNI ağı kullandığınızda, sanal ağ kaynağı AKS kümesine ayrı bir kaynak grubunda yer alır. AKS kümesi kimliğinin bu kaynaklara erişmesi ve bunları yönetmesi için temsilci izinleri. AKS kümesi tarafından kullanılan küme kimliği, sanal ağınızdaki alt ağda en az Ağ Katkıda Bulunanı izinlerine sahip olmalıdır.

Yerleşik Ağ Katkıda Bulunanı rolünü kullanmak yerine özel bir rol tanımlamak istiyorsanız, aşağıdaki izinler gereklidir:

  • Microsoft.Network/virtualNetworks/subnets/join/action
  • Microsoft.Network/virtualNetworks/subnets/read

Varsayılan olarak AKS, küme kimliği için yönetilen kimlik kullanır. Ancak, bunun yerine bir hizmet sorumlusu kullanabilirsiniz.

Her düğüm ve pod kendi IP adresini aldığında AKS alt ağlarının adres aralıklarını planlayın. Aşağıdaki ölçütleri göz önünde bulundurun:

  • Alt ağ dağıttığınız her düğüm, pod ve ağ kaynağı için IP adresleri sağlayacak kadar büyük olmalıdır.
    • Hem kubenet hem de Azure CNI ağıyla, çalışan her düğümün pod sayısıyla varsayılan sınırları vardır.
  • Mevcut ağ kaynaklarıyla çakışan IP adresi aralıklarını kullanmaktan kaçının.
    • Azure'da şirket içi veya eşlenmiş ağlara bağlantıya izin vermek gerekir.
  • Ölçeği genişletme olaylarını veya küme yükseltmelerini işlemek için, atanan alt ağda ek IP adreslerine sahip olmanız gerekir.
    • Bu düğüm havuzları en son güvenlik düzeltme eklerini uygulamak için yükseltme gerektirdiğinden, Windows Server kapsayıcılarını kullanıyorsanız bu ek adres alanı özellikle önemlidir. Windows Server düğümleri hakkında daha fazla bilgi için bkz . AKS'de düğüm havuzunu yükseltme.

Gerekli IP adresini hesaplamak için bkz . AKS'de Azure CNI ağını yapılandırma.

Azure CNI ağıyla küme oluştururken, docker köprüsü adresi, DNS hizmeti IP'si ve hizmet adres aralığı gibi küme için diğer adres aralıklarını belirtirsiniz. Genel olarak, bu adres aralıklarının birbiriyle veya sanal ağlar, alt ağlar, şirket içi ve eşlenmiş ağlar dahil olmak üzere kümeyle ilişkili ağlarla çakışmadığından emin olun.

Bu adres aralıkları için sınırlar ve boyutlandırma ile ilgili ayrıntılı bilgi için bkz . AKS'de Azure CNI ağını yapılandırma.

Kubenet ağı

Kubenet, kümeyi dağıtmadan önce sanal ağları yapılandırmanızı gerektirmese de beklemenin dezavantajları vardır, örneğin:

  • Düğümler ve podlar farklı IP alt ağlarına yerleştirildiğinden, Kullanıcı Tanımlı Yönlendirme (UDR) ve IP iletme trafiği podlar ve düğümler arasında yönlendirir. Bu ek yönlendirme, ağ performansını düşürebilir.
  • Mevcut şirket içi ağlara bağlantılar veya diğer Azure sanal ağlarıyla eşleme karmaşık olabilir.

Sanal ağı ve alt ağları AKS kümesinden ayrı olarak oluşturmadığınızdan Kubenet aşağıdaki senaryolar için idealdir:

  • Küçük geliştirme veya test iş yükleri.
  • Trafiğin düşük olduğu basit web siteleri.
  • İş yüklerini kaldırma ve kapsayıcılara kaydırma.

Üretim dağıtımları için hem kubenet hem de Azure CNI geçerli seçeneklerdir. Denetim ve yönetim ayrımı gerektiren ortamlar için Azure CNI tercih edilen seçenek olabilir. Ayrıca kubenet, yalnızca IP adresi aralığını korumanın öncelikli olduğu Linux ortamları için uygundur.

Kubenet kullanarak kendi IP adresi aralıklarınızı ve sanal ağlarınızı da yapılandırabilirsiniz. Azure CNI ağı gibi bu adres aralıkları da kümeyle ilişkili ağlarla (sanal ağlar, alt ağlar, şirket içi ve eşlenmiş ağlar) çakışmamalıdır.

Bu adres aralıkları için sınırlar ve boyutlandırma ile ilgili ayrıntılı bilgi için bkz . AKS'de kubenet ağını kendi IP adres aralıklarınızla kullanma.

Giriş trafiğini dağıtma

En iyi yöntem kılavuzu

HTTP veya HTTPS trafiğini uygulamalarınıza dağıtmak için giriş kaynaklarını ve denetleyicilerini kullanın. Giriş denetleyicileri, Azure yük dengeleyiciye kıyasla ek özellikler sağlar ve yerel Kubernetes kaynakları olarak yönetilebilir.

Azure yük dengeleyici aks kümenizdeki uygulamalara müşteri trafiğini dağıtabilir ancak trafiğin anlaşılması sınırlıdır. Yük dengeleyici kaynağı katman 4'te çalışır ve trafiği protokole veya bağlantı noktalarına göre dağıtır.

HTTP veya HTTPS kullanan web uygulamalarının çoğu katman 7'de çalışan Kubernetes giriş kaynaklarını ve denetleyicilerini kullanmalıdır. Giriş, trafiği uygulamanın URL'sine göre dağıtabilir ve TLS/SSL sonlandırmasını işleyebilir. Giriş ayrıca kullanıma seçip eşlediğiniz IP adreslerinin sayısını da azaltır.

Yük dengeleyici ile her uygulamanın genellikle AKS kümesindeki hizmete atanmış ve bu hizmete eşlenmiş bir genel IP adresi olması gerekir. Giriş kaynağıyla tek bir IP adresi trafiği birden çok uygulamaya dağıtabilir.

AKS kümesinde giriş trafik akışını gösteren diyagram

Giriş için iki bileşen vardır:

  1. Giriş kaynağı
  2. Giriş denetleyicisi

Giriş kaynağı

Giriş kaynağı , bir YAML bildirimidir kind: Ingress. Aks kümenizde çalışan hizmetlere trafiği yönlendirmek için konağı, sertifikaları ve kuralları tanımlar.

Aşağıdaki örnek YAML bildirimi, myapp.com trafiğini blog hizmeti veya mağaza hizmeti olmak üzere iki hizmette birine dağıtır ve müşteriyi erişilen URL'ye göre bir hizmete veya diğerine yönlendirir.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: myapp-ingress
spec:
 ingressClassName: PublicIngress
 tls:
 - hosts:
   - myapp.com
   secretName: myapp-secret
 rules:
   - host: myapp.com
     http:
      paths:
      - path: /blog
        backend:
         service:
           name: blogservice
           port: 80
      - path: /store
        backend:
         service:
           name: storeservice
           port: 80

Giriş denetleyicisi

Giriş denetleyicisi, AKS düğümünde çalışan ve gelen istekleri izleyen bir daemon'dır. Trafik daha sonra giriş kaynağında tanımlanan kurallara göre dağıtılır. En yaygın giriş denetleyicisi NGINX'i temel alır ancak AKS sizi belirli bir denetleyiciyle kısıtlamaz. Contour, HAProxy, Traefik vb. kullanabilirsiniz.

Giriş denetleyicileri bir Linux düğümünde zamanlanmalıdır. YaML bildiriminizde veya Helm grafiği dağıtımınızda bir düğüm seçici kullanarak kaynağın Linux tabanlı bir düğümde çalıştırılması gerektiğini belirtin. Daha fazla bilgi için bkz . AKS'de podların zamanlandığı yeri denetlemek için düğüm seçicilerini kullanma.

Uygulama yönlendirme eklentisiyle giriş

Aks'de giriş denetleyicisini yapılandırmanın önerilen yolu uygulama yönlendirme eklentisidir. Uygulama yönlendirme eklentisi, Azure Kubernetes Service (AKS) için aşağıdaki özellikleri sağlayan tam olarak yönetilen bir giriş denetleyicisidir:

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

Uygulama yönlendirme eklentisi hakkında daha fazla bilgi için bkz . Uygulama yönlendirme eklentisiyle yönetilen NGINX girişi.

Web uygulaması güvenlik duvarı (WAF) ile trafiğin güvenliğini sağlama

En iyi yöntem kılavuzu

Gelen trafiği olası saldırılara karşı taramak için Azure için Barracuda WAF veya Azure Uygulaması lication Gateway gibi bir web uygulaması güvenlik duvarı (WAF) kullanın. Bu daha gelişmiş ağ kaynakları, trafiği yalnızca HTTP ve HTTPS bağlantılarının veya temel TLS sonlandırmanın ötesine de yönlendirebilir.

Giriş denetleyicisi genellikle AKS kümenizde trafiği hizmetlere ve uygulamalara dağıtan bir Kubernetes kaynağıdır. Denetleyici AKS düğümünde bir daemon olarak çalışır ve düğümün CPU, bellek ve ağ bant genişliği gibi bazı kaynaklarını kullanır. Daha büyük ortamlarda aşağıdakileri göz önünde bulundurmak isteyebilirsiniz:

  • Bu trafik yönlendirmesinin veya TLS sonlandırmasının bir kısmını AKS kümesinin dışındaki bir ağ kaynağına boşaltın.
  • Olası saldırılar için gelen trafiği tarayın.

Azure Uygulaması Gateway gibi bir web uygulaması güvenlik duvarı (WAF), AKS kümeniz için trafiği koruyabilir ve dağıtabilir

Bu ek güvenlik katmanı için, bir web uygulaması güvenlik duvarı (WAF) gelen trafiği filtreler. Bir dizi kuralla, Open Web Application Security Project (OWASP) siteler arası betik veya tanımlama bilgisi zehirlenmesi gibi saldırıları izler. Azure Uygulaması lication Gateway (şu anda AKS'de önizleme aşamasındadır) AKS kümeleriyle tümleşen ve trafik AKS kümenize ve uygulamalarınıza ulaşmadan önce bu güvenlik özelliklerini kilitleyen bir WAF'dir.

Diğer üçüncü taraf çözümler de bu işlevleri yerine getirdiğinden, tercih ettiğiniz üründe mevcut yatırımları veya uzmanlığı kullanmaya devam edebilirsiniz.

Yük dengeleyici veya giriş kaynakları AKS kümenizde sürekli olarak çalışır ve trafik dağıtımını daraltabilir. App Gateway, kaynak tanımıyla giriş denetleyicisi olarak merkezi olarak yönetilebilir. Başlamak için bir Application Gateway Giriş denetleyicisi oluşturun.

Ağ ilkeleriyle trafik akışını denetleme

En iyi yöntem kılavuzu

Podlara yönelik trafiğe izin vermek veya trafiği reddetmek için ağ ilkelerini kullanın. Varsayılan olarak, küme içindeki podlar arasında tüm trafiğe izin verilir. Gelişmiş güvenlik için pod iletişimini sınırlayan kurallar tanımlayın.

Ağ ilkesi, AKS'de bulunan ve podlar arasındaki trafik akışını denetlemenize olanak tanıyan bir Kubernetes özelliğidir. Atanan etiketler, ad alanı veya trafik bağlantı noktası gibi ayarlara göre pod trafiğine izin verir veya trafiği reddedersiniz. Ağ ilkeleri, podlar için trafik akışını denetlemenin bulutta yerel bir yoludur. Podlar AKS kümesinde dinamik olarak oluşturulduğu için gerekli ağ ilkeleri otomatik olarak uygulanabilir.

Ağ ilkesini kullanmak için, yeni bir AKS kümesi oluşturduğunuzda özelliği etkinleştirin. Mevcut aks kümesinde ağ ilkesini etkinleştiremezsiniz. Gerekli kümelerde ağ ilkesini etkinleştirmek için önceden plan yapın.

Not

Ağ ilkesi yalnızca AKS'deki Linux tabanlı düğümler ve podlar için kullanılmalıdır.

YAML bildirimini kullanarak Kubernetes kaynağı olarak bir ağ ilkesi oluşturursunuz. İlkeler, trafik akışını tanımlayan giriş veya çıkış kurallarıyla tanımlı podlara uygulanır.

Aşağıdaki örnek, uygulamanın uygulandığı podlara bir ağ ilkesi uygular: arka uç etiketi bunlara uygulanır. Giriş kuralı yalnızca uygulama ile podlardan gelen trafiğe izin verir: ön uç etiketi.

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: backend-policy
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend

İlkeleri kullanmaya başlamak için bkz . Azure Kubernetes Service'te (AKS) ağ ilkelerini kullanarak podlar arasındaki trafiğin güvenliğini sağlama.

Savunma konağı aracılığıyla düğümlere güvenli bir şekilde bağlanma

En iyi yöntem kılavuzu

AKS düğümlerinize uzak bağlantıyı kullanıma sunma. Yönetim sanal ağında bir savunma konağı veya atlama kutusu oluşturun. Aks kümenize gelen trafiği uzaktan yönetim görevlerine güvenli bir şekilde yönlendirmek için savunma ana bilgisayarını kullanın.

Azure yönetim araçlarını kullanarak veya Kubernetes API sunucusu aracılığıyla AKS'deki işlemlerin çoğunu tamamlayabilirsiniz. AKS düğümleri yalnızca özel bir ağda kullanılabilir ve genel İnternet'e bağlı değildir. Düğümlere bağlanmak ve bakım ve destek sağlamak için, bağlantılarınızı bir savunma konağı veya atlama kutusu aracılığıyla yönlendirin. Bu konağın AKS kümesi sanal ağına ayrı, güvenli bir şekilde eşlenmiş bir yönetim sanal ağında yaşadığını doğrulayın.

Savunma konağı veya atlama kutusu kullanarak AKS düğümlerine bağlanma

Savunma konağı için yönetim ağının güvenliğini de sağlamalısınız. Şirket içi ağa bağlanmak ve ağ güvenlik gruplarını kullanarak erişimi denetlemek için Azure ExpressRoute veya VPN ağ geçidi kullanın.

Sonraki adımlar

Bu makale ağ bağlantısı ve güvenliğine odaklanmıştır. Kubernetes'teki ağ temelleri hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) uygulamalar için ağ kavramları