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

Cloud Firestore Güvenlik Kuralları sayesinde, 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 ama 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 rol tabanlı erişim sistemleri oluşturmak için Cloud Firestore Güvenlik Kuralları ile Firebase Kimlik Doğrulaması'nı 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 sunulmuştur. Kuralların 2. sürümü, yinelemeli joker karakterlerin {name=**} davranışını değiştirir. Koleksiyon grubu sorgularını kullanmayı planlıyorsanız sürüm 2'yi kullanmanız gerekir. rules_version = '2'; öğesini güvenlik kurallarınızın ilk satırı yaparak 2. sürüme dahil olmanız 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 özelleştirilmiş Cloud Firestore Güvenlik Kuralları yazacak ve yöneteceksiniz.

Tüm Cloud Firestore Güvenlik Kuralları, veritabanınızdaki belgeleri tanımlayan match ifadeleri ve bu belgelere 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, 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 gruplarına ilişkin bazı örnekler verilmiştir. Bu kurallar geçerli olsa da üretim uygulamaları için önerilmez:

Yetkilendirme gerekiyor

// 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 nasıl çalışacağınızı öğrenmek için güvenlik kuralları yapılandırma kılavuzuna devam edin.

Kuralları test etme

Cloud Firestore, kural kümenizi test etmek için kullanabileceğiniz bir kural simülatörü sunar. Simülasyon aracına 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 etmenizi sağlar. Kimliği doğrulanmış bir isteği simüle ederken çeşitli sağlayıcıların kimlik doğrulama jetonlarını oluşturabilir ve önizleyebilirsiniz. Simüle edilen istekler, halihazırda dağıtılmış olan kural kümenize değil, düzenleyicinizdeki kural kümesine göre çalışır.

Kurallar dağıtılıyor

Mobil uygulamanızdan Cloud Firestore'u kullanmaya başlamadan önce güvenlik kurallarını dağıtmanız gerekir. Kuralları Firebase CLI'yı kullanarak veya Cloud Firestore yönetim REST API'si kullanarak Firebase konsolunda dağıtabilirsiniz.

Cloud Firestore Güvenlik Kuralları'nda yapılan güncellemelerin, yeni sorguları ve işleyicileri etkilemesi bir dakika kadar sürebilir. Bununla birlikte, değişikliklerin tam olarak yayılması ve etkin dinleyicileri etkilemesi 10 dakikayı bulabilir.

Firebase konsolunu kullanma

İlk kural grubunuzu oluşturup dağıtmak için projenizdeki varsayılan veritabanı için Firebase konsolunun Cloud Firestore bölümündeki Kurallar sekmesini açın.

Kurallarınızı online düzenleyiciye yazın, ardından Yayınla'yı tıklayın.

Firebase CLI'ı kullanma

Kuralları Firebase KSA'yı kullanarak da dağıtabilirsiniz. CLI'yı kullanmak, kurallarınızı uygulama kodunuzla sürüm denetiminde 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 güvenliğini artırın

Uygulamalarınız, Cloud Firestore'un güçlü veritabanı özelliklerinin yanı sıra Cloud Storage'ın 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 gereksinimlerini karşılayabildiğinden, bu ürünler birlikte kullanıldığında uygulama güvenliğini güçlendirir. Daha fazla bilgi için Cloud Storage kılavuzuna bakın.

Sonraki adımlar