Cloud Firestore Security Rules ile altyapıyı yönetmek veya sunucu tarafında kimlik doğrulama ve yetkilendirme kodu yazmak zorunda kalmadan harika bir kullanıcı deneyimi oluşturmaya odaklanabilirsiniz.
Güvenlik kuralları, basit ancak etkileyici bir biçimde erişim denetimi ve veri doğrulama sağlar. Kullanıcılarınızın verilerini güvende tutan kullanıcı tabanlı ve role dayalı erişim sistemleri oluşturmak için Cloud Firestore Security Rules ile birlikte Firebase Authentication'ı kullanmanız gerekir.
Güvenlik kuralları sürüm 2
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 özyinelemeli joker karakterlerin {name=**}
davranışı değiştiriliyor. Koleksiyon grubu sorgularını kullanmayı planlıyorsanız 2. sürümü kullanmanız gerekir. Güvenlik kurallarınızda rules_version = '2';
ifadesini ilk satır yaparak 2. sürümü etkinleştirmeniz gerekir:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Yazım kuralları
Varsayılan veritabanı ve projenizdeki her ek veritabanı için oluşturduğunuz veri modeline göre uyarlanmış Cloud Firestore Security Rules yazıp bunları yönetirsiniz.
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 FirestoreMobil/web istemci kitaplığından gelen her veritabanı isteği, herhangi bir veri okunmadan veya yazılmadan önce güvenlik kurallarınıza göre değerlendirilir. Kurallar, belirtilen doküman yollarından herhangi birine erişimi engellerse isteğin tamamı başarısız olur.
Temel kural kümelerine ilişkin bazı örnekleri aşağıda bulabilirsiniz. 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 belgelerle eşleşir. Belirli veri yollarını eşleştirme ve hiyerarşik verilerle çalışma hakkında bilgi edinmek için güvenlik kurallarını yapılandırma kılavuzuna geçin.
Kuralları test etme
Cloud Firestore, kural kümenizi test etmek için kullanabileceğiniz bir kural simülatörü sağlar. Simülatöre Firebase konsolunun Cloud Firestore bölümündeki Kurallar sekmesinden erişebilirsiniz.
Kural simülatörü, kimliği doğrulanmış ve doğrulanmamış okuma, yazma ve silme işlemlerini simüle etmenize olanak tanır. Kimliği doğrulanmış bir isteği simüle ettiğinizde, çeşitli sağlayıcılardan kimlik doğrulama jetonları oluşturup önizleyebilirsiniz. Simüle edilmiş istekler, şu anda dağıtılan kurallar kümenize değil, düzenleyicinizdeki kurallar kümesine göre çalıştırılır.
Kuralları dağıtma
Mobil uygulamanızda Cloud Firestore kullanmaya başlamadan önce güvenlik kurallarını dağıtmanız gerekir. Kuralları Firebase konsolunda, Firebase CLI'yi kullanarak veya Cloud Firestore yönetim REST API'si ile dağıtabilirsiniz.
Cloud Firestore Security Rules ile ilgili güncellemelerin yeni sorguları ve dinleyicileri etkilemesi bir dakika kadar sürebilir. Ancak değişikliklerin tamamen yayılması ve etkin dinleyicileri etkilemesi 10 dakika sürebilir.
Firebase konsolunu kullanma
İlk kural kümenizi oluşturup dağıtmak için projenizdeki varsayılan veritabanı için Firebase konsolunun Cloud Firestore bölümünde Kurallar sekmesini açın.
Kurallarınızı online düzenleyicide yazıp Yayınla'yı tıklayın.
Firebase CLI'yı kullanma
Kuralları Firebase CLI'yı kullanarak da dağıtabilirsiniz. CLI'yı kullanarak kurallarınızı uygulama kodunuzla birlikte sürüm kontrolü altında tutabilir ve kuralları mevcut dağıtım sürecinizin bir parçası olarak dağıtabilirsiniz.
// 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 güvenliğini artırma
Uygulamalarınız Cloud Firestore'ın güçlü veritabanı özelliklerinden, Cloud Storage'ın ise dosya depolama ve yönetim özelliklerinden yararlanır. Bu ürünler birlikte kullanıldığında, her iki ürün için de Firebase Güvenlik Kuralları tarafından kullanılabilen yetkilendirme şartlarını Cloud Firestore yakalayabildiğinden uygulama güvenliğini de güçlendirir. Daha fazla bilgi için Cloud Storage kılavuzuna bakın.
Sonraki adımlar
- Güvenlik kurallarını nasıl yapılandıracağınızı öğrenin.
- Özel güvenlik kuralı koşulları yazın.
- Güvenlik kuralları referansını okuyun.