Pierwsze kroki z regułami zabezpieczeń Cloud Firestore

Dzięki regułom zabezpieczeń Cloud Firestore możesz zadbać o wygodę użytkowników bez konieczności zarządzania infrastrukturą czy pisania kodu uwierzytelniania i autoryzacji po stronie serwera.

Reguły zabezpieczeń zapewniają kontrolę dostępu i weryfikację danych w prostym, ale wyrazistym formacie. Aby utworzyć systemy dostępu oparte na użytkownikach i rolach, które chronią dane użytkowników, musisz użyć uwierzytelniania Firebase z regułami zabezpieczeń Cloud Firestore.

Reguły zabezpieczeń w wersji 2

Od maja 2019 r. jest dostępna wersja 2 reguł zabezpieczeń Cloud Firestore. Wersja 2 tych reguł zmienia działanie rekurencyjnych symboli wieloznacznych {name=**}. Jeśli chcesz korzystać z zapytań dotyczących grup kolekcji, musisz używać wersji 2. Musisz zaakceptować wersję 2, ustawiając rules_version = '2'; jako pierwszy wiersz w regułach zabezpieczeń:

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

Reguły pisania

Będziesz zapisywać reguły zabezpieczeń Cloud Firestore dostosowane do modelu danych tworzonego dla domyślnej bazy danych i każdej dodatkowej bazy danych w projekcie oraz nimi zarządzać.

Wszystkie reguły zabezpieczeń Cloud Firestore składają się z instrukcji match, które identyfikują dokumenty w bazie danych, oraz wyrażenia allow kontrolującego dostęp do tych dokumentów:

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

Przed odczytam lub zapisem danych każde żądanie bazy danych z biblioteki klienta mobilnego/internetowego Cloud Firestore jest oceniane pod kątem reguł zabezpieczeń. Jeśli reguły odmówią dostępu do dowolnej ze wskazanych ścieżek dokumentów, całe żądanie zakończy się niepowodzeniem.

Poniżej znajduje się kilka przykładów podstawowych zestawów reguł. Chociaż reguły te są prawidłowe, nie są zalecane w aplikacjach produkcyjnych:

Wymagane uwierzytelnienie

// 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;
    }
  }
}

Odrzucaj wszystko

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

Zezwalaj na wszystkie

// 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;
    }
  }
}

Ścieżka {document=**} użyta w powyższych przykładach odpowiada dowolnemu dokumentowi w całej bazie danych. Przejdź do przewodnika po tworzeniu struktury reguł zabezpieczeń, aby dowiedzieć się, jak dopasować określone ścieżki danych i pracować z danymi hierarchicznymi.

Reguły testowania

Cloud Firestore udostępnia symulator reguł, którego możesz używać do testowania zestawu reguł. Dostęp do symulatora znajdziesz na karcie Reguły w sekcji Cloud Firestore w konsoli Firebase.

Symulator reguł pozwala symulować uwierzytelnione i nieuwierzytelnione odczyty, zapisy i usunięcia. Gdy symulujesz uwierzytelnione żądanie, możesz tworzyć tokeny uwierzytelniania od różnych dostawców i wyświetlać ich podgląd. Symulowane żądania są kierowane do zestawu reguł w edytorze, a nie do aktualnie wdrożonego zestawu reguł.

Wdrażam reguły

Zanim zaczniesz korzystać z Cloud Firestore w aplikacji mobilnej, musisz wdrożyć reguły zabezpieczeń. Reguły możesz wdrożyć w konsoli Firebase, za pomocą interfejsu wiersza poleceń Firebase lub interfejsu API typu REST zarządzania Cloud Firestore.

Aktualizacje reguł zabezpieczeń Cloud Firestore mogą mieć wpływ na nowe zapytania i detektory. Może to potrwać nawet minutę. Jednak ich pełne rozpowszechnienie i wpływ na wszystkich aktywnych detektorów może potrwać nawet 10 minut.

Korzystanie z konsoli Firebase

Aby skonfigurować i wdrożyć pierwszy zestaw reguł, w przypadku domyślnej bazy danych w projekcie otwórz kartę Reguły w sekcji Cloud Firestore w konsoli Firebase.

Napisz reguły w edytorze online i kliknij Opublikuj.

Używanie interfejsu wiersza poleceń Firebase

Możesz też wdrażać reguły za pomocą interfejsu wiersza poleceń Firebase. Użycie interfejsu wiersza poleceń pozwala kontrolować wersję reguł za pomocą kodu aplikacji i wdrażać reguły w ramach obecnego procesu wdrażania.

// 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

Zwiększenie bezpieczeństwa Cloud Storage

Twoje aplikacje będą korzystać z niezawodnych funkcji bazy danych Cloud Firestore oraz funkcji przechowywania plików i zarządzania nimi w Cloud Storage. Stosowane razem usługi te zwiększają również bezpieczeństwo aplikacji, ponieważ Cloud Firestore może przechwytywać wymagania autoryzacji używane przez reguły zabezpieczeń Firebase w obu usługach. Więcej informacji znajdziesz w przewodniku po Cloud Storage.

Dalsze kroki