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

Cloud Firestore Security Rules ile 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 ancak etkileyici bir biçimde erişim denetimi ve veri doğrulaması 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 Security Rules ile Firebase Authentication'i kullanmanız gerekir.

Güvenlik kuralları 2. sürüm

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ü, yinelenen joker karakterlerin {name=**} davranışını değiştirir. Koleksiyon grubu sorgularını kullanmayı planlıyorsanız 2. sürümü 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 Security Rules yazar ve yönetirsiniz.

Tüm Cloud Firestore Security Rules, veritabanınızdaki dokümanları tanımlayan match ifadeleri 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 Firestore mobil/web istemci kitaplığından gelen her veritabanı isteği, herhangi bir veri okumadan veya yazmadan ö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ümeleriyle ilgili bazı örnekler 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;
    }
  }
}

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 dokümanlarla eşleşir. Belirli veri yollarını nasıl eşleyeceğinizi ve hiyerarşik verilerle nasıl çalışacağınızı öğrenmek için güvenlik kurallarını yapılandırma kılavuzuna gidin.

Test kuralları

Cloud Firestore, kural kümenizi test etmek için kullanabileceğiniz bir kural simülasyon aracı sağlar. Simülatöre Firebase konsolunun Cloud Firestore bölümündeki Kurallar sekmesinden erişebilirsiniz.

Kural simülasyon aracı, kimliği doğrulanmış ve kimliği doğrulanmamış okuma, yazma ve silme işlemlerini simüle etmenize olanak tanır. Kimlik doğrulaması yapılmış bir isteği simüle ettiğinizde çeşitli sağlayıcılardan kimlik doğrulama jetonları oluşturabilir ve önizleyebilirsiniz. Yapay zekayla taklit edilen istekler, şu anda dağıtılan kural kümenize değil, düzenleyicinizdeki kural kümesine göre çalıştırılır.

Kuralları dağıtma

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

Cloud Firestore Security Rules üzerinde yapılan güncellemelerin yeni sorguları ve dinleyicileri 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şturmak ve dağıtmak için projenizdeki varsayılan veritabanı için Firebase konsolunun Cloud Firestore bölümündeki Kurallar sekmesini açın.

Online düzenleyiciye kurallarınızı yazın ve Yayınla'yı tıklayın.

Firebase CLI'yi kullanma

Kuralları Firebase CLI'yi 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 için güvenliği artırma

Uygulamalarınız, Cloud Firestore'ün güçlü veritabanı özelliklerinden ve Cloud Storage'un 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ılavuzunu inceleyin.

Sonraki adımlar