FlutterFlowででスマホアプリを開発する際にバックエンドとして使うFirebaseからこのようなメールが来ることがあります。

[Firebase] Cloud Firestore データベースへのクライアント アクセスが 2 日後に期限切れになります
お客様はテストモードで開発を開始しました。そのため、Cloud Firestore データベースがインターネットに完全に公開された状態になっています。お客様のアプリは攻撃に対して脆弱であるため、最初の 30 日間が過ぎるとリクエストが許可されなくなるように Firestore セキュリティ ルールが構成されました。
2 日後に、Firestore データベースに対するクライアント リクエストはすべて拒否されるようになります。この期限までに強力なセキュリティ ルールを記述して、データを適切に保護しながらアプリが機能できるようにしてください。分析は 1 日 1 回実行されます。ルールを変更してから 24 時間以内の場合、変更がまだ反映されていない可能性があります。
このメールが来た際の対処法を解説します。
- FlutterFlowでスマホアプリ開発をしている人
- Firebaseから同様のメールが来てどうすれば良いかわからなくて困っている人
結論
Firestoreのルールを設定しているコードから以下のコードを消しましょう。
match /{document=**} {
allow read, write: if
request.time < timestamp.date(2022, 10, 11);
}
なぜこのようなメールが来るのか?
メール文面のここに注目です。
お客様はテストモードで開発を開始しました。そのため、Cloud Firestore データベースがインターネットに完全に公開された状態になっています。
「テストモード」という言葉ができましたが、
モバイルアプリやウェブアプリのデータの保存、同期、照会がグローバル スケールで簡単にできるNoSQLデータベースであるFirestoreを構築する際、「テストモード」「本番モード」から選択することができます。
2つのモードの違いは以下のとおりです。
- テストモード:全てのユーザーにアクセスが許可されている
- 本番モード:全てのアクセスが制限されている(自分でルールを編集して許可するアクセスを設定する必要あり)
実際にFirebaseコンソールでFirestoreのルールを確認すると以下のコードがありました。
match /{document=**} {
allow read, write: if
request.time < timestamp.date(2022, 10, 11);
}
これは先ほど説明したとおりですが、全てのユーザーがデータ(document)にアクセスすることができることを意味しています。

じゃあどうすれば良いの?
記事の冒頭に書いた「結論」の通りですが、以下のコードを消して公開すればOKです。
match /{document=**} {
allow read, write: if
request.time < timestamp.date(2022, 10, 11);
}
今から書く内容はFlutterFlow開発でのちょっとした落とし穴なのですが、FlutterFlowの開発画面の
サイドメニュー > Firestore > Firestore Settings > Firestore Rules
からルールをチェックボックスで選択して設定、Firestoreに反映(FlutterFlowではDeployと書かれている)できますが、そうしても上記のコードが残ったまま、追加でルールが設定される形になります。
なので、FlutterFlow上からルールを設定してDeployする場合、まずはFirestoreのコンソールから上記コードを消す必要があります。
最後に
FlutterFlowでの開発にFirebase(Firestore)周りを触ることは避けられないですが、一定の知識や使い方を知る必要があるので要注意です。
以下、関連記事なのでご参考にしてください。



コメント