Понимание правил безопасности Firebase для облачного хранилища

Традиционно безопасность была одной из самых сложных частей разработки приложений. В большинстве приложений разработчики должны создать и запустить сервер, который обрабатывает аутентификацию (кто пользователь) и авторизацию (что пользователь может делать). Аутентификацию и авторизацию сложно настроить, сложнее сделать правильно, и они критически важны для успеха вашего продукта.

Подобно тому, как Firebase Authentication упрощает аутентификацию пользователей, Firebase Security Rules for Cloud Storage упрощает авторизацию пользователей и проверку запросов. Cloud Storage Security Rules справляется со сложностью, позволяя указывать разрешения на основе пути. Всего в нескольких строках кода вы можете написать правила авторизации, которые ограничивают запросы Cloud Storage определенным пользователем или ограничивают размер загрузки.

В Firebase Realtime Database есть похожая функция, которая называется Firebase Realtime Database Security Rules

Аутентификация

Знание того, кто ваши пользователи, является важной частью создания приложения, и Firebase Authentication предоставляет простое в использовании, безопасное решение для аутентификации только на стороне клиента. Firebase Security Rules для Cloud Storage связаны с Firebase Authentication для обеспечения безопасности на уровне пользователя. Когда пользователь проходит аутентификацию с помощью Firebase Authentication , переменная request.auth в Cloud Storage Security Rules становится объектом, содержащим уникальный идентификатор пользователя ( request.auth.uid ) и всю другую информацию о пользователе в токене ( request.auth.token ). Когда пользователь не проходит аутентификацию, request.auth равен null . Это позволяет вам безопасно контролировать доступ к данным для каждого пользователя. Подробнее см. в разделе Аутентификация .

Авторизация

Идентификация вашего пользователя — это только часть безопасности. Как только вы узнаете, кто они, вам понадобится способ контролировать их доступ к файлам в Cloud Storage .

Cloud Storage позволяет вам указать правила авторизации для каждого файла и каждого пути, которые находятся на наших серверах и определяют доступ к файлам в вашем приложении. Например, Cloud Storage Security Rules по умолчанию требуют Firebase Authentication для выполнения любых операций read или write для всех файлов:

service firebase.storage {
  match /b/{bucket}/o {
    match /someFolder/{fileName} {
      allow read, write: if request.auth != null;
    }
  }
}

Вы можете редактировать эти правила, выбрав приложение Firebase в консоли Firebase и просмотрев вкладку Rules в разделе «Хранилище».

Проверка данных

Firebase Security Rules для Cloud Storage также можно использовать для проверки данных, включая проверку имени файла и пути, а также свойств метаданных файла, таких как contentType и size .

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

Следующие шаги

  • Начните планировать разработку правил для ваших контейнеров Cloud Storage .

  • Узнайте больше о защите ваших данных с помощью правил безопасности.