С помощью 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 {
Правила написания
Вам предстоит писать и управлять 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 проверяется на соответствие вашим правилам безопасности перед чтением или записью каких-либо данных. Если правила запрещают доступ к любому из указанных путей к документам, весь запрос завершается ошибкой.
Ниже приведены примеры базовых наборов правил. Хотя эти правила допустимы, их не рекомендуется использовать в производственных условиях:
Требуется авторизация
// 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 .
Следующие шаги
- Узнайте, как структурировать правила безопасности .
- Напишите собственные правила и условия безопасности .
- Ознакомьтесь со справочником правил безопасности .