Black Friday · 27 Kasım 2026

Seçili sertifikalarda %90'a varan indirim.

Çok değerli bir kariyer hedefi için tek seferlik fırsat. Sınırlı sayıda kupon, önce bekleme listesine.

Ücretsiz ders · CKAD Hazırlık Programı · Modül 5: Ortam, yapılandırma ve güvenlik

Güvenlik Bağlamlarıyla Yetki Düşürmek

Varsayılan kapsayıcılar tam yetki setiyle root koşar; her kaçışı makine uzlaşmasına çevirir. Güvenlik bağlamları uygulamaya gereken tam kadarını bırakıp gerisini soyar.

12 dk okuma

Kazanımlar

  • Kapsayıcıları açık kimlikli root dışı kullanıcılarla koşturmak
  • Kapsayıcı başına yetenek düşürmek ve yetki yükseltmeyi yasaklamak
  • Uygulamanın ihtiyaç duyduğu yerde pod düzeyi fsGroup artı sysctl kurmak
  • Reddedilen çağrıyı eksik bağlam alanına kadar izlemek

Neden önemli

Kapsayıcı kaçış şiddeti kapsayıcı yetkisine eşittir; en dar yetki kümedeki en ucuz güvenlik denetimidir. CKAD alanları doğrudan ölçer; çünkü salt YAMLdir, hemen uygulanır etkileri vardır: runAsUser, yetenekler, readOnlyRootFilesystem, allowPrivilegeEscalation. Sınavlar aynı nedenle sever, saldırganlar aynı nedenle nefret eder.

Kavramlar

Pod düzeyi bağlam paylaşılan varsayılanları kurar: tüm kapsayıcılara runAsUser artı runAsGroup, bağlı birimler grup yazılabilir gelsin diye fsGroup ve seçili sysctller. Kapsayıcı düzeyi bağlam kapsayıcı başına geçersiz kılar, keskin aletleri taşır: yetenek düşürme (ALL, sonra uygulamanın kanıtladığı NET_BIND_SERVICE veya neyse geri eklenir), allowPrivilegeEscalation false (roota giden setuid yollarını kapatır), readOnlyRootFilesystem true (uygulamanın gerçekten yazdığı karalama yollarına emptyDir bağlamalarıyla) ve runAsNonRoot true (yalnız uid 0 koşan imajları reddeder).

Retler temiz okunur: yazmalardaki izin hataları dosya sistemi veya kullanıcı yanlış demektir, yetenek hataları denetim veya dmesg içinde eksik yeteneği adlandırır, başlangıçta runAsNonRoot ile CrashLoop imajın root istediğini söyler; düzeltilir veya değiştirilir.

Uygulamalı örnek

Nginx biçimli uygulama, ihtiyaçlarına soyunmuş:

securityContext:
  runAsUser: 10001
  runAsGroup: 30001
  fsGroup: 30001
containers:
- name: web
  securityContext:
    allowPrivilegeEscalation: false
    readOnlyRootFilesystem: true
    runAsNonRoot: true
    capabilities:
      drop: [ALL]
      add: [NET_BIND_SERVICE]
  volumeMounts:
  - { name: tmp, mountPath: /tmp }
  - { name: cache, mountPath: /var/cache/nginx }
volumes:
- { name: tmp, emptyDir: {} }
- { name: cache, emptyDir: {} }

kubectl exec uid 10001 kimliğini kanıtlar; bağlamalar dışı yazma tasarım gereği başarısız olur; 80. port bağlama tutulan tek yetenekle çalışır. Her izin ihtiyaca izlenir, alışkanlığa hiçbir şey yok.

Sınav notları

readOnlyRootFilesystem açılışta yazan uygulamaları kırar: bayrağı düşürmek yerine tam karalama bağlamaları ekle. ALL yetenek düşürmek özellikleri sessiz öldürür (düşük port bağlama, ham soket, chown): hatadan tek tek geri ekle. Ve fsGroupsuz runAsUser birim yazmalarını roota ait bırakır: uygulama bağlamalara yazıyorsa eşleştir.

Mini kontrol

4 soruluk öz kontrol. Yanıtların cihazında kalır, saklanmaz ve gönderilmez. Yalnızca geçen skor (ör. 4 soruda 3) kaydedilir ve yalnızca ders ilerlemesinin kilidini açmak için: bir dersin tamamlanmış sayılması için en az 3 doğru gerekir. Hiçbir sertifika değerlendirmesine sayılmaz.

Ders geri bildirimi

Henüz yayında geri bildirim yok.

Geri bildirim yazmak için giriş yap ve dersi tamamla.

Kaynaklar

Alıştırma

Kurgusal root koşan uygulama bildirimini pod artı kapsayıcı bağlamlarıyla sertleştir (root dışı kullanıcı, düşürülmüş yetkiler ve gerekçeli tek geri ekleme, karalama bağlamalı salt okunur kök, yükseltme yok). Kimliğin exec kanıtını ve anlamlı tasarlanmış bir ret çıktısını göster.

Geçme kriterleri

Bağlamlar iki düzeyde eksiksiz, her izin gerekçeli; exec root dışılığı kanıtlar; ret çıktısı doğru alan düzeyi okumayla alıntılı.

İlerlemeni kaydetmek için giriş yapÜcretsiz hesap: yalnızca ders ilerlemen ve quiz sonuçların saklanır.