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

Благодаря 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 оценивается на соответствие вашим правилам безопасности перед чтением или записью каких-либо данных. Если правила запрещают доступ к любому из указанных путей к документу, весь запрос не будет выполнен.

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

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

// 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 Security Rules могут занять до минуты, чтобы повлиять на новые запросы и прослушиватели. Однако полное распространение изменений и их влияние на всех активных прослушивателей может занять до 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 Storage

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

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