Pierwsze kroki z regułami zabezpieczeń Cloud Storage

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 .