Cloud Firestore Security Rules ile altyapıyı yönetmek veya sunucu tarafı kimlik doğrulama ve yetkilendirme kodu yazmak zorunda kalmadan mükemmel bir kullanıcı deneyimi oluşturmaya odaklanabilirsiniz.
Güvenlik kuralları, basit ancak etkileyici bir biçimde erişim denetimi ve veri doğrulaması sağlar. Kullanıcılarınızın verilerini güvende tutan kullanıcı tabanlı ve rol tabanlı erişim sistemleri oluşturmak için Cloud Firestore Security Rules ile Firebase Authentication'i kullanmanız gerekir.
Güvenlik kuralları 2. sürüm
Mayıs 2019 itibarıyla Cloud Firestore güvenlik kurallarının 2. sürümü kullanıma sunuldu. Kuralların 2. sürümünde, yinelenen joker karakterlerin {name=**}
davranışı değiştirildi. Koleksiyon grubu sorgularını kullanmayı planlıyorsanız 2. sürümü kullanmanız gerekir. Güvenlik kurallarınızdaki ilk satırı rules_version = '2';
yaparak 2. sürümü etkinleştirmeniz gerekir:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Yazma kuralları
Varsayılan veritabanı ve projenizdeki her ek veritabanı için oluşturduğunuz veri modeline göre Cloud Firestore Security Rules yazacak ve yöneteceksiniz.
Tüm Cloud Firestore Security Rules, veritabanınızdaki dokümanları tanımlayan match
ifadelerinden ve bu dokümanlara erişimi kontrol eden allow
ifadelerinden oluşur:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Cloud Firestore mobil/web istemci kitaplığından gelen her veritabanı isteği, herhangi bir veri okumadan veya yazmadan önce güvenlik kurallarınıza göre değerlendirilir. Kurallar, belirtilen doküman yollarından herhangi birine erişimi reddederse isteğin tamamı başarısız olur.
Aşağıda temel kural kümeleriyle ilgili bazı örnekler verilmiştir. Bu kurallar geçerli olsa da üretim uygulamaları için önerilmez:
Yetkilendirme gerekli
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Tümünü reddet
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Tümüne izin ver
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Yukarıdaki örneklerde kullanılan {document=**}
yolu, veritabanının tamamındaki tüm dokümanlarla eşleşir. Belirli veri yollarını nasıl eşleyeceğinizi ve hiyerarşik verilerle nasıl çalışacağınızı öğrenmek için güvenlik kurallarını yapılandırma kılavuzuna gidin.
Test kuralları
Cloud Firestore, kural kümenizi test etmek için kullanabileceğiniz bir kural simülasyon aracı sağlar. Simülatöre Firebase konsolunun Cloud Firestore bölümündeki Kurallar sekmesinden erişebilirsiniz.
Kural simülasyon aracı, kimliği doğrulanmış ve kimliği doğrulanmamış okuma, yazma ve silme işlemlerini simüle etmenize olanak tanır. Kimlik doğrulaması yapılmış bir isteği simüle ettiğinizde çeşitli sağlayıcılardan kimlik doğrulama jetonları oluşturabilir ve önizleyebilirsiniz. Yapay zekayla taklit edilen istekler, şu anda dağıtılan kural kümenize değil, düzenleyicinizdeki kural kümesine göre çalıştırılır.
Kuralları dağıtma
Cloud Firestore'ü mobil uygulamanızdan kullanmaya başlamadan önce güvenlik kurallarını dağıtmanız gerekir. Kuralları Firebase konsolunda, Firebase CLI'yi veya Cloud Firestore yönetim REST API'sini kullanarak dağıtabilirsiniz.
Cloud Firestore Security Rules ile ilgili güncellemelerin yeni sorguları ve dinleyicileri etkilemesi bir dakikayı bulabilir. Ancak değişikliklerin tamamen yayılması ve etkin dinleyicileri etkilemesi 10 dakikayı bulabilir.
Firebase konsolunu kullanma
Projenizdeki varsayılan veritabanı için ilk kural grubunuzu oluşturup dağıtmak üzere Firebase konsolunun Cloud Firestore bölümündeki Kurallar sekmesini açın.
Online düzenleyiciye kurallarınızı yazın ve Yayınla'yı tıklayın.
Firebase CLI'yi kullanma
Kuralları Firebase CLI'yi kullanarak da dağıtabilirsiniz. CLI'yi kullanmak, uygulama kodunuzla birlikte kurallarınızı sürüm kontrolünde tutmanıza ve kuralları mevcut dağıtım sürecinizin bir parçası olarak dağıtmanıza olanak tanır.
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
Cloud Storage için güvenliği artırma
Uygulamalarınız, Cloud Firestore'ün güçlü veritabanı özelliklerinden ve Cloud Storage'un dosya depolama ve yönetim özelliklerinden yararlanır. Cloud Firestore, her iki ürün için de Firebase Güvenlik Kuralları tarafından kullanılabilen yetkilendirme şartlarını yakalayabileceğinden, bu ürünler birlikte kullanıldığında uygulama güvenliğini de güçlendirir. Daha fazla bilgi için Cloud Storage kılavuzunu inceleyin.
Sonraki adımlar
- Güvenlik kurallarını nasıl oluşturacağınızı öğrenin.
- Özel güvenlik kuralları koşulları yazın.
- Güvenlik kuralları referansını okuyun.