Application Security

Ağ Ötesi: mTLS ve Kimlik Bilinçli Vekil (IAP) Desenleriyle Sıfır Güvenlik Güçlendirme

Modern bulut-native ortamında güvenlik sınırları ortadan kalkmıştır. İç trafiğin varsayılan olarak güvenildiği geleneksel kale ve hendek güvenlik modelleri artık uygulanabilir değildir. Organizasyonlar mikroservis mimarilerini benimsedikçe, yan hareketliliğe izin verilmesi durumunda tek bir bileşenin ele geçirilmesi felaket sonuçlar doğurabilir. Istio veya Linkerd gibi servis ağları, servisler arası şifreleme için Karşılıklı TLS'yi (mTLS) popüler hale getirse de, gerçek Sıfır Güvenlik, servis ağı altyapısının ötesine geçen daha nüanslı bir yaklaşım gerektirir. Bu yazı, Kimlik Bilinçli Vekil (IAP) desenleri ve uygulama katmanı içinde doğrudan uygulanan granüler mTLS uygulamaları kullanarak sağlam Sıfır Güvenlik ilkelerinin nasıl uygulanacağını incelemektedir.

Sadece Servis Ağı Güvenliğinin Sınırları

Servis ağları, ağ güvenliğini soyutlama, sertifika döngüsünü otomatikleştirme ve podlar arasında şifreleme zorunluluğu sağlama konusunda mükemmeldir. Ancak, yalnızca onlara güvenmek, servis ağı kümesi içinde "varsayılan olarak güvenilir" bir ortam yaratır. Bir saldırgan bir podu ele geçirirse, aynı kimliği veya mTLS yapılandırmasını paylaşan kümedeki diğer tüm hizmetlere erişim elde eder. Ayrıca, servis ağları genellikle dış trafiği veya servis kimliğinin erişim haklarını belirlemek için yetersiz kaldığı karmaşık yönlendirme senaryolarını işlemekte zorlanır. Sıfır Güvenlik, kökeni ne olursa olsun hiçbir isteğin güvenilmemesi ve her isteğin kimlik, cihaz durumu ve konum gibi dinamik bağlama göre doğrulanması gerektiğini belirtir.

Granüler Karşılıklı TLS (mTLS) Uygulaması

Servis ağı mTLS'nin çoğunu yönetse de, uygulama seviyesinde veya giriş noktasında belirli mTLS yapılandırmaları uygulamak, ağ atlanırsa veya yanlış yapılandırılırsa bile uygulamanın karşı tarafın kimliğini doğrulamasını sağlar. Bu, basit TLS sonlandırmanın ötesine geçerek, istemci sertifikalarını belirli bir güven zinciriyle doğrulamayı içerir.

Sıfır Güvenlik modelinde, tüm hizmetler birbirinin eşidir. Bir arka uç analitik servisi, her ikisi de ağ içinde olsa bile, kritik bir ödeme işleme servisiyle konuşmaya izin verilmemelidir. Uygulama veya yan araç vekil yapılandırmasında sıkı istemci sertifika doğrulaması uygulayarak, en az ayrıcalık ilkesini zorunlu kılmış olursunuz.

// Örnek: Karşılıklı TLS istemci sertifikalarını doğrulayan Go Sunucusu
// Sunucunun bir istemci sertifikası talep etmesini ve bunu kök CA ile doğrulamasını sağlayın

func startServer(addr string, caCert, clientCert, clientKey []byte) {
    cert, err := tls.LoadX509KeyPair(clientCert, clientKey)
    if err != nil {
        log.Fatal(err)
    }

    config := &tls.Config{
        Certificates: []tls.Certificate{cert},
        ClientAuth:   tls.RequireAndVerifyClientCert, // İstemci sertifikasını zorla
        ClientCAs:    rootCertPool, // Yetkili hizmetler için özel CA
    }

    listener, err := tls.Listen("tcp", addr, config)
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("Sunucu %s adresinde sıkı mTLS ile dinliyor", addr)
    http.Serve(listener, nil)
}

Bu kod parçacığı, sunucunun güvenilir bir otoriteden geçerli bir istemci sertifikası sunulmadığında bağlantıları reddetmesini zorlamayı gösterir ve böylece yetkisiz yan hareketliliği etkili bir şekilde önler.

Kimlik Bilinçli Vekil (IAP) Desenleri

Gerçek kimlik bilince dayalı yönlendirme elde etmek için geliştiricilerin Kimlik Bilinçli Vekil (IAP) desenini uygulamaları gerekir. Sadece URL'leri kontrol eden standart bir ters vekilden farklı olarak, bir IAP isteği iletmeden önce çağrıcının kimliğini doğrular. Bu, özellikle dış API kapıları ve iç servis keşif mekanizmaları için kritiktir.

IAP, istekleri yakalayan, kimlik doğrulama belirtecini (örneğin OIDC, JWT) veya istemci sertifikasını inceleyen ve bu kimliği belirli servis izinlerine dinamik olarak eşleyen bir kapıcı görevi görür. Bu, ağ katmanını güvenlik politikasından ayırır ve statik bir servis ağının yönetemeyeceği bağlama duyarlı kararlar almayı sağlar.

Pratik IAP Uygulama Stratejisi

Bir IAP tasarlarken şu kontrollerin yapılmasını sağlayın:

  1. Kimlik Doğrulama: Gelen JWT'nin veya istemci sertifikasının imzasını doğrulayın.
  2. Özellik Değerlendirmesi: Kimlik içindeki belirli iddiaları kontrol edin (örneğin, departman, rol veya servis ad alanı).
  3. Dinamik Yetkilendirme: Özellikler, hedef mikroservis tarafından gerektirilen politika ile eşleşmediği anda isteği reddedin.
  4. Günlükleme ve Denetim: Kimliği ve alınan kararı adli analiz için kaydedin.

Bu mantığı mikroservislerinizin kenarına yerleştirerek, bir servis ele geçirilse bile, saldırganın doğru kimlik özelliklerine sahip olmadan diğer hizmetlere kolayca geçiş yapmasını engellersiniz.

Ağ Ötesinde Orkestrasyon

Bu desenlerin entegre edilmesi bir zihniyet değişikliği gerektirir. Servis ağını tek güvenlik sınırı olarak görmek yerine, onu bir taşıma katmanı olarak ele alın. Gerçek Sıfır Güvenlik mantığı, kimlik sağlayıcılarında ve uygulama seviyesindeki vekillerde yer almalıdır. Bu genellikle, şifrelemenin ağır işini servis ağının üstlendiği ancak IAP katmanı veya uygulama tarafı ara katmanının kimlik tabanlı yetkilendirme mantığını yönettiği hibrit bir yaklaşımı içerir.

Örneğin, Ingress Denetleyicinizi birincil IAP olarak yapılandırabilir, dış trafiği sonlandırabilir, kullanıcının kimliğini doğrulayabilir ve isteği servis ağına iletmeden önce isteğin başlıklarına kısa ömürlü, hizmete özgü bir token enjekte edebilirsiniz. Servis ağı daha sonra iç yönlendirme için bu tokeni doğrulayarak, dış kullanıcıdan iç mikroservise kadar uzanan bir güven zinciri oluşturur.

Sonuç

Mikroservisler için Sıfır Güvenlik, satın alabileceğiniz bir ürün veya yükleyebileceğiniz bir eklenti değildir; her katmanda sürekli doğrulama gerektiren bir mimaridir. Servis ağları mTLS için gerekli altyapıyı sağlasa da, tek başına tam çözüm değildir. Uygulamalar içinde doğrudan granüler mTLS yapılandırmaları uygulayarak ve Kimlik Bilinçli Vekil desenlerini dağıtarak, geliştiriciler yan hareketliliği önleyen ve yalnızca doğrulanmış kimliklerin hassas kaynaklara erişebilmesini sağlayan derinlikli bir savunma stratejisi oluşturabilir. Servis ağından çıkmak, bulut-native ortamların dinamik doğasına uyum sağlayan daha çevik ve bağlama duyarlı bir güvenlik duruşu sağlar.

Share: