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ć i zarządzać Cloud Firestore Security Rules w sposób dostosowany do modelu danych, który utworzysz dla domyślnej bazy danych i każdej dodatkowej bazy danych w projekcie.
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 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 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 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 i 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 używane razem zwiększają też 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ń.