Kubernetes Security: Pod Security Policies (PSP)
Kubernetes artık modern yazılım geliştirme ve dağıtım süreçlerinde olmazsa olmaz bir parça haline geldi, değil mi? Bu platform, container tabanlı uygulamaların yönetimi ve orkestrasyonunda gerçekten güçlü araçlar sunuyor. Ama tabii, güvenlik meselesi de cabası. Kubernetes güvenliği, işte o platformda koşturduğumuz uygulamaların korunması, saldırılara karşı sağlam olması açısından gerçekten hayati önem taşıyor. Yani, veri sızıntılarından tutun da yetkisiz erişime kadar, potansiyel tehlikeleri bertaraf etmek için kritik bir rol oynuyor.
Kubernetes güvenliği, hem cluster düzeyinde hem de uygulama seviyesinde önemli yapılar içeriyor. İlk olarak, cluster düzeyinde, kimlik doğrulama ve erişim kontrolü gibi temel güvenlik önlemleri bulunuyor. Ayrıca, ağ politikaları ve izolasyon da bu düzeyde büyük rol oynuyor. Öte yandan, uygulama düzeyinde, güvenlik konteyner seviyesinde sağlanır. Bu, güvenlik yamaları, ayrıcalıkların sınırlanması ve güvenli imajlar kullanımını içerir. Böylece, her iki seviyede de, Kubernetes’in güvenliğini sağlamak için kritik önlemler alınmış olur. Yani özetle, Kubernetes’in güvenlik mekanizmaları çok önemli. Bir nevi, evinizi güvende tutmak için kullandığınız kapı kilidi gibi düşünebilirsiniz.
Kubernetes’de bulunan temel güvenlik yapılarından bahsetmek gerekirse;
- Authentication (Kimlik Doğrulama): Kimlik doğrulama yapısı güvenlik sistemlerinde ilk adım olarak bizi karşılıyor. Adeta evinize gelen misafirlerin kimliklerini kontrol etmek gibi. Yani, hangi kullanıcı veya hizmetin ne yapabileceğini anlamak için önce kimliklerini doğruluyoruz. Bu doğrulama işlemleri için desteklenen bir takım mekanizmalar vardır. Örneğin: statik token, basit hizmet hesapları, sertifika tabanlı kimlik doğrulama ve harici kimlik doğrulama sağlayıcıları gibi.
- Authorization (Yetkilendirme): Kimlik doğrulaması tamamlandıktan sonra yetkilendirme geliyor. Bu, evin içinde kimin nereye gidebileceğini belirlemek gibi bir şey. Örneğin, misafirlere oturma odasına gitmelerine izin verebiliriz ama yatak odasına girmelerine izin vermeyebiliriz. Gelen misafirlerimize tanımlayacağımız kişi bir takım politikalar ile nasıl bir yetkilendirmeye sahip olabileceğini gösteririz. Bu politikaların bazıları şu şekildedir: Role-Based Access Control (RBAC), Attribute-Based Access Control (ABAC) ve Node authorization.
- Admission Controllers: Bir de Admission Controllers var ki, bu da adeta evinizdeki güvenlik kamerası gibi düşünülebilir. Yani, gelen talepleri önce kontrol eder, zararlı olabileceklerini tespit eder ve gerekirse reddeder.
- Network Policies: Network Policies de önemli. Bu, evinizde hangi odalar arasında ne tür iletişim olacağını belirlemek gibi. Örneğin, yemek odasıyla banyo arasında iletişime izin vermemek gibi düşünebilirsiniz. Böylece potansiyel zararlı dedikoduları sınırlayabiliriz :)
- Pod Security Policies (PSP): Pod Security Policies, adeta konteynerlerinizin içindeki değerli eşyaları saklamak için koyduğunuz kurallar gibi. Mesela, kimin hangi eşyalara ulaşabileceğini belirlemek gibi. Örneğin, root olarak çalışan konteynerleri engelleyebilir veya konteynerlerin host sistem dosyalarına erişimini kısıtlayabilir.
- Secrets Management: Secrets Management ise, evinizdeki gizli dolabınız gibi düşünebilirsiniz. Yani, hassas bilgileri güvenli bir şekilde saklamak için kullanılır. Bu sayede hassas bilgileri (örneğin, API anahtarları, şifreler) gelen misafirlerin yaramaz çocuklarından saklayabilirsiniz.
- Service Accounts: Biraz farklı bir açıdan bakalım: Kubernetes’in “Service Accounts” yani “Hizmet Hesapları” denen bir özelliği var. Bu hesaplar, sanki o uygulama veya pod kendi ismini kullanıyormuş gibi, Kubernetes’in içinde işlerini halletmeleri için kullanılıyor. Yani, şöyle düşünün; evinize gelen bir misafirin kapıda kendini tanıtması gibi, bu hesaplar da Kubernetes’e gelen pod ve uygulamaların kendilerini tanıtması için kullanılıyor. İlginç olan şu ki, bu hesaplar genellikle insanlar tarafından değil, sanki o pod’lar kendi aralarında konuşuyorlarmış gibi, yazılımlar tarafından kullanılıyor. Bu da aslında sistemin daha düzenli ve güvenli çalışmasını sağlıyor, çünkü her uygulamanın kendi ayrı kimliği ve izinleri oluyor böylece karışıklıkları ve güvenlik risklerini önlemiş oluyoruz.
- TLS for Secure Communication: Kubernetes içindeki parçalar ve uygulamalar arasındaki iletişimde, hatta kullanıcılarla olan iletişimde bile, veriler şifreleniyor. Yani, tam olarak evinizdeki iletişim telefonunuzun şifrelenmesi gibi düşünebilirsiniz. Bu sayede, bilgilerinizin gizli kalması ve verilerin sağlam kalması sağlanıyor. Çünkü kimse araya girip o konuşmaları dinleyemez veya verileri değiştiremez. İşte, bu özellik aslında güvenliğin temel taşlarından biri.
İşte, bu güvenlik mekanizmaları, Kubernetes’i güvende tutmak için kritik öneme sahip. Her biri, sanki evinizi güvende tutmak için koyduğunuz önlemler gibi, bir araya gelerek daha güvenli bir Kubernetes ortamı oluşturuyor.
Pod Security Policies Nedir?
Pod Security Policies, Kubernetes ortamında pod’ların nasıl oluşturulacağı ve çalıştırılacağı konusunda kurallar belirleyen bir güvenlik mekanizmasıdır. Bunu, evinizdeki odalara kimlerin girebileceğini ve hangi eşyaları kullanabileceklerini belirleyen kurallar koymak gibi düşünebilirsiniz. PSP’ler, pod’ların belirli güvenlik standartlarına uygun olmasını sağlayarak, izinsiz erişimleri ve zararlı davranışları engeller.
Neden Pod Security Policies Kullanılır?
PSP’ler, Kubernetes ortamınızda güvenliği sağlamak ve pod’ların belirli kurallar dahilinde çalışmasını garanti altına almak için kullanılır. Düşünsenize, evinizde herkesin her odaya girebildiğini ve istediği her şeyi yapabildiğini; bu durum zamanla karmaşaya ve güvenlik açıklarına yol açar. İşte PSP’ler de bu durumu engellemek için kullanılır. Yani, komşularınızın ve misafirlerinizin hangi odalara girebileceğini ve neleri kullanabileceğini belirlemek gibi düşünebilirsiniz.
Pod Security Policies’in Temel Bileşenleri
PSP’ler, Kubernetes üzerinde pod’ların hangi koşullarda çalışabileceğini belirleyen çeşitli kurallardan oluşur. Ana bileşenler şunlardır:
- RunAsUser: Pod’ların hangi kullanıcı olarak çalışacağını belirler. Yani, evdeki hangi odanın hangi anahtarla açılabileceğini belirlemek gibi.
- SELinux: Pod’ların SELinux güvenlik politikalarına uygun olup olmadığını kontrol eder. Bu, evinizde belirli odaların sadece belirli kişilere açık olmasını sağlamak gibidir.
- FSGroup: Pod’ların hangi dosya sistem gruplarıyla çalışacağını belirler. Yani, evdeki bazı odaların sadece belirli aile üyelerine açık olması gibi düşünebilirsiniz.
- Volumes: Pod’ların hangi tür volume’ları kullanabileceğini belirler. Bu da, evdeki hangi odaların hangi eşyalarla donatılabileceğini belirlemeye benzer.
Örnek Bir Pod Security Policy
Diyelim ki, bir finans uygulaması geliştiriyorsunuz ve bu uygulamanın pod’larının sadece belirli güvenlik kurallarına uygun olarak çalışmasını istiyorsunuz. Bu durumu, evinizdeki kasanın sadece belirli bir anahtarla açılabilmesi gibi düşünebiliriz.
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted-psp
spec:
privileged: false
runAsUser:
rule: MustRunAsNonRoot
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
fsGroup:
rule: MustRunAs
ranges:
- min: 1
max: 65535
volumes:
- 'configMap'
- 'emptyDir'
- 'secret'
Bu örnekte, “restricted-psp” adlı politika, pod’ların root kullanıcısı olarak çalışmasını engeller, belirli SELinux ve FSGroup kurallarına uygun olmasını sağlar ve sadece belirli volume türlerini kullanmalarına izin verir. Yani, evdeki kasanın sadece belirli kurallara uygun anahtarlarla açılabilmesi gibidir.
Pod Security Policies ile İlgili İpuçları
- Minimum Gerekli Erişim: PSP’leri oluştururken, minimum gerekli erişimi sağlayacak şekilde tasarlayın. Yani, sadece gerekli olan işlemlere izin verin. Bu, evdeki kasayı sadece belirli kişilerin açabilmesi gibi düşünülebilir.
- Düzenli Kontroller: PSP’lerinizi düzenli olarak gözden geçirin ve güncelleyin. Güvenlik gereksinimleriniz zamanla değişebilir. Evinizdeki güvenlik önlemlerini düzenli olarak gözden geçirmek gibi.
- Test Ortamında Deneme: PSP’leri üretim ortamına geçirmeden önce test ortamında deneyin. Bu, istenmeyen kesintilerin önüne geçer. Evinizde yeni güvenlik önlemlerini uygulamadan önce küçük çaplı denemeler yapmak gibi.
Sonuç
Pod Security Policies, Kubernetes ortamınızda güvenliği sağlamak için vazgeçilmez bir araçtır. Doğru yapılandırılmış PSP’ler ile pod’ların belirli güvenlik kurallarına uygun olarak çalışmasını sağlayabilir, izinsiz erişimleri ve zararlı davranışları engelleyebilirsiniz. Tıpkı evinizdeki odalar ve eşyalar için kurallar koyarak düzeni sağlamak gibi, Kubernetes’te de PSP’ler ile güvenli ve düzenli bir ortam oluşturabilirsiniz.
Umarım bu makale, Pod Security Policies hakkında daha fazla bilgi edinmenize yardımcı olmuştur. Bir sonraki yazıda görüşmek üzere!
Kaynaklar
- Kubernetes resmi dokümantasyonu (Pod Security Policies): Kubernetes.io — Pod Security Policies
- “Kubernetes Up & Running” — Kelsey Hightower, Brendan Burns, Joe Beda
Serideki Diğer Yazılar
- Kubernetes Security: Authentication
- Kubernetes Security: Authorization
- Kubernetes Security: Admission Controller
- Kubernetes Security: Network Policies
- Kubernetes Security: Secret Management
- Kubernetes Security: Service Accounts
- Kubernetes Security: Güvenli İletişim için TLS
Buy Me A Coffee
Bana bir kahve ısmarlayarak destek olabilirsiniz.
https://www.buymeacoffee.com/barisakdas