Linux & Open Source

Linux'ta Sıfır Güven Ağı Segmentasyonu: Kubernetes için eBPF Tabanlı Politika Uygulaması

Geleneksel çevre güvenliği modeli artık geçerliliğini yitirmiştir. Modern bulut yerli mimarilerde, hassas iş yüklerini izole etmek için yalnızca ağ sınırlarına güvenmek yeterli değildir. Kümenin içine sızan saldırganlar genellikle tüm ağı yatay olarak gezebilir. Bunu önlemek için, her paketin açıkça izin verilene kadar güvensiz olarak ele alındığı Sıfır Güven mimarisini benimsemeliyiz.

Linux'ta, çekirdeğin genişletilmiş Berkeley Paket Filtresi (eBPF) teknolojisi ağ güvenliğini devrim niteliğinde değiştirdi. Sandıklı programları doğrudan çekirdekte çalıştırarak eBPF, geleneksel iptables veya kullanıcı alanı vekilleriyle ilişkili bağlam geçişleri olmadan yüksek performanslı ve düşük maliyetli politika uygulamasını mümkün kılar. Bu blog yazısı, Kubernetes kümelerinde eBPF'nin ince taneli mikro segmentasyon için nasıl kullanılabileceğini ele alıyor.

Mikro Segmentasyon İçin Neden eBPF?

iptables tarafından yönetilen geleneksel Linux duvar kuralları, O(N) arama karmaşıklığından muzdariptir. Kural sayısı arttıkça performans önemli ölçüde düşer. eBPF ise hash haritaları kullanarak O(1) aramalarına olanak tanır. Daha da önemlisi, eBPF programları soket seviyesinde (paket tamamen oluşmadan önce) veya XDP (eXpress Data Path) seviyesinde çalışabilir; bu da yalnızca netfilter ile mümkün olmayan bir görünürlük ve kontrol sağlar.

Kubernetes bağlamında, Cilium ve Calico gibi projeler eBPF'yi entegre ederek kimlik tabanlı ağ bağlantısı sağlar. Dinamik ve yönetilmesi zor IP adreslerine yalnızca güvenmek yerine, eBPF iş yüklerine meta verilerin (güvenlik kimliklerinin) eklenmesine olanak tanır. Politikalar bu kimliklere göre değerlendirilir; böylece altta yatan IP adresleri ne olursa olsun, bir "frontend" pod'unun yalnızca bir "backend" pod'uyla iletişim kurması sağlanır.

Cilium ile Politikaların Uygulanması

Cilium, Kubernetes'te eBPF tabanlı ağ bağlantısı için fiili standarttır. Ağ politikalarını tanımlamak için beyan edici bir API sağlar. İki dağıtım arasında mikro segmentasyon uygulamanın pratik bir örneğine bakalım.

Öncelikle, backend-service'e gelen trafiği yalnızca frontend-service'ten gelen trafiğe izin verecek şekilde kısıtlayan bir YAML ağ politikası tanımlıyoruz.

apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: backend-restrict
  namespace: production
spec:
  endpointSelector:
    matchLabels:
      app: backend-service
  ingress:
  - fromEndpoints:
    - matchLabels:
        app: frontend-service
    toPorts:
    - ports:
      - port: "8080"
        protocol: TCP

Bu politika uygulandığında, Cilium bu kuralları eBPF haritalarına derler. backend-service pod'larının soket katmanına bağlanan eBPF programı, gelen her paketin kaynak kimliğini kontrol eder. Kaynak kimliği frontend-service etiketiyle eşleşmiyorsa, paket sessizce düşürülür. Bu uygulama çekirdekte gerçekleşir ve kullanıcı alanı L7 vekillerine kıyasla ihmal edilebilir gecikme ekler.

Politika Uygulamasının Doğrulanması

eBPF tabanlı sistemlerin en güçlü yönlerinden biri gözlemlenebilirliktir. Politikaların uygulandığını, eBPF haritalarını inceleyerek veya Cilium CLI'ı kullanarak ağ akışlarını izleyerek doğrulayabilirsiniz.

cilium monitor --follow --related-to-endpoint production/backend-service

Bu komut, paketlerin kabul edildiğini veya reddedildiğini gösteren gerçek zamanlı olayları görüntüler. Yetkisiz kaynaklardan gelen trafiğin düşürüldüğünü gösteren girdiler göreceksiniz; bu da Sıfır Güven politikasının aktif olduğunu doğrular. Ayrıca, çekirdek seviyesinde karmaşık politika sorunlarını hata ayıklamak için bpftool gibi araçları kullanarak eBPF programının kendisinin çalışmasını izleyebilirsiniz.

Zorluklar ve En İyi Uygulamalar

eBPF üstün performans sunsa da, uygulaması çekirdek sürümlerini ve sürücü uyumluluğunu dikkatli bir şekilde değerlendirmeyi gerektirir. Gelişmiş eBPF işlevselliği için gereken tüm çekirdek özellikleri eski dağıtımlarda mevcut değildir. Kubernetes düğümlerinin 4.19 veya üzeri çekirdek sürümlerinde çalıştırılması önerilir; tam özellik uyumluluğu için 5.4+ idealdir.

Ayrıca, eBPF programlarını yönetmek yeni bir beceri seti gerektirir. Geliştiricilerin harita yaşam döngüleri, doğrulayıcı kısıtlamaları ve bellek güvenliğini anlaması gerekir. BCC ve BPFtrace gibi araçlar, bu çekirdek programlarının davranışını hata ayıklamak ve anlamak için paha biçilmezdir. Son olarak, kritik iletişim yollarını bozmadığınızdan emin olmak için politikaları uygulamadan önce her zaman denetim moduyla başlayın.

Sonuç

Sıfır Güven ağı segmentasyonu artık yalnızca teorik bir en iyi uygulama değil; modern bulut ortamlarını güvence altına almak için bir zorunluluktur. Linux'ta eBPF'yi kullanarak, kablo hızında ince taneli, kimlik tabanlı mikro segmentasyon uygulayabiliriz. Cilium gibi araçlar, bu teknolojiyi Kubernetes kullanıcılarına erişilebilir kılar ve iş yüklerimizin varsayılan olarak değil, tasarım gereği izole edildiğine dair güvenlik güvencesi sağlar.

eBPF ev olmaya devam ettikçe, L7 farkındalığı ve servis ızgarası teknolojileriyle daha derin entegrasyon dahil olmak üzere daha sofistike güvenlik özellikleri bekleyebiliriz. Linux ve bulut yerli geliştiriciler için eBPF'yi ustalaşmak, güvenli ve dayanıklı altyapıya giden yolda temel bir beceri haline geliyor.

Share: