安全でないルールの回避

Firebaseセキュリティルール構成における一般的な脆弱性、独自のルールを確認してセキュリティを強化する方法、デプロイする前に変更内容をテストする手順についての説明です。

最初にFirebeseでプロジェクトを立ち上げた際に、ルールを初期設定のままにしておくと期限切れになってしまい、Realtime Databaseが使えなくなってしまったので、その対処法をまとめてみました。

Firebase セキュリティルールとは?

Firebase セキュリティルールとは、悪意のあるユーザからデータを保護するために利用されます。Firebaseコンソールで、全てのユーザに対してアクセスを拒否するロックモードと、全てのユーザに対してアクセス権を付与するテストモードを選択する事ができ、開発中はより自由な構成が必要となるようです。

ルールの例

Firebase Documentationに記載されていたルールをいくつかまとめておきます。


オープンアクセス

全てのユーザがアクセスできるようになります。そのため、アプリをデプロイした後もこのルールのままだと危険ですので、最終的にはルールを変更しましょう。


・非推奨事項:全てのユーザが読み込みと書き込みをできるようになります。


・解決策1:コンテンツ所有者のみアクセスできるようになります。


・解決策2:読み込みは全てのユーザに許可されますが、書き込みは所有者のみに許可されます。



認証されたユーザのアクセス

ログイン済みのユーザのみにアクセスを許可します。特定のユーザのみアクセスを制限することもできます。アプリをデプロイするときはこのルールを利用すると良いかもしれません。


・非推奨事項:ログインしている全てのユーザが読み込みと書き込みをできるようになります。


・解決策1:コンテンツ所有者のみアクセスできるようになります。


・解決策2:ログインしているユーザのうち、許可されたユーザのみがアクセスできます。


・解決策3:読み込みは全てのユーザに許可されますが、書き込みは所有者のみに許可されます。



クローズドアクセス

全てのユーザに対して、データへのアクセスを拒否します。開発中における一般的なアプローチなようですが、私はデータをページに出力できなかったので使ってません。