Dzięki Cloud Firestore Security Rules możesz skupić się na tworzeniu wrażeń użytkowników 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 jednocześnie wyrazistym 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ń (wersja 2)
Od maja 2019 roku dostępna jest wersja 2 reguł zabezpieczeń Cloud Firestore. Wersja 2 reguł zmienia działanie rekursywnych zaimków {name=**}
. Jeśli planujesz używać zapytań dotyczących grup kolekcji, musisz użyć wersji 2. Musisz wyrazić zgodę na wersję 2, ustawiając rules_version = '2';
jako pierwszy wiersz w regułach bezpieczeństwa:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Pisanie reguł
Napiszesz i będziesz zarządzać Cloud Firestore Security Rules dostosowanym do modelu danych utworzonego dla bazy danych domyślnej i każdej dodatkowej bazy danych w Twoim projekcie.
Wszystkie Cloud Firestore Security Rules składają się z instrukcji match
, które identyfikują dokumenty w Twojej 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 zgodności z Twoimi regułami zabezpieczeń, zanim zostaną odczytane lub zapisane jakiekolwiek dane. Jeśli reguły odmawiają dostępu do ścieżki dowolnego z wymienionych dokumentów, cała prośba kończy się niepowodzeniem.
Poniżej znajdziesz kilka przykładów podstawowych zestawów reguł. Chociaż te reguły są prawidłowe, nie zalecamy ich stosowania 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 przykładach powyżej pasuje do dowolnego dokumentu w całej bazie danych. Aby dowiedzieć się, jak dopasowywać konkretne ścieżki danych i pracować z danymi hierarchicznymi, zapoznaj się z instrukcjami tworzenia reguł zabezpieczeń.
Reguły testowania
Cloud Firestore udostępnia symulator reguł, którego możesz użyć do przetestowania zbioru reguł. Dostęp do symulatora uzyskasz na karcie Reguły w sekcji Cloud Firestore konsoli Firebase.
Symulacja reguł umożliwia symulowanie odczytów, zapisów i usunięcia uwierzytelnionych i nieuwierzytelnionych. Podczas symulowania uwierzytelnionego żądania możesz tworzyć i wyświetlać podgląd tokenów uwierzytelniania od różnych dostawców. Symulowane żądania są wykonywane na podstawie zestawu reguł w Twoim edytorze, a nie na podstawie aktualnie wdrożonego zestawu reguł.
Wdrażanie reguł
Zanim zaczniesz korzystać z Cloud Firestore w aplikacji mobilnej, musisz wdrożyć reguły bezpieczeństwa. Reguły możesz wdrażać w konsoli Firebase, za pomocą interfejsu wiersza poleceń Firebase lub za pomocą interfejsu REST API do zarządzania Cloud Firestore.
Zmiany w Cloud Firestore Security Rules mogą wpływać na nowe zapytania i słuchaczy przez maksymalnie minutę. Pełne rozpowszechnienie zmian i ich wpływ na aktywnych słuchaczy mogą jednak potrwać do 10 minut.
Korzystanie z konsoli Firebase
Aby skonfigurować i wdrażać pierwszy zestaw reguł w przypadku domyślnej bazy danych w projekcie, otwórz w konsoli Firebase sekcję Cloud Firestore i kartę Reguły.
Wpisz reguły w edytorze internetowym, a potem kliknij Opublikuj.
Korzystanie z wiersza poleceń Firebase
Reguły możesz też wdrażać za pomocą interfejsu wiersza poleceń Firebase. Za pomocą interfejsu wiersza poleceń możesz kontrolować wersje reguł razem z kodem aplikacji i wdrażać reguły w ramach istniejącego 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ększanie bezpieczeństwa w przypadku Cloud Storage
Twoje aplikacje będą korzystać z solidnych funkcji bazy danych Cloud Firestore oraz funkcji przechowywania plików i zarządzania nimi w usłudze Cloud Storage. Korzystanie z tych usług wzmacnia 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 Cloud Storage.
Dalsze kroki
- Dowiedz się, jak układać reguły bezpieczeństwa.
- Napisać warunki reguł zabezpieczeń niestandardowych.
- Przeczytaj dokumentację reguł zabezpieczeń.