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

С помощью Cloud Firestore Security Rules вы можете сосредоточиться на создании отличного пользовательского интерфейса, не управляя инфраструктурой и не создавая код аутентификации и авторизации на стороне сервера.

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





Чтобы получить помощь от ИИ, скопируйте запрос ниже и вставьте его в свой ИИ-агент для программирования (например, Gemini в Android Studio, Antigravity, Claude Code, Codex или Cursor). Вы можете настроить запрос и повторить его с агентом. Подробные инструкции по установке вы найдете в статье Навыки агента Firebase.

Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me write, validate, and deploy Firebase Security Rules to protect my app's Firestore data.

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

В мае 2019 года была выпущена вторая версия правил безопасности Cloud Firestore. Во второй версии правил изменено поведение рекурсивных подстановочных знаков {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 есть симулятор правил, с помощью которого можно протестировать набор правил. Симулятор доступен как в консоли Google Cloud, так и в консоли Firebase.

Симулятор правил позволяет имитировать чтение, запись и удаление с аутентификацией и без нее. При моделировании аутентифицированного запроса вы можете создавать и просматривать токены аутентификации от различных поставщиков. Имитированные запросы выполняются в отношении набора правил в редакторе, а не развернутого набора правил.

Как протестировать правила в консоли Google Cloud

Симулятор правил в консоли Google Cloud доступен для Firestore в нативном режиме в версиях Standard и Enterprise.

Требуемые права доступа

Чтобы протестировать правила безопасности в консоли Google Cloud, вам потребуется следующее разрешение IAM:

  • firebaserules.rulesets.test

Чтобы симулировать запрос к базе данных в консоли Google Cloud:

  1. В консоли Google Cloud перейдите на страницу Databases (Базы данных).
  2. Нажмите на идентификатор базы данных, которую вы хотите протестировать.
  3. В меню навигации выберите Безопасность.
  4. Перейдите на вкладку Симулятор.
  5. В раскрывающемся списке Simulation type (Тип симуляции) выберите тип операции: get (получить), create (создать), update (обновить) или delete (удалить).
  6. В поле Местоположение введите путь к документу, который вы хотите протестировать (например, users/user_123).
  7. Для запросов create и update нажмите Build document (Создать документ), чтобы настроить полезную нагрузку макета документа.
  8. Чтобы смоделировать аутентифицированный запрос, включите параметр Authentication (Аутентификация), выберите поставщика аутентификации (например, google.com или Anonymous (Анонимный)) и настройте поля полезной нагрузки токена.
  9. Нажмите Выполнить.

На панели оценки отображается, был ли запрос разрешен или отклонен, подробные элементы отчета для каждого оцениваемого условия и выделенные строки в редакторе кода.

Как протестировать правила в консоли Firebase

Чтобы протестировать правила в консоли Firebase, перейдите в раздел Databases & Storage (Базы данных и хранилище) > Firestore > вкладка Rules (Правила). Нажмите Песочница правил, чтобы открыть настройки симулятора, выберите нужные параметры и нажмите Запустить.

Развертывание правил

Прежде чем вы сможете использовать Cloud Firestore в мобильном приложении, вам нужно развернуть правила безопасности. Правила можно развернуть в консоли Firebase, консоли Google Cloud, с помощью интерфейса командной строки Firebase или REST API управления Cloud Firestore.

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

Как использовать консоль Firebase

Чтобы настроить и развернуть первый набор правил для базы данных по умолчанию в проекте, в консоли Firebase перейдите в раздел Databases & Storage (Базы данных и хранилище) > Firestore > вкладка Rules (Правила).

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

Задайте правила в онлайн-редакторе и нажмите Опубликовать.

Как использовать консоль Google Cloud

Вы можете управлять Cloud Firestore Security Rules и развертывать его непосредственно в консоли Google Cloud. Редактор правил доступен для Firestore в нативном режиме в версиях Standard и Enterprise.

Требуемые права доступа

Чтобы управлять правилами безопасности и развертывать их в консоли Google Cloud, вам нужны следующие разрешения IAM:

  • firebaserules.releases.create
  • firebaserules.releases.delete
  • firebaserules.releases.update
  • firebaserules.rulesets.create
  • firebaserules.rulesets.delete
  • firebaserules.rulesets.list
  • firebaserules.rulesets.test (требуется для использования симулятора правил)

Чтобы развернуть правила в консоли Google Cloud:

  1. В консоли Google Cloud перейдите на страницу Databases (Базы данных).
  2. Нажмите на идентификатор базы данных, которой хотите управлять.
  3. В меню навигации выберите Безопасность.
  4. Перейдите на вкладку Firestore Rules (Правила Firestore).
  5. В редакторе правил посмотрите свои правила. Чтобы изменить набор правил, нажмите Новый набор правил или Клонировать набор правил, а затем измените правила.
  6. Нажмите Опубликовать, чтобы применить изменения.

Вы также можете посмотреть предыдущие наборы правил на временной шкале и клонировать или восстановить их.

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

Вы также можете развернуть правила с помощью интерфейса командной строки Firebase. Использование 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.

Дальнейшие действия