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 r. 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 włączyć
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 wskazanych ścieżek 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ć konkretne ścieżki danych i pracować z danymi hierarchicznymi, przeczytaj przewodnik dotyczący struktury reguł zabezpieczeń.
Testowanie reguł
Cloud Firestore udostępnia symulator reguł, którego możesz użyć do testowania swojego zestawu reguł. Symulator jest dostępny na karcie Reguły w sekcji Cloud Firestore w konsoli Firebase.
Symulator reguł umożliwia symulowanie odczytów, zapisów i usuwania danych z uwierzytelnieniem i bez niego. 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 aktualnie 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, za pomocą wiersza poleceń Firebase lub za pomocą 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 kartę Reguły w sekcji Cloud Firestore w konsoli Firebase.
Napisz reguły w edytorze online, a następnie kliknij Opublikuj.
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 plików i zarządzania nimi w 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 tworzyć strukturę reguł zabezpieczeń.
- Napisz niestandardowe warunki reguł zabezpieczeń.
- Przeczytaj dokumentację reguł zabezpieczeń.