Понимание правил безопасности 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 for 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 .

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