Firebase Firestore Security Rules Nasıl Yazılır? Güvenli Veri Erişimi Rehberi
Firebase kullanmaya başlayan geliştiricilerin sık yaptığı hatalardan biri, istemci uygulamasının doğru çalışmasını veri güvenliğiyle karıştırmaktır. Android uygulamanız Firestore’dan veri okuyabiliyor diye güvenli bir mimariye sahip olmaz. Asıl sınır, istemciden gelen isteğin Firebase Security Rules tarafından doğru biçimde doğrulanmasıdır.
UygulamaTest Editörlüğü · Yayınlandı: 6 Ekim 2026 · Güncellendi: 6 Ekim 2026
Security Rules istemci kodunun yerine geçmez
Android uygulaması içindeki butonları gizlemek veya belirli ekranları göstermemek, yetkisiz bir kullanıcının doğrudan Firestore isteği yapmasını engellemek için yeterli değildir. Güvenlik kuralları sunucu tarafında erişim kontrolü sağlar ve istemciden gelen isteğin kimliğini ve koşullarını değerlendirir.
Bu nedenle “uygulamada bu alan görünmüyor” ile “bu alana erişilemiyor” ifadeleri aynı şey değildir. Güvenlik kuralını değiştirmeden önce veri modelinizi ve kullanıcı rollerini tanımlayın.
Authentication ile kullanıcı kimliğini bağlayın
Firebase Authentication kullanıyorsanız `request.auth` üzerinden oturum açmış kullanıcının kimliğine göre erişim kararları verebilirsiniz. Örneğin bir kullanıcının yalnızca kendi profil belgesini güncellemesine izin vermek, UID eşleşmesine dayalı bir kural ile sağlanabilir.
Yönetici, editör veya normal kullanıcı gibi farklı rolleriniz varsa rol bilgisini güvenli biçimde modelleyin. İstemcinin “ben adminim” şeklinde gönderdiği bir alanı tek başına doğru kabul etmeyin.
Kurallar filtre değildir
Firestore Security Rules ile ilgili en kritik kavramlardan biri kuralların sorgu sonucu için bir filtre gibi çalışmamasıdır. Bir sorgunun döndüreceği belgelerin tamamı kural koşullarını karşılamak zorundadır; aksi durumda sorgu başarısız olabilir. Bu nedenle kural yazarken uygulamanın hangi query koşullarıyla veri getireceğini de düşünün.
Özellikle `where`, `orderBy` ve `limit` kullanan sorgularda kuralların veri modelinizle aynı mantığı taşıdığından emin olun. “Kullanıcı yalnızca kendi belgelerini okuyabilir” gibi basit bir kural bile sorgu tarafında UID ile doğru sınırlandırılmazsa beklediğiniz sonucu vermeyebilir.
Veri doğrulama kurallarını da düşünün
Yetkilendirme kadar önemli başka bir katman da veri doğrulamadır. Kullanıcının yazabileceği alanları sınırlayın, istemeden kritik sistem alanlarının değiştirilmesine izin vermeyin ve gerekiyorsa değer türü, uzunluğu veya durum geçişi gibi kontroller koyun.
Örneğin bir kullanıcı profilinde `createdAt` veya `role` gibi sistem alanlarını değiştirmemelidir. Uygulama tarafında alanı gizlemek yerine Security Rules seviyesinde değişikliği gerçekten engellemek daha güvenlidir.
Üretimden önce kural testleri yapın
Kurallar değiştirildiğinde yalnızca uygulamadan birkaç ekranı açmak yeterli değildir. Yetkisiz kullanıcı, normal kullanıcı, yönetici ve gerekiyorsa anonim kullanıcı gibi farklı kimliklerle okuma/yazma senaryolarını test edin. Firebase dokümantasyonu kuralların hem erişim modeline hem de yazılan sorgulara göre ele alınmasını önerir.
Resmi kaynaklar
Bu içerik bilgilendirme amacıyla hazırlanmıştır. Google Play, Android ve Firebase gereksinimleri zaman içinde değişebilir. Yayın veya politika kararı vermeden önce ilgili resmi dokümantasyonun güncel sürümünü kontrol edin.