С помощью Cloud Firestore Security Rules вы можете сосредоточиться на создании удобного пользовательского опыта без необходимости управления инфраструктурой или написания кода аутентификации и авторизации на стороне сервера.
Правила безопасности обеспечивают контроль доступа и проверку данных в простом, но выразительном формате. Чтобы создать системы доступа на основе пользователей и ролей, которые сохранят данные ваших пользователей в безопасности, вам необходимо использовать аутентификацию Firebase с 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 {
Правила написания
Вы напишете и будете управлять Cloud Firestore Security Rules адаптированными к модели данных, которую вы создаете для базы данных по умолчанию и каждой дополнительной базы данных в вашем проекте.
Все Cloud Firestore Security Rules состоят из операторов match
, которые идентифицируют документы в вашей базе данных, и allow
выражения, которые управляют доступом к этим документам:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Каждый запрос к базе данных из клиентской библиотеки Cloud Firestore Mobile/Web оценивается на предмет соответствия вашим правилам безопасности перед чтением или записью любых данных. Если правила запрещают доступ к любому из указанных путей документа, весь запрос завершается неудачей.
Ниже приведены некоторые примеры базовых наборов правил. Хотя эти правила действительны, они не рекомендуются для производственных приложений:
Требуется аутентификация
// 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 предоставляет симулятор правил, который вы можете использовать для тестирования своего набора правил. Вы можете получить доступ к симулятору из вкладки Rules в разделе 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 .
Следующие шаги
- Узнайте, как структурировать правила безопасности .
- Напишите пользовательские условия правил безопасности .
- Прочитайте справочник правил безопасности .