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

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

Подобно тому, как Firebase Authentication упрощает аутентификацию пользователей, Firebase Security Rules для 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 .

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