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

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