Dzięki Cloud Firestore Security Rules możesz skupić się na tworzeniu doskonałej obsługi użytkownika bez konieczności zarządzania infrastrukturą ani pisania kodu uwierzytelniania i autoryzacji po stronie serwera.
Reguły zabezpieczeń zapewniają kontrolę dostępu i weryfikację danych w prostym, ale ekspresyjnym formacie. Aby tworzyć systemy dostępu oparte na użytkownikach i rolach, które chronią dane użytkowników, musisz używać uwierzytelniania Firebase z Cloud Firestore Security Rules.
Reguły zabezpieczeń w wersji 2
Od maja 2019 roku dostępna jest wersja 2 reguł zabezpieczeń Cloud Firestore. W wersji 2 reguł zmieniono działanie rekurencyjnych
symboli wieloznacznych {name=**}. Jeśli planujesz użyć zapytań do grup kolekcji, musisz użyć wersji 2. Aby przejść na
wersję 2, musisz dodać rules_version = '2'; jako pierwszy wiersz w regułach zabezpieczeń:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Pisanie reguł
Będziesz pisać reguły zabezpieczeń Cloud Firestore i zarządzać nimi, dostosowując je do modelu danych utworzonego dla domyślnej bazy danych i każdej dodatkowej bazy danych w projekcie.Cloud Firestore Security Rules
Wszystkie Cloud Firestore Security Rules składają się z instrukcji match, które identyfikują dokumenty w
bazie danych, oraz wyrażeń allow, które kontrolują dostęp do tych dokumentów:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Każde żądanie bazy danych z biblioteki klienta mobilnego lub internetowego Cloud Firestore jest sprawdzane pod kątem reguł zabezpieczeń przed odczytaniem lub zapisaniem danych. Jeśli reguły odmawiają dostępu do którejkolwiek ze ścieżek określonych dokumentów, całe żądanie kończy się niepowodzeniem.
Poniżej znajdziesz kilka przykładów podstawowych zestawów reguł. Te reguły są prawidłowe, ale nie są zalecane w przypadku aplikacji produkcyjnych:
Wymagane uwierzytelnianie
// 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 pasuje do dowolnego dokumentu w całej bazie danych. Aby dowiedzieć się, jak dopasowywać określone ścieżki danych i pracować z danymi hierarchicznymi, przeczytaj przewodnik dotyczący strukturyzowania reguł zabezpieczeń.
Testowanie reguł
Cloud Firestore udostępnia symulator reguł, za pomocą którego możesz testować swój zestaw reguł. Symulator jest dostępny w konsoli Firebase na karcie Bazy danych i pamięć > Firestore > Reguły.
Symulator reguł umożliwia symulowanie odczytów, zapisów i usuwania danych przez uwierzytelnionych i nieuwierzytelnionych użytkowników. Podczas symulowania uwierzytelnionego żądania możesz tworzyć i wyświetlać podgląd tokenów uwierzytelniania od różnych dostawców. Symulowane żądania są wykonywane w odniesieniu do zestawu reguł w edytorze, a nie do wdrożonego zestawu reguł.
Wdrażanie reguł
Zanim zaczniesz korzystać z Cloud Firestore w aplikacji mobilnej, musisz wdrożyć reguły zabezpieczeń. Reguły możesz wdrożyć w konsoli Firebase, konsoli Google Cloud, za pomocą wiersza poleceń Firebase lub interfejsu Cloud Firestore zarządzania REST API.
Zastosowanie zmian w Cloud Firestore Security Rules może potrwać do minuty w przypadku nowych zapytań i odbiorników. Jednak pełne rozpowszechnienie zmian i ich zastosowanie do aktywnych odbiorników może potrwać do 10 minut.
, reguły zdefiniowane w katalogu projektu zastępują wszystkie dotychczasowe reguły w konsoli Firebase. Jeśli więc zdecydujesz się zdefiniować lub edytować reguły zabezpieczeń za pomocą konsoli Firebase, pamiętaj, aby zaktualizować też reguły zdefiniowane w katalogu projektu.Korzystanie z konsoli Firebase
Aby skonfigurować i wdrożyć pierwszy zestaw reguł dla domyślnej bazy danych w projekcie, otwórz konsolę Firebase i kliknij Bazy danych i pamięć > Firestore > Reguły.
Jeśli utworzysz w projekcie kilka baz danych, możesz wdrożyć Cloud Firestore Security Rules dla każdej z nich. W konsoli Firebase użyj selektora bazy danych, aby przełączać się między domyślną bazą danych a dodatkowymi bazami danych.
Napisz reguły w edytorze online, a następnie kliknij Opublikuj.
Korzystanie z konsoli Google Cloud
Możesz zarządzać i wdrażać Cloud Firestore Security Rules bezpośrednio w konsoli Google Cloud. Edytor reguł jest dostępny w Firestore w trybie natywnym w wersjach Standard i Enterprise.
Wymagane uprawnienia
Aby zarządzać regułami zabezpieczeń i wdrażać je w konsoli Google Cloud, musisz mieć te uprawnienia IAM:
firebaserules.releases.createfirebaserules.releases.deletefirebaserules.releases.updatefirebaserules.rulesets.createfirebaserules.rulesets.deletefirebaserules.rulesets.listfirebaserules.rulesets.test(wymagane do korzystania z symulatora reguł)
Aby wdrożyć reguły w konsoli Google Cloud:
- W konsoli Google Cloud otwórz stronę Bazy danych.
- Kliknij identyfikator bazy danych, którą chcesz zarządzać.
- W menu nawigacyjnym kliknij Zabezpieczenia.
- Kliknij kartę Reguły Firestore.
- W edytorze reguł wyświetl reguły. Aby je edytować, kliknij Nowy zestaw reguł lub Sklonuj zestaw reguł, a następnie zmodyfikuj reguły.
- Aby wdrożyć zmiany, kliknij Opublikuj.
Możesz też wyświetlić poprzednie zestawy reguł na osi czasu oraz je sklonować lub przywrócić.
Korzystanie z wiersza poleceń Firebase
Reguły możesz też wdrożyć za pomocą wiersza poleceń Firebase CLI. Korzystanie z interfejsu wiersza poleceń umożliwia przechowywanie reguł pod kontrolą wersji razem z kodem aplikacji oraz wdrażanie reguł w ramach dotychczasowego 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
Ulepszanie bezpieczeństwa Cloud Storage
Twoje aplikacje będą korzystać z zaawansowanych funkcji bazy danych Cloud Firestore oraz funkcji przechowywania i zarządzania plikami Cloud Storage. Te usługi razem zapewniają też większe bezpieczeństwo aplikacji, ponieważ Cloud Firestore może rejestrować wymagania dotyczące autoryzacji, które mogą być używane przez reguły zabezpieczeń Firebase w obu usługach. Więcej informacji znajdziesz w przewodniku po Cloud Storage.
Dalsze kroki
- Dowiedz się, jak strukturyzować reguły zabezpieczeń.
- Napisz niestandardowe warunki reguł zabezpieczeń.
- Przeczytaj dokumentację reguł zabezpieczeń.