Cloud Firestore Güvenlik Kurallarını kullanmaya başlayın

Cloud Firestore Güvenlik Kuralları ile altyapıyı yönetmeye veya sunucu tarafı kimlik doğrulama ve yetkilendirme kodu yazmaya gerek kalmadan harika bir kullanıcı deneyimi oluşturmaya odaklanabilirsiniz.

Güvenlik kuralları, basit ama etkileyici bir biçimde erişim kontrolü ve veri doğrulama 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 Firebase Authentication'ı Cloud Firestore Güvenlik Kuralları ile birlikte 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ü artık kullanıma sunuldu. Kuralların 2. Versiyonu, yinelenen {name=**} joker karakterlerinin davranışını değiştirir. Koleksiyon grubu sorgularını kullanmayı planlıyorsanız sürüm 2'yi kullanmanız gerekir. rules_version = '2'; yaparak sürüm 2'ye dahil olmanız gerekir. güvenlik kurallarınızdaki ilk satır:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

Kural yazma

Projenizdeki varsayılan veritabanı ve her ek veritabanı için oluşturduğunuz veri modeline göre uyarlanmış Cloud Firestore Güvenlik Kurallarını yazacak ve yöneteceksiniz.

Tüm Cloud Firestore Güvenlik Kuralları, veritabanınızdaki belgeleri tanımlayan ve bu belgelere erişimi kontrol eden ifadelere allow match 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 okunmadan veya yazılmadan önce güvenlik kurallarınıza göre değerlendirilir. Kurallar belirtilen belge yollarından herhangi birine erişimi reddederse isteğin tamamı başarısız olur.

Aşağıda temel kural kümelerinin bazı örnekleri 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;
    }
  }
}

Hepsini inkar etmek

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Hepsine 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 herhangi bir belgeyle eşleşir. Belirli veri yollarının nasıl eşleştirileceğini ve hiyerarşik verilerle nasıl çalışılacağını öğrenmek için güvenlik kurallarını yapılandırma kılavuzuna devam edin.

Test kuralları

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ü, kimlik doğrulamalı ve kimlik doğrulamasız 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 gelen kimlik doğrulama belirteçlerini oluşturabilir ve önizleyebilirsiniz. Simüle edilmiş istekler, şu anda dağıtılmış olan kural kümenize göre değil, düzenleyicinizdeki kural kümesine göre çalıştırılır.

Kuralları dağıtma

Cloud Firestore'u mobil uygulamanızdan kullanmaya başlamadan önce güvenlik kurallarını dağıtmanız gerekecektir. Firebase CLI'yi kullanarak veya Cloud Firestore yönetimi REST API'sini kullanarak kuralları Firebase konsolunda dağıtabilirsiniz.

Cloud Firestore Güvenlik Kurallarındaki güncellemelerin yeni sorguları ve dinleyicileri etkilemesi bir dakika kadar sürebilir. Ancak değişikliklerin tam olarak yayılması ve etkin dinleyicilerin etkilenmesi 10 dakika kadar sürebilir.

Firebase konsolunu kullanma

Projenizdeki varsayılan veritabanı için ilk kural grubunuzu ayarlamak ve dağıtmak için Firebase konsolunun Cloud Firestore bölümünde Kurallar sekmesini açın.

Kurallarınızı çevrimiçi düzenleyiciye yazın ve ardından Yayınla'yı tıklayın.

Firebase CLI'yi kullanın

Firebase CLI'yi kullanarak da kuralları dağıtabilirsiniz. CLI'yi kullanmak, uygulama kodunuzla kurallarınızı sürüm kontrolü altında tutmanıza ve mevcut dağıtım sürecinizin bir parçası olarak kuralları 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ırın

Uygulamalarınız Cloud Firestore'un güçlü veritabanı özelliklerinden ve Cloud Storage'ın dosya depolama ve yönetim özelliklerinden yararlanacaktır. Cloud Firestore, her iki ürün için de Firebase Güvenlik Kuralları tarafından kullanılabilen yetkilendirme gereksinimlerini karşılayabildiğinden, bu ürünler birlikte kullanıldığında güçlendirilmiş uygulama güvenliği de sağlar. Daha fazla bilgi için Bulut Depolama kılavuzuna bakın.

Sonraki adımlar