Kubernetes SecurityContext(s)
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Bir Pod'un güvenlik bağlamını belirtirken birkaç özellik kullanabilirsiniz. Savunma güvenliği açısından dikkate almanız gerekenler:
runASNonRoot'u True olarak ayarlamak
runAsUser'ı yapılandırmak
Mümkünse, seLinuxOptions ve seccompProfile belirterek izinleri sınırlamayı düşünmek
runAsGroup ve supplementaryGroups aracılığıyla yetki grubu erişimi vermemek
Bir pod'daki tüm konteynerlere uygulanan özel bir ek grup. Bazı hacim türleri, Kubelet'in bu hacmin sahipliğini değiştirmesine izin verir: 1. Sahip GID FSGroup olacaktır 2. setgid biti ayarlanmıştır (hacimde oluşturulan yeni dosyalar FSGroup tarafından sahip olunacaktır) 3. İzin bitleri rw-rw---- ile OR'lanır. Ayarlanmamışsa, Kubelet herhangi bir hacmin sahipliğini ve izinlerini değiştirmeyecektir.
Bu, Pod içinde sergilenecek hacmin sahipliğini ve iznini değiştirme davranışını tanımlar.
Konteyner sürecinin giriş noktasını çalıştırmak için GID. Ayarlanmamışsa çalışma zamanı varsayılanını kullanır.
Konteynerin kök olmayan bir kullanıcı olarak çalışması gerektiğini belirtir. Eğer doğruysa, Kubelet, görüntüyü çalışma zamanında UID 0 (kök) olarak çalışmadığını doğrulamak için doğrulayacak ve eğer çalışıyorsa konteyneri başlatmayı başarısız kılacaktır.
Konteyner sürecinin giriş noktasını çalıştırmak için UID. Belirtilmemişse, görüntü meta verilerinde belirtilen kullanıcıya varsayılan olarak ayarlanır.
Tüm konteynerlere uygulanacak SELinux bağlamı. Belirtilmemişse, konteyner çalışma zamanı her konteyner için rastgele bir SELinux bağlamı tahsis edecektir.
Bu pod'daki konteynerler tarafından kullanılacak seccomp seçenekleri.
Her konteynerde çalıştırılan ilk süreç için ek olarak uygulanan grupların bir listesi.
Sysctls, pod için kullanılan namespaced sysctls listesini tutar. Desteklenmeyen sysctls (konteyner çalışma zamanı tarafından) olan pod'lar başlatılamayabilir.
Tüm konteynerlere uygulanan Windows'a özgü ayarlar. Belirtilmemişse, bir konteynerin SecurityContext içindeki seçenekler kullanılacaktır.
Bu bağlam konteyner tanımlarının içinde ayarlanır. Savunma güvenliği açısından dikkate almanız gerekenler:
allowPrivilegeEscalation'ı False olarak ayarlamak
Hassas yetkiler eklememek (ve ihtiyaç duymadıklarınızı kaldırmak)
privileged'i False olarak ayarlamak
Mümkünse, readOnlyFilesystem'ı True olarak ayarlamak
runAsNonRoot'u True olarak ayarlamak ve bir runAsUser belirlemek
Mümkünse, seLinuxOptions ve seccompProfile belirterek izinleri sınırlamayı düşünmek
runAsGroup aracılığıyla yetki grubu erişimi vermemek.
SecurityContext ve PodSecurityContext'te ayarlanan özelliklerin her ikisinde de, SecurityContext'te belirtilen değer önceliklidir.
AllowPrivilegeEscalation, bir sürecin ebeveyn sürecinden daha fazla yetki kazanıp kazanamayacağını kontrol eder. Bu bool, konteyner sürecinde no_new_privs bayrağının ayarlanıp ayarlanmayacağını doğrudan kontrol eder. AllowPrivilegeEscalation, konteyner Privileged olarak çalıştırıldığında veya CAP_SYS_ADMIN varsa her zaman doğrudur.
Konteynerler çalıştırılırken eklenecek/kaldırılacak yetkiler. Varsayılan olarak varsayılan yetki setini kullanır.
Konteyneri ayrıcalıklı modda çalıştırır. Ayrıcalıklı konteynerlerdeki süreçler esasen host'ta root ile eşdeğerdir. Varsayılan olarak false'dur.
procMount, konteynerler için kullanılacak proc mount türünü belirtir. Varsayılan, yalnızca okunabilir yollar ve maskelenmiş yollar için konteyner çalışma zamanı varsayılanlarını kullanan DefaultProcMount'tır.
Bu konteynerin yalnızca okunabilir bir kök dosya sistemine sahip olup olmadığını belirtir. Varsayılan olarak false'dur.
Konteyner sürecinin giriş noktasını çalıştırmak için GID. Ayarlanmamışsa çalışma zamanı varsayılanını kullanır.
Konteynerin kök olmayan bir kullanıcı olarak çalışması gerektiğini belirtir. Eğer doğruysa, Kubelet, görüntüyü çalışma zamanında UID 0 (kök) olarak çalışmadığını doğrulamak için doğrulayacak ve eğer çalışıyorsa konteyneri başlatmayı başarısız kılacaktır.
Konteyner sürecinin giriş noktasını çalıştırmak için UID. Belirtilmemişse, görüntü meta verilerinde belirtilen kullanıcıya varsayılan olarak ayarlanır.
Konteynere uygulanacak SELinux bağlamı. Belirtilmemişse, konteyner çalışma zamanı her konteyner için rastgele bir SELinux bağlamı tahsis edecektir.
Bu konteyner için kullanılacak seccomp seçenekleri.
Tüm konteynerlere uygulanan Windows'a özgü ayarlar.
integer
string
integer
boolean
integer
Hakkında daha fazla bilgi seLinux
Hakkında daha fazla bilgi Seccomp
integer array
dizi Hakkında daha fazla bilgi
boolean
Hakkında daha fazla bilgi Capabilities
boolean
string
boolean
integer
boolean
integer
Hakkında daha fazla bilgi seLinux
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)