Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

Cloud Firestore安全規則入門

借助Cloud Firestore安全規則,您可以專注於構建出色的用戶體驗,而無需管理基礎架構或編寫服務器端身份驗證和授權代碼。

安全規則以簡單但具有表現力的格式提供訪問控制和數據驗證。要構建可確保用戶數據安全的基於用戶和基於角色的訪問系統,您需要將Firebase身份驗證與Cloud Firestore安全規則結合使用。

安全規則版本2

自2019年5月起,Cloud Firestore安全規則的版本2現在可用。規則的版本2更改了遞歸通配符 {name=**}的行為。如果計劃使用收集組查詢,則必須使用版本2。您必須通過將rules_version = '2';選擇加入版本2 rules_version = '2';安全規則的第一行:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

寫作規則

所有Cloud Firestore安全規則均由match語句組成,該match語句標識數據庫中的文檔,並allow表達式控制對這些文檔的訪問:

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

在讀取或寫入任何數據之前,將根據您的安全規則評估來自Cloud Firestore移動/ 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提供了一個規則模擬器,可用於測試規則集。您可以從Firebase控制台的Cloud Firestore部分中的“規則”選項卡訪問模擬器。

規則模擬器使您可以模擬經過身份驗證和未經身份驗證的讀取,寫入和刪除。模擬經過身份驗證的請求時,可以構建和預覽來自各種提供程序的身份驗證令牌。模擬的請求針對您的編輯器中的規則集運行,而不是針對當前部署的規則集運行。

部署規則

您需要先部署安全規則,然後才能開始通過移動應用程序使用Cloud Firestore。您可以在Firebase控制台中或使用Firebase CLI部署規則。

Cloud Firestore安全規則的更新最多可能需要一分鐘才能影響新的查詢和偵聽器。但是,最多可能需要10分鐘才能完全傳播更改並影響任何活動的偵聽器。

使用Firebase控制台

要設置和部署第一組規則,請在Firebase控制台的Cloud Firestore部分中打開“ 規則”選項卡

在在線編輯器中編寫規則,然後點擊發布

使用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 your .rules file
firebase deploy --only firestore:rules

下一步