Firebase Security Rules обеспечивают надежную, полностью настраиваемую защиту ваших данных в Cloud Firestore , Realtime Database и Cloud Storage . Вы можете легко начать работу с Rules следуя инструкциям в этом руководстве, обеспечивая безопасность своих данных и защищая приложение от злоумышленников.
Понимание языка Firebase Security Rules
Прежде чем приступить к написанию правил, стоит уделить время изучению языка Firebase Security Rules для используемых вами продуктов Firebase. Cloud Storage использует надмножество языка Common Expression Language (CEL), основанное на операторах match
и allow
, которые задают условие доступа по определённому пути.
Начните с изучения основного синтаксиса языка Firebase Security Rules .
Настроить Authentication
Если вы ещё этого не сделали, добавьте Firebase Authentication в своё приложение . Firebase Authentication поддерживает множество распространённых методов аутентификации и интегрируется с Firebase Security Rules , обеспечивая комплексные возможности проверки.
Вы можете настроить дополнительную пользовательскую информацию аутентификации для своего приложения.
Узнайте больше о Firebase Security Rules и Firebase Authentication .
Определите структуры данных и правил
Структура данных может повлиять на структуру и реализацию правил. Определяя структуры данных, учитывайте, как они могут повлиять на структуру Rules .
Например, в Cloud Storage вам может потребоваться включить поле, обозначающее определённую роль для каждого пользователя. Тогда ваши правила смогут считывать это поле и использовать его для предоставления доступа на основе ролей. Вы также можете создать базу данных Cloud Firestore , хранить критерии доступа в документах Cloud Firestore , а затем получать доступ к этим документам с помощью Cloud Storage Security Rules .
При определении архитектуры данных и правил учитывайте, как эти правила каскадируются или нет, в зависимости от вашего продукта. В Realtime Database правила работают сверху вниз, при этом более поверхностные правила переопределяют более глубокие. Если правило предоставляет разрешения на чтение или запись по определённому пути, оно также предоставляет доступ ко всем дочерним узлам, находящимся под ним. В отличие от этого, в Cloud Firestore и Cloud Storage правила применяются только на определённых уровнях иерархии данных, и вы пишете явные правила для управления доступом к различным уровням.
Доступ к вашим правилам
Чтобы просмотреть существующие Rules , используйте Firebase CLI или консоль Firebase . Убедитесь, что вы редактируете правила одним и тем же способом, чтобы избежать ошибочной перезаписи обновлений. Если вы не уверены, отражают ли ваши локально заданные правила последние обновления, в консоли Firebase всегда отображается последняя развёрнутая версия Firebase Security Rules .
Чтобы получить доступ к правилам из консоли Firebase , выберите проект, затем на левой панели навигации нажмите «Хранилище» . Перейдя в нужную базу данных или контейнер хранилища, нажмите Rules .
Чтобы получить доступ к правилам из Firebase CLI, перейдите к файлу правил, указанному в файле firebase.json .
Напишите основные правила
Разрабатывая приложение и изучая Rules , попробуйте реализовать Rules для решения нескольких основных задач , включая следующие:
- Только для владельца контента: ограничение доступа пользователя к контенту.
- Смешанный доступ: ограничить доступ пользователя к записи, но разрешить публичный доступ к чтению.
- Доступ на основе атрибутов: ограничение доступа для группы или типа пользователей.
Проверьте свои правила
Если вы настраиваете Firebase Security Rules в консоли Firebase , вы можете использовать Firebase Rules Playground для быстрой проверки поведения. Однако мы рекомендуем провести более тщательное тестирование с помощью Local Emulator Suite прежде чем внедрять изменения в рабочую среду.
Развертывание правил
Используйте консоль Firebase или интерфейс командной строки Firebase для развертывания правил в рабочей среде. Следуйте инструкциям в разделе Управление и развертывание Firebase Security Rules .