İçeriğe atla
0 XP 0
0/5

Puan ders bitince hesaba yazılır. Bu dersi tamamlayınca +45 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

8 dk · 45 XP · 5 etkinlik

En az ayrıcalık

Bir hesap ele geçtiğinde ilk soru şudur: bu hesap neler yapabiliyordu? Yanıt her şey ise olay felakete döner. Yanıt tek klasörü okumaksa olay küçük kalır. Hasarın boyunu çoğu zaman saldırganın becerisi değil, ele geçen hesabın yetkisi belirler.

En az ayrıcalık (least privilege) bu gözlemi kurala bağlar. NIST tanımına göre sistem, kullanıcıların ve onlar adına çalışan süreçlerin yetkisini verilen işi bitirecek en düşük düzeyde tutar. Kural insana, servis hesabına, kapsayıcıya ve API anahtarına aynı biçimde uygulanır. Fazla yetki, gelecekteki saldırganın hazır kazancıdır.

İlk uygulama aracı rol tabanlı erişimdir (RBAC). Yetkiyi kişiye değil role bağlarsın. Destek rolü siparişi görür ama kart numarasını göremez. Yeni gelen kişiye rolü verirsin, yetkileri tek tek dağıtmazsın. Kişi departman değiştirdiğinde eski rol düşer, yenisi gelir.

# Kötü: uygulama root ile çalışıyor, veritabanına da root bağlanıyor
USER root
DB_URL=mysql://root:...@db:3306/shop

# İyi: ayrı sistem kullanıcısı ve dar veritabanı hesabı
USER app
DB_URL=mysql://shop_ro:...@db:3306/shop   # yalnız SELECT

GRANT SELECT ON shop.orders TO 'shop_ro'@'%';
Uygulama kullanıcısı ile veritabanı hesabı ayrı ayrı daraltılır.

Koddaki kötü örnekte iki hata üst üste biner. Uygulama işletim sisteminde root olarak koşar ve veritabanına da tam yetkili root hesabıyla bağlanır. Uygulamada tek bir SQL enjeksiyonu açığı çıkarsa saldırgan tablo siler, yeni kullanıcı açar. İyi örnekte uygulama ayrı bir sistem kullanıcısıyla çalışır, veritabanına yalnız SELECT yetkili hesapla bağlanır. Aynı açık çıksa bile saldırgan yalnız okur.