W typowych aplikacjach deweloperzy muszą zbudować i utrzymywać wiele serwerów, które działają uwierzytelniania, autoryzacji i weryfikacji danych, a także to logika biznesowa. Aplikacje korzystające z usługi Cloud Storage for Firebase używają Firebase Authentication i Firebase Security Rules w środowisku Cloud Storage do obsługi technologii bezserwerowych uwierzytelnianie, autoryzacja i weryfikacja danych.
Korzystanie z Cloud Storage i Cloud Storage Security Rules oznacza, że możesz skupić się na które zapewniają wygodę użytkowników bez konieczności zarządzania infrastrukturą czy napisz złożony kod uwierzytelniania i autoryzacji po stronie serwera.
Omówienie
Cloud Storage Security Rules służą do określania, kto ma uprawnienia do odczytu i zapisu w aplikacji
plików przechowywanych w usłudze Cloud Storage oraz ich struktury i struktury
jakie metadane zawierają. Podstawowym typem jest reguła allow, która
zezwala na operacje read i write, jeśli opcjonalnie określony warunek jest
na spotkaniu. Oto kilka przykładów reguł:
// Rules can optionally specify a condition allow write: if <condition>;
Ścieżki plików reguł match reprezentujące
Cloud Storage odwołania. Reguły
może match jedną lub więcej ścieżek do pliku, a więcej niż jedna reguła może match pliku
ścieżki w danym request:
// Rules match specific paths match /images/profilePhoto.png { allow write: if <condition>; } match /images/croppedProfilePhoto.png { allow write: if <other_condition>; }
Kontekst oceny reguły jest też widoczny w interfejsach request oraz
Obiekty resource, które dostarczają informacje takie jak kontekst uwierzytelniania
(request.auth) a rozmiarem istniejącego obiektu (resource.size).
// Rules can specify conditions that consider the request context match /images/profilePhoto.png { allow write: if request.auth != null && request.resource.size < 5 * 1024 * 1024; }
Więcej informacji o funkcji Cloud Storage Security Rules znajdziesz w Bezpieczne pliki.
Przykładowe reguły
Cloud Storage Security Rules musi najpierw określić service (w naszym przypadku
firebase.storage) i zasobnik Cloud Storage
(za pomocą match /b/{bucket}/o), które reguły są
Reguły domyślne wymagają ustawienia Firebase Authentication, a oto są
kilka przykładów innych typowych reguł z odmienną kontrolą dostępu.
Domyślny
// Only authenticated users can read or write to the folder
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write: if request.auth != null;
}
}
}
Publiczny
// Anyone can read or write to the folder, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write;
}
}
}
Użytkownik
// Grants a user access to a node matching their user ID
service firebase.storage {
match /b/{bucket}/o {
// Files look like: "user/<UID>/file.txt"
match /user/{userId}/{fileName} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Prywatny
// Access to files through Cloud Storage for Firebase is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if false;
}
}
}
W trakcie programowania możesz zamiast domyślnych reguł publicznych które określają, czy Twoje pliki są publicznie dostępne do odczytu i zapisu. Jest to bardzo przydatne prototypowanie, ponieważ nie musisz konfigurować Firebase Authentication. Ponieważ jednak Cloud Storage współdzieli zasobnik z domyślnym zasobnikiem App Engine, ta reguła spowoduje też, że dane używane przez tę aplikację będą informacji publicznych.
Reguły dotyczące użytkowników umożliwiają przydzielenie każdemu z uwierzytelnionych użytkowników własnych danych miejsce na pliki. Możesz też całkowicie zablokować pliki, korzystając z funkcji reguł, ale pamiętaj, że użytkownicy nie będą w stanie nic odczytać ani zapisać do Cloud Storage zgodnie z tymi regułami. Użytkownicy uzyskujący dostęp do plików z aplikacja App Engine lub Interfejsy API (Google Cloud Storage) może nadal mieć dostęp.
Edytuj reguły
Cloud Storage umożliwia łatwy sposób edytowania tych elementów (Cloud Storage Security Rules)
na karcie Reguły w sekcji Miejsce na dane w Firebase konsoli.
Na karcie Reguły możesz szybko i łatwo wyświetlać oraz edytować obecne
reguł. Aby wdrożyć reguły, kliknij Opublikuj lub zapisz plik
(ctrl/cmd + s). Reguły zostaną natychmiast przesłane do Cloud Storage
serwerów, ale ich udostępnienie może potrwać do 5 minut.
Interfejs wiersza poleceń Firebase może też służyć do wdrażania reguł. Jeśli wybierzesz
Storage podczas uruchamiania firebase init, czyli pliku storage.rules z kopią
Zostaną utworzone reguły domyślne
w katalogu projektu. Możesz wdrożyć te reguły za pomocą
firebase deploy. Jeśli w projekcie masz wiele zasobników,
przy użyciu celów wdrożenia do wdrażania reguł w
z tego samego folderu projektu.
Więcej informacji o tym, jak działają zabezpieczenia oparte na plikach, znajdziesz w Zabezpieczanie plików lub informacje o użytkowniku w ramach funkcji zabezpieczeń opartych na bezpieczeństwie użytkowników .