firebaseで本番環境にデプロイする時のfirestoreのルール設定

【2021】Reactでfirebaseへデプロイする際の手順を公開

react開発でfirebaseを使って本番環境にデプロイする必要があり、そのときのデプロイルール設定で困った。

firebaseで本番環境にデプロイする時のfirestoreのルール設定

開発環境ではテストモードだったからそこまで気にしていなかったが、いざデプロイとなるとセキュリティ面が気になり、firestoreのルール設定と向き合うことになった。

そのときの備忘録を残す。

firestoreのルール設定

テストモードではすべてのユーザーが読み込みと書き込み権限を持っているため、これをそのままデプロイすると悪意のあるクライアントから改ざんされる可能性がある。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

☝これがテスト環境。これだと誰でもアクセスできてしまう。

 

本番環境に対応するfirestoreのルール設定を変更してからデプロイするようにする。

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow public read access, but only content owners can write
    match /some_collection/{document} {
      allow read: if true
      allow create: if request.auth.uid == request.resource.data.author_uid;
      allow update, delete: if request.auth.uid == resource.data.author_uid;
    }
  }
}

たとえば、上の例だと誰でも読み取りは可能だが、作成と更新と削除は管理者のみに制限することができる。

他にもGoogleアカウントでログインしているユーザーだけが作成や更新ができるルール設定も可能だ。詳しい方法は参考文献のURLを参考にしてほしい。

 

だが、今回の私の掲示板アプリではログイン機能はいれないのでテスト環境のままデプロイしてみることにする。これで荒らしが発生するならばログイン機能の実装も視野に入れるつもりだ。

Shin

必要であればルールも変更していく

・参考文献

基本的なセキュリティ ルール | Firebase Documentation

Firebaseのリアルタイムデータベースで読み込みは誰でもOK、書き込みは事前に許可したGoogleアカウントのみに限定するルールの書き方 🔥 – みかづきブログ・カスタム

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です