Least privilege (en az yetki), bir kullanıcının, servisin veya sürecin gorevini yerine getirmek icin ihtiyaç duydugu minimum yetki setiyle sinirlandirilmasi ilkesidir. Varsayilan geniş yetki, insider threat, credential theft ve yanlış yapılandırma etkisini buyutur. Least privilege sadece IAM konsolunda rol acmak degil; uygulama mimarisi, veritabanı erisimi, network segmentasyonu, CI/CD pipeline ve gunluk operasyonlarin tamamina yayilan bir güvenlik kulturudur.
Temel kavramlar
- Subject: Kullanıcı, servis hesabi, API key sahibi.
- Resource: Veritabanı, dosya, API endpoint, cloud kaynagi.
- Permission: Okuma, yazma, silme, admin.
- Scope: Tek kaynak, kaynak grubu, tenant, global.
Yetki verilirken need-to-know ve just-in-time (JIT) erişim modelleri birlikte dusunulur. Kalıcı admin yerine saatlik geçici yukseltme (privileged access management) tercih edilir.
Kullanıcı ve rol tasarımı
RBAC (Role-Based Access Control) ile rol tanimlari is fonksiyonuna gore ayrilir: OrderReader, OrderManager, BillingAdmin. Role explosion onlemek icin rol hiyerarsisi ve permission set birlestirmesi kullanılır. Varsayilan rol minimum yetkili olmali; yeni kullanıcı otomatik admin almamali.
// Kotu: herkese Admin
options.AddPolicy("AdminOnly", p => p.RequireRole("Admin"));
// Iyi: ince taneli policy
options.AddPolicy("Orders.Read", p =>
p.RequireClaim("permission", "orders:read"));
ABAC (Attribute-Based Access Control) dinamik kurallar icin: departman, lokasyon, veri sinifi. Hybrid RBAC+ABAC büyük kurumlarda esneklik sağlar.
Servis hesaplari ve makine kimligi
Uygulama-servis iletisimi icin ayri servis hesabi; kullanıcı oturumu ile karistirilmamali. Kubernetes ServiceAccount, Azure Managed Identity, AWS IAM Role for Service Account (IRSA) secret'siz kimlik sağlar. Her mikro servis yalnizca ihtiyaç duydugu diger servislere erisebilir.
Veritabanı least privilege
Uygulama DB kullanıcısı db_owner olmamali. CRUD ayri kullanicilar veya schema-level grant:
CREATE USER app_api WITH PASSWORD '...';
GRANT SELECT, INSERT, UPDATE ON schema_app.orders TO app_api;
-- DELETE ve DDL yok
Migration icin ayri pipeline kullanıcısı; runtime API kullanıcısı DDL yapamaz. Read replica'ya yalnizca SELECT.
Network ve altyapi
Zero Trust: ic ag güvenilir kabul edilmez. Network policy ile pod-pod iletişim kisitlanir. Veritabanı yalnizca uygulama subnet'inden erisilebilir. SSH/RDP jump host ve JIT erişim. Security group'ta 0.0.0.0/0 açık port anti-pattern.
CI/CD ve deployment
Pipeline service account production'a deploy edebilir; geliştirici dogrudan production DB'ye erisemez. GitHub Actions OIDC ile cloud role assumption; uzun omurlu access key yok. Secret okuma yetkisi yalnizca ilgili job'a. Production onay kapisi (manual approval) ayri kimlik ile.
Uygulama katmanı
Authorization handler her endpoint'te kaynak sahipligi kontrol eder (IDOR onleme). Mediator command'larinda ICurrentUser ile tenant ve rol bilgisi. Background job servis hesabi ile sinirli scope. Admin endpoint'leri ayri policy ve MFA.
Cloud IAM pratikleri
AWS: policy'de Action ve Resource spesifik; "*" kaçın. Permission boundary ve SCP (Organization) ust sınır. Azure: custom role minimal action listesi. Duzenli access review ve unused permission raporu (IAM Access Analyzer, Entra ID access reviews).
Just-in-time ve PAM
Azure PIM, CyberArk gibi araclarla admin rolu saatlik aktive edilir; MFA ve is gerekcesi zorunlu. Oturum kaydedilir. Kalıcı Global Admin sayisi minimize edilir. Break-glass hesap kapali tutulur, acil durum proseduru dokumante.
API key ve token kapsami
API key'e tek amac, tek scope ve expiry atanir. Read-only entegrasyon key'i write yetkisi almaz. JWT claim'lerinde scope veya permissions array; token suresi kisa, refresh rotation. OAuth client credentials yalnizca machine-to-machine.
Organizasyonel yayginlastirma
Least privilege teknik uygulama kadar süreç gerektirir:
- Yeni rol talebi: is gerekcesi + onay akisi.
- Periyodik access review (uc ayda bir).
- Offboarding: ayni gun tüm erişim iptali.
- Güvenlik egitimi: neden admin istenmemeli.
- Metrik: ortalama permission sayisi, stale account.
Olcme ve iyileştirme
Blast radius analizi: bir credential calinirsa ne erisilir? Tabletop exercise. IAM policy simulator ile etki testi. Overprivileged account tespiti otomatik rapor. Her güvenlik olayindan sonra yetki genislemesi gozden gecirilir.
Yaygın anti-patternler
- Herkes production'a VPN + admin.
- Shared service account tüm ekip tarafindan.
- Lambda/Function'a
*:*IAM policy. - Root cloud account gunluk kullanım.
- Test ortaminda production verisi + geniş erişim.
Regulasyon
SOX, ISO 27001, PCI DSS segregation of duties ve least privilege ister. Denetimde rol matrisi, review kayitlari ve ayricalikli erişim loglari gosterilir. Uyumsuzluk bulgusu remediation plani ile kapatilir.
Least privilege ilkesi, güvenlik mimarisinin omurgasidir. Kullanıcı, servis, veritabanı ve ag katmanlarinda sistematik uygulandiginda saldırı etkisi daralir, insider risk azalir ve regulasyon gereksinimleri karsilanir. JIT erişim, duzenli review ve otomasyon ile birlestirildiginde hem güvenlik hem operasyonel verimlilik artar.
Delegation ve impersonation
Admin'in baska kullanıcı adina işlem yapmasi (impersonation) auditlenmeli ve sinirli olmali. Delegation zinciri yetki genislemesine yol acabilir; derinlik limiti konulmali.
Container ve filesystem
Docker container non-root user ile calismali; read-only root filesystem. Capabilities drop (CAP_SYS_ADMIN kaldir). Kubernetes Pod Security Standards restricted profil. Host path mount minimum.
Supply chain
CI/CD pipeline'a yazma yetkisi olan token'lar least privilege ile sinirli. Dependabot ve SAST araclari ayri read-only token kullanır. Artifact registry push yalnizca release branch'ten.
Veri katmanı ve row-level security
PostgreSQL RLS veya SQL Server row-level security ile ayni uygulama kullanıcısı bile sorgu sonucunu tenant veya departman bazinda filtreler. Uygulama katmaninda unutulan filtre, veritabanı katmaninda ikinci savunma hattidir. RLS policy degisiklikleri migration ile versiyonlanir ve auditlenir.
Onboarding ve offboarding otomasyonu
HR sisteminden Identity Provider'a otomatik provizyon (SCIM) rol atamasini standartlastirir. Isten ayrilma olayinda tüm oturumlar invalidate edilir, API key'ler iptal edilir, grup uyelikleri kaldirilir. Manuel adim unutulursa hayalet hesap (orphan account) kalir; otomasyon SLA tanimlar.
Least privilege olgunluk modeli
Seviye 1: varsayilan geniş yetki. Seviye 2: rol bazli RBAC. Seviye 3: ince taneli permission + duzenli review. Seviye 4: JIT/PAM + otomatik overprivilege tespiti. Seviye 5: sürekli adaptif erişim (risk skoru yuksekse ek dogrulama). Kurum hedef seviyeyi tanimlayip yillik yol haritasi cikarir.
Break-glass proseduru
Acil durum hesaplari kapali tutulur, fiziksel kasada veya HSM'de şifre saklanir. Kullanım aninda çoklu onay, sinirli sure ve otomatik audit zorunludur. Tatbikat dışında acil hesap kullanımı ihlal sayilir. Işlem bitince hesap tekrar devre disi birakilir.
Least privilege metrikleri
Güvenlik dashboard'unda ortalama rol basina permission sayisi, 90 gundur kullanılmayan hesaplar ve production'a dogrudan erişim yapan kullanıcı listesi izlenir. Metrik kotulestiginde otomatik ticket acilir. Her ceyrekte hedef: kullanılmayan permission %10 azaltma.
Üçüncü parti entegrasyonlar
Dis servis API key'leri yalnizca gerekli scope ile sinirlandirilir. OAuth consent ekraninda talep edilen izinler minimum tutulur. Entegrasyon partneri veri erisimini periyodik review edilir; sözleşme bitince erişim otomatik iptal edilir.
Ekip kulturu
Least privilege hayir demeyi gerektirir; yönetim destegi olmadan uygulama zorlasir. Güvenlik ve geliştirme ortak OKR ile hizalanir: açık overprivileged hesap sayisinin azalmasi, JIT kullanım oraninin artmasi ölçülebilir hedeflerdir. Duzenli egitim ve simule phishing tatbikati çalışan farkindaligini artirir.