Firebase Security Rules 可為 Cloud Firestore、Realtime Database 和 Cloud Storage 中的資料提供強大且可完全自訂的保護措施。您可以按照本指南中的步驟輕鬆開始使用 Rules,保護資料並防止惡意使用者入侵應用程式。
瞭解 Firebase Security Rules 語言
開始撰寫規則前,建議您花點時間查看所用 Firebase 產品的特定 Firebase Security Rules 語言。Cloud Storage 會利用一般運算語言 (CEL) 的超集,該語言會依賴 match
和 allow
陳述式,設定在定義路徑的存取條件。
首先學習 Firebase Security Rules 語言的核心語法。
設定「Authentication」
如果您尚未這麼做,請將 Firebase Authentication 新增至應用程式。Firebase Authentication 支援許多常見的驗證方法,並與 Firebase Security Rules 整合,提供全面的驗證功能。
您可以為應用程式設定額外的自訂驗證資訊。
進一步瞭解 Firebase Security Rules 和 Firebase Authentication。
定義資料和規則結構
資料的架構可能會影響您建立及實作規則的方式。定義資料結構時,請考量這些結構對 Rules 結構可能造成的影響。
例如,在 Cloud Storage 中,您可能會加入一個欄位,用來表示每位使用者的特定角色。這樣一來,規則就能讀取該欄位,並用於授予角色型存取權。您也可以建立 Cloud Firestore 資料庫,在 Cloud Firestore 文件中儲存存取條件,然後透過 Cloud Storage Security Rules 存取這些文件。
定義資料和規則架構時,請根據產品考量規則是否要依序套用。在 Realtime Database 中,規則會由上而下運作,較淺層的規則會覆寫較深層的規則。如果規則授予特定路徑的讀取或寫入權限,則也會授予該路徑下所有子節點的存取權。相較之下,Cloud Firestore 和 Cloud Storage 的規則只會套用至資料階層結構的特定層級,您必須撰寫明確的規則來控管不同層級的存取權。
存取規則
如要查看現有的 Rules,請使用 Firebase CLI 或 Firebase 主控台。請務必使用相同的方法來編輯規則,以免誤將更新內容覆寫。如果您不確定在本機定義的規則是否反映最新更新,Firebase 控制台一律會顯示最近部署的 Firebase Security Rules 版本。
如要透過 Firebase 控制台存取規則,請選取專案,然後在左側導覽面板中按一下「Storage」。找到正確的資料庫或儲存空間 bucket 後,請按一下 Rules。
如要透過 Firebase CLI 存取規則,請前往 firebase.json 檔案中註明的規則檔案。
編寫基本規則
在開發應用程式並瞭解 Rules 時,請嘗試導入 Rules 來處理幾個基本用途,包括:
- 僅限內容擁有者:限制使用者存取內容。
- 混合存取權:限制使用者寫入存取權,但允許公眾讀取存取權。
- 屬性存取權:限制特定群組或使用者類型的存取權。
測試規則
如果您在 Firebase 控制台設定 Firebase Security Rules,可以使用 Firebase 規則 Playground 快速驗證行為。不過,建議您在將變更部署至正式環境前,先對 Local Emulator Suite 進行更徹底的測試。
部署規則
請使用 Firebase 控制台或 Firebase CLI 將規則部署至實際環境。請按照「管理及部署 Firebase Security Rules」一文中的步驟操作。