Cloud Firestore Güvenlik Kurallarındaki yaygın güvenlik açıklarını anlamak için bu kılavuzu kullanın kurallarınızı inceleyebilir ve daha iyi güvenlik altına alabilirsiniz, ve değişikliklerinizi dağıtmadan önce test edin.
Cloud Firestore veritabanınızın düzgün şekilde güvenliğinin sağlanmadığına dair bir uyarı alırsanız güvenlik açıklarını çözmek için Cloud Firestore Güvenlik Kuralları.
Mevcut Güvenlik Kurallarınızı görüntülemek için Kurallar sekmesine gidin. Firebase konsolunda yer alır.
Cloud Firestore Güvenlik Kurallarınızı Anlama
Cloud Firestore Güvenlik Kuralları, verilerinizi kötü amaçlı kullanıcılardan korur. Varsayılan Firebase konsolunda oluşturulan herhangi bir Cloud Firestore örneği için kural reddi tüm kullanıcılara erişmelerini sağlayabilir. Uygulamanızı geliştirmek ve veritabanınıza erişmek için bu kuralları değiştirmeniz gerekir ve genel erişim vermeyi düşünebilirsiniz tüm kullanıcılara sunmak için kullanılır. Ancak uygulamanızı üretim ortamına dağıtmadan önce ve verilerinizin güvenliğini sağlayın.
Uygulamanızı geliştirirken ve kullanıyorsanız, uygulamanızı şurada çalıştırmak için: Cloud Firestore emülatörünü yerel geliştirme ortamı sağlar.
Güvenli olmayan kurallar içeren yaygın senaryolar
Varsayılan olarak veya başlangıçta ayarlamış olabileceğiniz Cloud Firestore Güvenlik Kuralları uygulamanızı Cloud Firestore ile geliştirmek için yaptığınız çalışmalar incelenmeli ve güncellenmelidir. inceleyin. Kullanıcılarınızın güvenliğini düzgün bir şekilde sağladığınızdan emin olun. veri kaçınılmasına yardımcı olur.
Açık erişim
Cloud Firestore'u kurarken kurallarınızı açık erişime izin verecek şekilde ayarlamış olabilirsiniz yardımcı olur. Kendinizi muhtemelen ancak dağıttıysanız internette mevcuttur. Google güvenlik kurallarını yapılandırdıktan sonra da tahminde bulunan herkes verileri çalabilir, değiştirebilir veya silebilir.
Önerilmez: Tümüne okuma ve yazma erişimi yardımcı olur. |
// 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; } } }
Çözüm: Okuma ve veri işlemeyi kısıtlayan kurallar
yazma erişimi.
Veri hiyerarşiniz için anlamlı olacak kurallar oluşturun. Yaygın olarak kullanılan çözümlerden biri Firebase Authentication ile kullanıcı tabanlı güvenlik uygulamaktır. Daha fazla bilgi edinin kurallarla kullanıcı kimliklerini doğrulama hakkında |
Yalnızca içerik sahibi
service cloud.firestore { match /databases/{database}/documents { // Allow only authenticated content owners access match /some_collection/{document} { allow read, write: if request.auth != null && request.auth.uid == request.resource.data.author_uid } } }
Karma herkese açık ve özel erişim
service cloud.firestore { match /databases/{database}/documents { // Allow public read access, but only content owners can write match /some_collection/{document} { allow read: if true allow write: if request.auth != null && request.auth.uid == request.resource.data.author_uid } } }
Kimliği doğrulanmış tüm kullanıcılar için erişim
Cloud Firestore Güvenlik Kuralları, bazen bir kullanıcının giriş yapıp yapmadığını kontrol eder ancak buna devam etmez
bu kimlik doğrulamasına göre erişimi kısıtlayabilir. Kurallarınızdan biri
auth != null
, giriş yapan tüm kullanıcıların
dışı verilerdir.
Önerilmez: Giriş yapmış tüm kullanıcılar şunu okudu: ve veritabanınızın tamamına yazma erişimi sağlayın. |
service cloud.firestore { match /databases/{database}/documents { match /some_collection/{document} { allow read, write: if request.auth != null; } } }
Çözüm: Güvenliği kullanarak erişimi daraltın
conditions.
Kimlik doğrulamasını kontrol ederken, aynı zamanda erişimi daha da kısıtlamak için kimlik doğrulama özelliklerini dönüşüm artışını kullanabilirsiniz. Daha fazla bilgi: ekleyerek güvenlik koşullarını karşılayıp rol tabanlı erişim. |
Rol tabanlı erişim
service cloud.firestore { match /databases/{database}/documents { // Assign roles to all users and refine access based on user roles match /some_collection/{document} { allow read: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Reader" allow write: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Writer" // Note: Checking for roles in your database using `get` (as in the code // above) or `exists` carry standard charges for read operations. } } }
Özellik tabanlı erişim
// Give each user in your database a particular attribute // and set it to true/false // Then, use that attribute to grant access to subsets of data // For example, an "admin" attribute set // to "true" grants write access to data service cloud.firestore { match /databases/{database}/documents { match /collection/{document} { allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true; allow read: true; } } }
Karma herkese açık ve özel erişim
service cloud.firestore { match /databases/{database}/documents { // Allow public read access, but only content owners can write match /some_collection/{document} { allow read: if true allow write: if request.auth.uid == request.resource.data.author_uid } } }
Kapalı erişim
Uygulamanızı geliştirirken yaygın olarak kullanılan bir diğer yaklaşım da ve verileri kilitlenebilir. Genellikle bu, okuma ve yazma özelliğini devre dışı bıraktığınız tüm kullanıcılara erişim için aşağıdaki adımları uygulayın:
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Firebase Admin SDK'ları ve Cloud Functions, Cloud Firestore'u yalnızca sunucu olarak kullanmak istiyorsanız bu kuralları kullanın Firebase ile bağlantılı arka uç Yönetici SDK'si. Güvenli olsa da, uygulamanızın istemcilerinin güvenli olup olmadığını verileri düzgün şekilde alabilir.
Cloud Firestore Güvenlik Kuralları ve bu kuralların şurada işleyiş şekli hakkında daha fazla bilgi edinin: Cloud Firestore Güvenlik Kurallarını Kullanmaya Başlama.
Cloud Firestore Güvenlik Kurallarınızı kontrol edin
Uygulamanızın davranışını kontrol etmek ve Cloud Firestore Güvenlik Kuralları yapılandırmalarınızı doğrulamak için: Cloud Firestore emülatörünü kullanın. Cloud Firestore'u kullanma dağıtmadan önce birim testlerini yerel ortamda çalıştırıp otomatikleştirmek için emülatör herhangi bir değişiklik yok.
Güncellenen Cloud Firestore Güvenlik Kurallarınızı Firebase konsolunda hızlıca test etmek için şunu kullanın: aracını inceleyelim.
- Kurallar Oyun Alanı'nı açmak için aşağıdaki menüden Kurallar oyun alanı'nı tıklayın. Kurallar sekmesi.
- Kurallar oyun alanı ayarlarında, testinizle ilgili seçenekleri belirleyin. Örneğin:
- Okuma veya yazma işlemlerini test etme
- Veritabanınızdaki belirli bir Konum'u (yol olarak)
- Kimlik doğrulama türü: kimliği doğrulanmamış, kimliği doğrulanmış anonim kullanıcı veya bir belirli bir kullanıcı kimliği
- Kurallarınızın özellikle referans verdiği, dokümana özgü veriler ( kurallarınız, doğrulama işleminden önce belirli bir alanın yazmaya izin verme)
- Çalıştır'ı tıklayın ve kurallar penceresinin üzerindeki banner'da sonuçları arayın.