Veritabanı erişim denetimi nedir?
Güncelleme:
Veritabanı erişim denetimi, bir kurumun şu üç şeye karar verme biçimidir: kim veritabanına ulaşabilir, oraya ulaştığında ne yapabilir ve sonuçta neyi görebilir. Çoğu ekibin birincisine tam, ikincisine kısmi, üçüncüsüne ise hiç cevabı yoktur.
Üç katman
Kim bağlanabilir
Herkesin ilk kurduğu katman budur: ağ kuralları, bir bastion sunucu ya da VPN, SSH anahtarları ve parola yöneticisinde tutulan kimlik bilgileri. Gerçek bir soruyu cevaplar ve iyi cevaplar. Sınırı, işinin bağlantı kurulduğu anda bitmesidir.
Ne yapabilir
Veritabanının kendi izin sistemi burada yaşar — GRANT, roller ve motorun
desteklediği yerlerde satır düzeyi güvenlik. Hem gerçekten güçlü hem de gerçekten
kabadır. Yalnızca okuma yetkisi veren bir rol, her satırın her kolonunda SELECT’e
izin verir. UPDATE’e izin veren bir rol, dikkatli bir tek satır değişikliğiyle
tüm tabloyu yeniden yazan WHERE’siz bir ifadeyi ayırt edemez.
Neyi görebilir
Çoğu ekibin atladığı katman. Doğru kapsamlanmış bir okuma bile gerçek e-posta adreslerini, gerçek telefon numaralarını ve gerçek kart numaralarını döndürür — bir dizüstü bilgisayara, bir terminal geçmişine, bazen de çekildiği olaydan daha uzun yaşayan bir tabloya.
Katmanlar neden toplamda yetmiyor
Boşluk bir yapılandırma hatası değil, yapısaldır. Ağ denetimleri SQL okuyamaz. Veritabanı yetkileri niyeti değerlendiremez. Hiçbiri sonucu maskeleyemez.
Dolayısıyla yaygın düzen — bir bastion, bir salt okunur rol ve kasadaki bir kimlik bilgisi — gerçek bir boşluk bırakır: meşru bir gerekçesi olan, kimliği doğrulanmış bir mühendis meşru görünen bir sorgu çalıştırır, maskesiz üretim verisi alır ve geriye kalan tek kayıt bir bağlantının kurulduğudur.
Bu boşluğu kapatan uygulamalar
Gerçekten uygulanan en az yetki. Okuma yeterliyse yalnızca okuma; tüm örnek yerine tek şema; günlük ihtiyacı olmayana kalıcı üretim erişimi yok.
Paylaşılan kimlik bilgisi yok. İki kişinin bildiği bir parola, sahibi olmayan bir paroladır. Her eylem bir kişiye kadar izlenebilmelidir. Paylaşılan parola olmadan üretim veritabanı erişimi yazısı alternatifi gösterir.
Yalnızca kimliği değil ifadeyi de inceleyin. SQL’i çalışmadan önce parse
etmek, kimlik doğrulamanın asla yakalayamayacağı WHERE’siz UPDATE’i ve sınırsız
SELECT’i yakalar.
İkinci bir kişinin onayı. Kod incelemesiyle aynı mantık: ucuzdur ve yazarın kendi işinde göremediğini yakalar.
Çıkışta maskeleyin. Kişisel veri sonuçlar depolamaya akarken maskeleniyorsa, sızdırılacak maskesiz bir kopya hiç var olmaz.
Değiştirilemez biçimde kaydedin. Kim istedi, kim onayladı, ne çalıştı, ne kadar sürdü, neye dokundu — ekleme ve okumaya izin veren ama düzenlemeye izin vermeyen bir depoda.
Veritabanı motoruna göre
Fikir her motorda aynıdır, ama motorun kendi sunduğu şey ve bir korumanın neyi
engellemesi gerektiği farklıdır. Motora özgü sayfalar
PostgreSQL,
MySQL ile MariaDB ve
SQL Server konularını kapsar. SQLite hedefleri
de desteklenir: SQL korumaları referansı
korumanın ATTACH, DETACH, VACUUM ... INTO ve load_extension( ifadelerini
engellediğini listeler; bir ayar da bağlantının hangi dosyaları açabileceğini
sınırlayabilir. QueryProxy’nin bir veritabanına ulaşmanın diğer yollarıyla nasıl
karşılaştığını görmek için karşılaştırmaları okuyun.
Uyum
Denetçiler veritabanı erişimi için hep aynı soruyu sorar: veriye kim ulaşabilirdi, bir değişikliği kim onayladı ve bunu gösterebiliyor musunuz? QueryProxy bu kanıtın üretilmesine yardım eder; kimsenin denetimi geçmesini sağlamaz. Aşağıdaki her sayfa, ilgili olduğu kontrolleri ve kurumunuzda kalan işleri listeler:
- SOC 2 ve veritabanı erişim denetimi
- PCI DSS ve veritabanı erişim denetimi
- ISO 27001 ve veritabanı erişim denetimi
- GDPR ve veritabanı erişimi
- KVKK ve veritabanı erişim denetimi
QueryProxy nerede duruyor
QueryProxy ikinci ve üçüncü katmanları uygular ve birincisine zaten sahip olduğunuzu varsayar. Geliştiriciler üretim kimlik bilgilerini hiç ellerinde tutmaz; bir DBA’in kendilerine yetki verdiği bağlantılara SQL gönderirler. İfadeler çalışmadan önce parse edilir. Bir DBA web kuyruğundan ya da bir Slack kartından onaylar ve hiçbir DBA kendi talebini onaylayamaz — bunu yalnızca bir yönetici geçersiz kılabilir ve bu geçersiz kılma denetim günlüğünde işaretlenir. Sonuçlar sınırlandırılmış, diske değmeden kurallarınıza göre maskelenmiş ve uygulamanın düzenlemediği ya da silmediği, yalnızca eklenen bir denetim günlüğüne kaydedilmiş olarak döner.
Ağ denetimlerinizin ya da veritabanınızın kendi yetkilerinin yerini almaz. İkisinin arasında durup hiçbirinin soramadığı soruyu sorar: bu ifade çalışmalı mı ve buna kim daha katılıyor?
Bir talebin uçtan uca nasıl ilerlediği için girişi okuyun ya da alışılmış kurulumla farkı için QueryProxy ile bastion sunucu karşılaştırmasına bakın.
Denetim ve uyum ekipleri için: QueryProxy’nin veri güvenliği tedbirlerine hangi kanıtı üretmeye yardım ettiği KVKK ve veritabanı erişim denetimi sayfasında anlatılır.
Sık sorulanlar
- Veritabanı erişim denetimi nedir?
- Veritabanı erişim denetimi, bir veritabanına kimin bağlanabileceğine, hangi işlemleri yapabileceğine ve sonuçta hangi veriyi görebileceğine karar veren kurallar ve mekanizmalar bütünüdür. Veritabanının kendi GRANT sistemini, ağ yolunu ve önündeki onay ya da maskeleme katmanını kapsar.
- Erişim denetimi ile kimlik doğrulama aynı şey mi?
- Hayır. Kimlik doğrulama birinin kim olduğunu belirler. Erişim denetimi ise o kimliğin bundan sonra ne yapabileceğine karar verir. Bir sistem kimliği kusursuz doğrulayıp yine de her mühendisin üretimde DELETE çalıştırmasına izin verebilir, çünkü bunlar ayrı sorulardır.
- En az yetki ilkesi nedir?
- Her kimliğe, işini yapmasına yetecek en dar izin kümesini vermek; ihtiyacını da kapsayan geniş bir rolü değil. Veritabanı diliyle bu, okuma yeterliyse yalnızca okuma, tüm örnek yerine tek bir şema ve günlük olarak ihtiyaç duymayan kimseye kalıcı üretim erişimi vermemek demektir.
- Rol tabanlı erişim denetimi neden tek başına yetmiyor?
- Roller kabadır. Yalnızca okuma yetkisi olan bir rol bile her satırın her kolonunda SELECT'e izin verir, kişisel veriler dahil; UPDATE'e izin veren bir rol ise dikkatli bir tek satır güncellemesiyle tabloyu baştan yazan WHERE'siz bir ifadeyi ayırt edemez. Roller kimin işlem yapabileceğini söyler; belirli bir ifadeyi inceleyemez.