有了 Cloud Firestore Security Rules,您就能專心打造優質的使用者體驗,不必管理基礎架構,也不必編寫伺服器端驗證和授權程式碼。
安全性規則可提供存取控管和資料驗證,格式簡單但功能強大。如要建立以使用者和角色為基礎的存取系統,確保使用者資料安全無虞,您必須搭配 Cloud Firestore Security Rules 使用 Firebase Authentication。
AI 輔助功能的 AI 提示
如需 AI 輔助,請將下列提示詞複製到 AI 程式碼代理 (例如 Android Studio 內建 Gemini、Antigravity、Claude Code、Codex 和 Cursor)。您可以自訂提示,並與代理程式互動。如需詳細安裝資訊,請參閱 Firebase Agent Skills。
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 年 5 月起,第 2 版Cloud Firestore安全防護規則現已推出。規則第 2 版會變更遞迴萬用字元 {name=**} 的行為。如果您打算使用產品素材資源集合群組查詢,就必須使用第 2 版。您必須在安全規則中加入 rules_version = '2'; 第一行,才能選擇採用第 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。
所需權限
如要在 Google Cloud 控制台中測試安全性規則,您需要下列 IAM 權限:
firebaserules.rulesets.test
如要在 Google Cloud 控制台中模擬資料庫要求,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「資料庫」頁面。
- 按一下要測試的資料庫 ID。
- 按一下導覽選單中的「Security」(安全性)。
- 按一下「模擬工具」分頁標籤。
- 在「Simulation type」(模擬類型) 下拉式清單中,選取作業類型:get、create、update 或 delete。
- 在「Location」(位置) 欄位中,輸入要測試的文件路徑 (例如
users/user_123)。 - (選用) 針對「建立」和「更新」要求,請按一下「建立文件」,設定模擬文件酬載。
- (選用) 如要模擬已驗證的請求,請開啟「驗證」,選取驗證提供者 (例如「google.com」或「Anonymous」),然後設定權杖酬載欄位。
- 按一下「執行」。
評估面板會顯示要求是否獲得允許或遭到拒絕、每個評估條件的詳細報表項目,以及程式碼編輯器中的行層級醒目顯示。
在 Firebase 控制台中測試規則
如要在 Firebase 控制台中測試規則,請依序前往「資料庫和儲存空間」>「Firestore」>「規則」分頁。按一下「規則遊樂場」開啟模擬器設定,選取模擬選項,然後按一下「執行」。
部署規則
如要透過行動應用程式使用 Cloud Firestore,請先部署安全性規則。您可以在 Firebase 控制台、Google Cloud 控制台,使用 Firebase CLI 或Cloud Firestore管理 REST API 部署規則。
更新 Cloud Firestore Security Rules 最多可能需要一分鐘,才會影響新的查詢和接聽者。不過,變更最多可能需要 10 分鐘才會全面生效,並影響所有有效監聽器。
使用 Firebase 控制台
如要設定及部署第一組規則,請前往 Firebase 控制台,依序點選專案中預設資料庫的「資料庫和儲存空間」>「Firestore」>「規則」分頁標籤。
如果為專案建立多個資料庫,可以為每個資料庫部署 Cloud Firestore Security Rules。在 Firebase 控制台中,使用資料庫選取器在預設資料庫和任何其他資料庫之間切換。
在線上編輯器中撰寫規則,然後按一下「發布」。
使用 Google Cloud 控制台
您可以在 Google Cloud 控制台中直接管理及部署 Cloud Firestore Security Rules。標準版和企業版方案都提供規則編輯器,可供原生模式的 Firestore 使用。
所需權限
如要在 Google Cloud 控制台中管理及部署安全規則,您需要下列 IAM 權限:
firebaserules.releases.createfirebaserules.releases.deletefirebaserules.releases.updatefirebaserules.rulesets.createfirebaserules.rulesets.deletefirebaserules.rulesets.listfirebaserules.rulesets.test(使用規則模擬工具時必須提供)
如要在 Google Cloud 控制台中部署規則,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「資料庫」頁面。
- 按一下要管理的資料庫 ID。
- 按一下導覽選單中的「Security」(安全性)。
- 按一下「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 rules for all configured databases
firebase deploy --only firestore
提升 Cloud Storage 的安全性
應用程式將可運用 Cloud Firestore 的強大資料庫功能,以及 Cloud Storage 的檔案儲存和管理功能。這些產品搭配使用時,也能強化應用程式安全性,因為 Cloud Firestore 可以擷取授權需求,供這兩項產品的 Firebase 安全性規則使用。詳情請參閱 Cloud Storage 指南。