firestoreのセキュリティルールメモ


firestoreの制限

セキュリティ目的などでfirestoreの権限を制限する事ができる。

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

基本的にはmatchでどのドキュメントかを指定して、allowでなにを許可するか、ifでその許可する際の条件を指定する。

複数の条件がtrueのとき

複数条件文にヒットした際はtrueになる。

ルール

  • read
    • get・・・一つのドキュメントを読める
    • list・・・複数のドキュメントをqueryとcollectionを使って読み込める
  • write
    • create
    • update
    • delete

投稿者のみに編集権限をもたせたい

service cloud.firestore {
  match /databases/{database}/documents {
    match /posts/{post} {
      allow delete: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true
    }
  }
}