Начало работы с правилами безопасности Cloud Firestore

С помощью Cloud Firestore Security Rules вы можете сосредоточиться на создании превосходного пользовательского опыта, не занимаясь управлением инфраструктурой или написанием кода аутентификации и авторизации на стороне сервера.

Правила безопасности обеспечивают контроль доступа и проверку данных в простом, но выразительном формате. Для создания систем доступа на основе пользователей и ролей, обеспечивающих безопасность данных пользователей, необходимо использовать Firebase Authentication с Cloud Firestore Security Rules .

Правила безопасности, версия 2

Начиная с мая 2019 года, доступна версия 2 правил безопасности Cloud Firestore . Версия 2 изменяет поведение рекурсивных подстановочных символов {name=**} . Необходимо использовать версию 2, если вы планируете использовать запросы к группам коллекций . Для включения версии 2 необходимо указать rules_version = '2'; в первой строке ваших правил безопасности:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

Правила написания

You will write and manage Cloud Firestore Security Rules tailored to the data model you create for the default database and each additional database in your project.

Все Cloud Firestore Security Rules состоят из операторов match , которые идентифицируют документы в вашей базе данных, и allow выражения, которые управляют доступом к этим документам:

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

Каждый запрос к базе данных из библиотеки мобильного/веб-клиента Cloud Firestore проверяется на соответствие вашим правилам безопасности перед чтением или записью каких-либо данных. Если правила запрещают доступ к любому из указанных путей к документам, весь запрос завершается ошибкой.

Ниже приведены примеры базовых наборов правил. Хотя эти правила допустимы, их не рекомендуется использовать в производственных условиях:

Требуется авторизация

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Отрицайте всё

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Разрешить всем

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

Путь {document=**} используемый в приведенных выше примерах, соответствует любому документу во всей базе данных. Перейдите к руководству по структурированию правил безопасности, чтобы узнать, как сопоставлять конкретные пути к данным и работать с иерархическими данными.

правила тестирования

Cloud Firestore предоставляет симулятор правил, который можно использовать для тестирования набора правил. Доступ к симулятору можно получить на вкладке «Правила» в разделе Cloud Firestore консоли Firebase.

Симулятор правил позволяет имитировать аутентифицированные и неаутентифицированные операции чтения, записи и удаления. При имитации аутентифицированного запроса вы можете создавать и просматривать токены аутентификации от различных поставщиков. Имитируемые запросы выполняются в соответствии с набором правил в вашем редакторе, а не с вашим текущим развернутым набором правил.

Развертывание правил

Прежде чем начать использовать Cloud Firestore из своего мобильного приложения, вам необходимо развернуть правила безопасности. Вы можете развернуть правила в консоли Firebase, с помощью Firebase CLI или с помощью REST API управления Cloud Firestore .

Обновление Cloud Firestore Security Rules может занять до минуты, прежде чем изменения затронут новые запросы и обработчики событий. Однако для полного распространения изменений и их влияния на активные обработчики событий может потребоваться до 10 минут.

Используйте консоль Firebase.

Чтобы настроить и развернуть первый набор правил для базы данных по умолчанию в вашем проекте, откройте вкладку « Правила» в разделе Cloud Firestore консоли Firebase.

Напишите свои правила в онлайн-редакторе, затем нажмите «Опубликовать» .

Используйте Firebase CLI

Вы также можете развертывать правила с помощью Firebase CLI . Использование CLI позволяет хранить правила под контролем версий вместе с кодом приложения и развертывать правила в рамках существующего процесса развертывания.

// Set up Firestore in your project directory, creates a .rules file
firebase init firestore

// Edit the generated .rules file to your desired security rules
// ...

// Deploy rules for all configured databases
firebase deploy --only firestore

Повысить безопасность Cloud Storage

Ваши приложения выиграют от мощных функций базы данных Cloud Firestore и функций хранения и управления файлами Cloud Storage . Совместное использование этих продуктов также повышает безопасность приложений, поскольку Cloud Firestore может собирать требования авторизации, используемые правилами безопасности Firebase для обоих продуктов. Более подробную информацию см. в руководстве по Cloud Storage .

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