Firebase Security Rules zapewniają solidną, w pełni konfigurowalną ochronę danych w Cloud Firestore, Realtime Database, i Cloud Storage. Możesz łatwo zacząć korzystać z Security Rules wykonując czynności opisane w tym przewodniku. Dzięki temu zabezpieczysz swoje dane i ochronisz aplikację przed złośliwymi użytkownikami.
Poznaj język Firebase Security Rules
Zanim zaczniesz pisać reguły, warto poświęcić trochę czasu na zapoznanie się z
konkretnym językiem Firebase Security Rules w przypadku używanych przez Ciebie usług Firebase.
Cloud Storage korzysta z nadzbioru
języka Common Expression Language (CEL), który opiera się na match i allow
instrukcjach określających warunek dostępu do zdefiniowanej ścieżki.
Zacznij od poznania podstawowej składni języka Firebase Security Rules.
Skonfiguruj Authentication
Jeśli jeszcze tego nie zrobisz, dodaj Firebase Authentication do aplikacji. Firebase Authentication obsługuje wiele popularnych metod uwierzytelniania i integruje się z Firebase Security Rules, aby zapewnić kompleksowe możliwości weryfikacji.
Możesz skonfigurować dodatkowe, niestandardowe informacje o uwierzytelnianiu w aplikacji.
Więcej informacji o Firebase Security Rules i Firebase Authentication.
Zdefiniuj struktury danych i reguł
Sposób strukturyzacji danych może wpływać na sposób strukturyzacji i implementacji reguł. Podczas definiowania struktur danych zastanów się, jaki wpływ mogą one mieć na strukturę Security Rules.
Na przykład w Cloud Storage możesz uwzględnić pole, które będzie oznaczać konkretną rolę każdego użytkownika. Następnie reguły mogą odczytywać to pole i używać go do przyznawania dostępu na podstawie roli. Możesz też utworzyć bazę danych Cloud Firestore, przechowywać kryteria dostępu w dokumentach Cloud Firestore, a następnie uzyskiwać dostęp do tych dokumentów z Cloud Storage Security Rules.
Podczas definiowania architektury danych i reguł pamiętaj o tym, jak reguły są kaskadowe lub niekaskadowe w zależności od usługi. W przypadku Realtime Database, reguły działają od góry do dołu, a reguły na wyższym poziomie zastępują reguły na niższym poziomie. Jeśli reguła przyznaje uprawnienia do odczytu lub zapisu w określonej ścieżce, przyznaje też dostęp do wszystkich węzłów podrzędnych. Natomiast w przypadku Cloud Firestore i Cloud Storage reguły mają zastosowanie tylko na określonych poziomach hierarchii danych, a dostęp do różnych poziomów kontrolujesz za pomocą jawnych reguł.
Dostęp do reguł
Aby wyświetlić dotychczasowe Security Rules, użyj interfejsu wiersza poleceń Firebase lub konsoli Firebase. Aby uniknąć przypadkowego zastąpienia aktualizacji, edytuj reguły zawsze tą samą metodą. Jeśli nie masz pewności czy zdefiniowane lokalnie reguły odzwierciedlają najnowsze aktualizacje, w konsoli Firebase zawsze wyświetla się najnowsza wdrożona wersja Firebase Security Rules.
Aby uzyskać dostęp do reguł w Firebase konsoli, wybierz swój projekt, a następnie w panelu użytkownika po lewej stronie kliknij Storage. Gdy znajdziesz się w odpowiedniej bazie danych lub zasobniku, kliknij Security Rules.
Aby uzyskać dostęp do reguł w interfejsie wiersza poleceń Firebase, otwórz plik reguł wymieniony w pliku firebase.json.
Tworzenie podstawowych reguł
Podczas tworzenia aplikacji i poznawania Security Rules spróbuj wdrożyć Security Rules, aby rozwiązać kilka podstawowych przypadków użycia, w tym:
- Tylko właściciel treści: ogranicz dostęp do treści według użytkownika.
- Dostęp mieszany: ogranicz dostęp do zapisu według użytkownika, ale zezwól na publiczny dostęp do odczytu.
- Dostęp na podstawie atrybutów: ogranicz dostęp do grupy lub typu użytkownika.
Testowanie reguł
Jeśli konfigurujesz Firebase Security Rules w konsoli Firebase, możesz użyć piaskownicy reguł Firebase, aby szybko sprawdzić ich działanie. Zanim jednak wdrożysz zmiany w środowisku produkcyjnym, zalecamy dokładniejsze testowanie za pomocą Local Emulator Suite.
Wdrażanie reguł
Aby wdrożyć reguły w środowisku produkcyjnym, użyj konsoli Firebase lub interfejsu wiersza poleceń Firebase. Postępuj zgodnie z instrukcjami opisanymi w Zarządzanie regułami bezpieczeństwa Firebase i ich wdrażanieFirebase Security Rules.