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

Благодаря правилам безопасности Cloud Firestore вы можете сосредоточиться на создании удобного пользовательского опыта без необходимости управлять инфраструктурой или писать код аутентификации и авторизации на стороне сервера.

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

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

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

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

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

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

Все правила безопасности Cloud Firestore состоят из операторов 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 или с помощью REST API управления Cloud Firestore.

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

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

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

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

Используйте интерфейс командной строки Firebase

Вы также можете развернуть правила с помощью 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 Firestore, а также функций хранения и управления файлами Cloud Storage. При совместном использовании эти продукты также обеспечивают усиление безопасности приложений, поскольку Cloud Firestore может фиксировать требования авторизации, используемые правилами безопасности Firebase для обоих продуктов. Дополнительную информацию см. в руководстве по облачному хранилищу .

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