Firebase のセキュリティルールは「人・場所・できる事」

記事
IT・テクノロジー

Firebase のセキュリティルールは「人・場所・できる事」

Firebase のセキュリティルールは一見複雑そうに見えますが、基本は「人」、「場所」、「出来る事」をまとめる事です。この記事では、Firebase のセキュリティルールの基本を紹介します!

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

Firebase を Web ブラウザ(フロントエンド)から利用する際には、Firebase のセキュリティルールを設定する事が必須になります。ところで、このセキュリティルールとは何かご存知ですか?まずは、そこから紹介します。 セキュリティルールは一言で言えば、「誰がどこで何をしていいかを決める」事です。

従って、セキュリティルールを設定する上でのポイントは:

* 誰(人)
* どこ(場所)
* 出来ること(何をするか)
この三つを決めれば良い事になります。

人を特定する

誰がどこですか何をして良いかを決めるためには、最初に必要な事は「人を特定」する必要があります。 Web のアプリやサービスで人を特定する方法は、基本的には「ユーザ名」で区別しています。特定のユーザー名のパスワードを知っていればその人と見做すという仕組みです。これを、ユーザー認証機能とかログイン(サインイン)機能と呼んでいます。

Firebase の場合は、大きく三つの方法があります。

Firebase コンソールにアクセスできる人(管理者)とそれ以外の人
ログインしている人としていない人
ユーザー認証をして個別のユーザーとして区別
Firebase のコンソールで必要な操作が間に合うのであれば、特にユーザー認証(ログイン)の機能を作る必要はありませんが、実際には Firebase のコンソールで Web アプリやサービスの管理を行うのは余り現実的ではない場合が多くなります。従って、殆どの場合は、ユーザー認証(ログイン)機能を実装して、利用者を区別する必要があります。

区別は、Web サイトや Web アプリの管理者とそれ以外に利用者という二つの分類で良い場合には、管理者だけがユーザー認証(ログイン)すれば、目的は達成できます。しかし、更に細かい分類で、区別する必要がある場合には、利用者毎にユーザー認証(ログイン)を行なって区別する必要があります。

面倒な場所の特定

Firebase のセキュリティルールで言う場所は、アクセスする場所、つまり何にアクセスするかという事になります。 Firebase のストレージの場合は、「フォルダ」や「ファイル」が対象になります。Firebase のデータベースである Cloud Firestore などでは、データベースのデータが対象になります。具体的には、「コレクション」や「ドキュメント」と言う事になります。

この場所の特定が、Firebase のセキュリティルールでは一番面倒な部分です。例えば、「フォルダ内のファイル全部」と言うような指定ならばそれほど面倒ではありませんが、同じフォルダ内のファイルでも、利用者(ユーザー)毎にアクセスの許可の仕方が違う場合には、少し複雑な指定の仕方が必要になります。

データベースも同様で、あるコレクションの中のドキュメント全部などの場合はシンプルですが、ドキュメント毎にアクセスできる利用者(ユーザ)が違う場合には複雑な指定が必要です。

具体的な例としては、例えば Web アプリの利用者のコレクションを Firebase のデータベースに作るとします。このデータを保存するコレクションで「users」と言うコレクションを作成して、その下に各利用者毎にドキュメントを作成して管理する場合には、本人以外のドキュメントにはアクセスの許可をしたくない場合があります。例としては、利用者の情報にクレジットカードの番号を登録するような場合になります。クレジットカードの番号は本人以外には見せたくない情報になりますので、一つ一つのドキュメント毎にアクセスできる人が違う事になります。

出来る事はシンプル

場所は面倒ですが、出来る事はシンプルです。基本は「読み込み」と「書き込み」になります。 書き込みの場合は、さらに細かく分ける事ができて「新規の書き込み」、「更新(存在するデータの変更)」と「削除」j になります。

例えば先日から紹介しているブログサービスでは、「書き込み」つまり、ブログの投稿や、更新、削除を行うのは、ブログサービスの運営者だけで、一般の利用者は読み込みができれば良いことになります。

ブログサービスの場合に必要なことをまとめると:

* 管理者:ログインしている利用者
* 一般利用者:ログインしていない利用者
* 場所:全ての場所
* 出来ることは、管理者はブログの投稿(新規作成)、更新、削除と読み込みが可能で、一般利用者は読み込みだけ
と言う形になります。

まとめ
Firebase のセキュリティルールは、一見複雑に見えますが、実は以外にシンプルです。 「誰がどこで何が出来るか」を決めれば良いそれだです。従ってポイントは「人」・「場所」・「出来る事」です。

あとは、それぞれをどの様に特定するかを考えれば良いだけです。

人の特定は、基本的にユーザー認証(ログイン)を利用して区別して、出来る事は「読み込み」か「書き込み(新規・更新・削除)」だけです。最後に、場所を特定すればルールは完成です。場所の特定は、ブログサービスの場合は、投稿か閲覧なのでシンプルですが、ルールの中身によっては場所の指定は少し複雑になります。

今回は、Firebase のセキュリティルールのコンセプトを紹介しましたが、次回はブログサービスのセキュリティルールの例を紹介します。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す