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, dodaj 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 z określonych ś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ć 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 w konsoli Firebase na karcie Bazy danych i przechowywanie danych > Firestore > Reguły.
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 interfejsu REST API zarządzania Cloud Firestore.
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ń w 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 swoim projekcie, otwórz konsolę Firebase i kliknij kartę Bazy danych i przechowywanie danych > Firestore > Reguły.
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 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
- Jak tworzyć strukturę reguł zabezpieczeń
- Pisanie niestandardowych warunków reguł zabezpieczeń
- Informacje o regułach zabezpieczeń