С помощью правил безопасности 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 состоят из операторов 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.
Обновление правил безопасности Cloud Firestore может занять до минуты, прежде чем оно повлияет на новые запросы и прослушиватели. Однако полное распространение изменений и влияние на всех активных прослушивателей может занять до 10 минут.
Используйте консоль Firebase
Чтобы настроить и развернуть свой первый набор правил, откройте вкладку Rules в разделе Cloud Firestore консоли Firebase.
Напишите свои правила в онлайн-редакторе, затем нажмите «Опубликовать» .
Используйте интерфейс командной строки Firebase
Вы также можете развернуть правила с помощью интерфейса командной строки Firebase . Использование интерфейса командной строки позволяет вам держать ваши правила под контролем версий кода вашего приложения и развертывать правила как часть существующего процесса развертывания.
// 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 your .rules file
firebase deploy --only firestore:rules
Повышение безопасности облачного хранилища
Ваши приложения выиграют от надежных функций базы данных Cloud Firestore и функций хранения и управления файлами Cloud Storage. При совместном использовании эти продукты также обеспечивают усиление безопасности приложений, поскольку Cloud Firestore может фиксировать требования авторизации, используемые правилами безопасности Firebase для обоих продуктов. Дополнительные сведения см. в руководстве по облачному хранилищу .
Следующие шаги
- Узнайте, как структурировать правила безопасности .
- Напишите пользовательские условия правил безопасности .
- Прочитайте справочник правил безопасности .