Kubernetes Network Policies: Podlar Arası Güvenli İletişim Sağlama

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Kubernetes dünyasında varsayılan ayar şudur: Her Pod, diğer tüm Pod'lar ile herhangi bir kısıtlama olmaksızın konuşabilir. Bu, geliştirme aşamasında kolaylık sağlasa da, üretim (production) ortamında büyük bir güvenlik açığıdır. Eğer bir saldırgan web sunucusu olan bir Pod'u ele geçirirse, ağ üzerinden doğrudan veritabanı Pod'unuza sızabilir.

Network Policies (Ağ Politikaları), Kubernetes üzerindeki Pod trafiğini IP katmanında (L3/L4) kısıtlamanıza olanak tanıyan bir "iç güvenlik duvarı" (firewall) sistemidir.

Network Policy Nasıl Çalışır?​


Network Policy'ler, Pod'ları seçmek için Label (Etiket) mekanizmasını kullanır. Hangi Pod'un hangi Pod'a, hangi port üzerinden erişebileceğini belirlemek için şu iki kavram kullanılır:

  • [] Ingress (Giriş): Pod'a gelen trafiği kontrol eder. [] Egress (Çıkış): Pod'dan dışarı giden trafiği kontrol eder.

Not: Network Policy'lerin çalışması için cluster'ınızda Calico, Cilium veya Weave Net gibi bir Ağ Eklentisinin (CNI Plugin) yüklü olması gerekir.

Örnek Senaryo: Veritabanını Koruma Altına Almak​


Diyelim ki bir XenForo forumunuz var. Web sunucusu Pod'unuzun veritabanı (MySQL) Pod'una erişmesi gerekiyor, ancak başka hiçbir Pod'un veritabanına erişmesini istemiyorsunuz.

1. Veritabanı Pod'u İçin Politika Oluşturma:

YAML:
 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: db-allow-only-web namespace: default spec: podSelector: matchLabels: app: mysql # Bu politika 'app=mysql' etiketli podlara uygulanır policyTypes:

    Ingress ingress:

    from:

        podSelector: matchLabels: role: web-server # Sadece 'role=web-server' olanlar gelebilir ports:

        protocol: TCP port: 3306

Bu kural uygulandığında, role=web-server etiketi olmayan herhangi bir Pod (örneğin bir test Pod'u) veritabanına bağlanmaya çalıştığında trafik Kubernetes ağ katmanında reddedilecektir.

Sıfır Güven (Zero Trust) Yaklaşımı: Her Şeyi Yasakla​


En güvenli yöntem, önce her şeyi yasaklayıp sonra sadece ihtiyaç duyulan kapıları açmaktır. Aşağıdaki kural, bulunduğu Namespace içindeki tüm iletişimi keser:

YAML:
 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all spec: podSelector: {} # Tüm podları seç policyTypes:

    Ingress

    Egress

Network Policy Bileşenleri Tablosu​


BileşenAçıklama
podSelectorPolitikanın uygulanacağı hedef Pod grubu.
from/toTrafiğin kaynağı (ingress) veya hedefi (egress).
namespaceSelectorFarklı bir namespace'ten gelen trafiği filtrelemek için kullanılır.
ipBlockBelirli bir IP aralığına (CIDR) izin vermek veya yasaklamak için kullanılır.

Neden Network Policy Kullanmalısınız?​


  • [] Yanal Hareketin Engellenmesi: Bir uygulama Pod'u hacklense bile saldırganın ağda ilerlemesi durdurulur. [] İzolasyon: Test ve Production ortamları aynı cluster içindeyse, birbirlerine erişmeleri engellenir.
  • Uyumluluk: PCI-DSS veya KVKK gibi standartlar için ağ seviyesinde izolasyon şarttır.

Sonuç​


Kubernetes'te güvenlik sadece imaj taraması veya şifre yönetimi değildir; aynı zamanda ağ trafiğinin yönetimidir. Network Policy'ler sayesinde cluster içinde "mikro-segmentasyon" sağlayarak saldırı yüzeyinizi minimuma indirebilirsiniz.
 
Geri
Üst