スマホアプリのセキュリティルール

記事
IT・テクノロジー

スマホアプリのセキュリティルール

Firebase は Web 系のアプリだけではなく、スマホのアプリでも活用できます。いずれにしても、サーバー側以外から Firebase のデータベースやストレージを利用する場合には、セキュリティルールの設定が必要です。この記事ではその違いについてまとめてみました。


Web ブラウザからのアクセス
Web サイトを利用してアプリやサービスを提供する場合、基本的にアプリやサービスのプログラムは Web ブラウザ上で動作することになります。Web 開発者の方はご存知の方も多いと思いますが、Web アプリやサービスで利用するファイルは全て簡単に見ることができます。Web ページの基本となる、HTML や CSS のファイル、プログラムの Javascript のファイル、画像情報などは、大抵の Web ブラウザの拡張機能や、簡単なコマンドで閲覧可能です。

Web ブラウザやクライアント(スマホなどのアプリ)から Firebase の機能を利用するためには、API キーなどの Firebase のプロジェクトに割り当てられた情報が必要になります。これらの設定情報も、Web ブラウザなどで閲覧可能な情報に含まれているため、調べようと思えば調べることが可能です。これらの情報が比較的簡単に見つけることができる関係上、不正アクセスを行うためのハードルが下がってしまうのが問題です。

スマホのアプリの場合は?
Web ブラウザと違って、スマホのアプリは、スマホ上で動作するプログラムです。iOS のアプリの場合は、Swift か Objective ー C、アンドロイドのアプリの場合は Java を利用するケースが多いかと思います。React native などを使えばどちらのプラットフォームのアプリも React ベースで作成できます。

スマホの場合は、Web ブラウザとは仕組みが違っていて、プログラムのソースコードを見るのは簡単ではありません。さらに、PC などとは違い、特殊なケースを除けば一般に配布するアプリの場合は App ストア(Google Play)などを経由して配布して、直接プログラムのファイルを扱えないようになっています。Web ブラウザで動作するアプリに比べると、Firebase にアクセスするための情報の取得は難しくなります。

また、スマフォで動作するプログラムは基本的にコンパイルされてるので、プログラムのファイル(実行形式のファイル)にアクセスできたとしても、そのままでは何のデータかは簡単にわかりません。そう考えると、Web アプリに比べるとセキュリティは高いと言えます。

Web とスマホのアプリで同じ Firebase のデータベースを使える
Firebase のデータベースやストレージは、Web のアプリでもスマホのアプリでも利用できます。 一つのデータベースで Web アプリとスマホアプリの両方にデータを提供することも可能です。 従って、セキュリティの状況も、スマホのアプリのみに提供する場合と、スマホと Web アプリの両方に提供する場合では変わってきます。基本的に、Web アプリで利用できる場合は、Web ブラウザを利用すれば、情報のアクセスは可能になるので、スマホからそうしたアクセス関連の情報を取得できなくても、データベースにアクセスに必要な情報は取得できる事になります。

従って、スマホだから安心ということではありません。スマホアプリのみで利用する場合は、Web アプリが公開されている場合よりはセキュリティのレベルが高くなるということです。Web ブラウザにサービスを提供する限りはある程度のアクセスに必要な情報は簡単に取得できるということを理解した上で対策する必要があります。

プログラムでアクセスの権限を管理することは可能ですが、プログラムを書き換えれば権限を変えることができるという事になります。何らかの方法で、プログラムの変更ができる場合には、設定したアクセスの権限ではセキュリティ対策になりません。

そこで、Firebase が提供しているのが「セキュリティルール」という仕組みです。 このルールは、Firebase コンソール、つまりインターネット上のサーバ側でルールを設定する仕組みです。つまり、特定のユーザーが Google のアカウントにログインして、その人の管理下にあるプロジェクト毎にルールを設定します。このルールには Web ブラウザからはアクセスができないため、プログラムを変更してプログラムで設定しているアクセスの権限を変更されてた場合でも、ルールでアクセスを許可しなければ、データベースやストレージのデータにはアクセスできません。

完璧なセキュリティ対策はない!
Web アプリやスマホアプリなどインターネットのサーバーを利用してサービスを提供するアプリでは、セキュリティ対策が重要です。この対策が十分でないと、データベースの内容が書き換えられるなど大きな問題になる場合があります。

スマホアプリのみのサービスの場合、Web サービスの場合に比べれば不正アクセスのハードルは高くなりますが、これだけで不正アクセスを完全に防ぐことはできません。あとは、どの程度のセキュリティが運用上必要かによって、その対策や実装が異なってきます。仮に流出してもあまり問題の無いデータを扱う場合などは、セキュリティは最小限でも問題ない場合が多くなります。しかし、重要な個人情報などを扱う場合には、セキュリティをある程度強化する必要があります。

Firebase のセキュリティルールを設定すれば安心かといえばそういうわけではありません。 ルールの設定のバグがある場合もありますし、Firebase コンソールにアクセスするためのパスワードが漏れた場合などは、セキュリティルール自体が書き換えられる可能性も出てきます。セキュリティ対策が難しいのは、基本的に完璧な対策は存在しないためです。従って、どこまでのセキュリティ対策をするかを決めた上で行うしかありません。 実際はいろいろなケースが想定されるので、この線を引くのが簡単ではありません。

セキュリティ対策は、この分野での経験と知識で大きく変わってきます。インターネットを経由したサービスの場合は、常に意図しない他人からの不正アクセスの可能性は常にあります。大切なのは、時代と共に進化するセキュリティの対策に常に目を向けることです。

まとめ
スマホ(iOS やアンドロイド)のアプリのみで Firebase のデータベースやストレージを利用する場合には、一般的な Web ブラウザを利用したアプリよりは、Firebase のアクセスの為の情報の取得が難しくなります。従って、最低限のセキュリティルールの設定でも、扱うデータによっては十分機能させることは可能です。

例えば、全ての読み書きのアクセスを許可してアプリを動かすことは検討の余地があると言えます。

しかし、Firebase のデータベースをスマホ以外の Web アプリと共用したり、重要なデータを扱ったりする場合には注意が必要です。Web ブラウザのように簡単に誰でも重要なデータを取得できるわけではありませんが、「方法」は存在します。データを取得できる人は少なくなるかもしれませんが、データを取得できる方法はあるので、提供するサービスの内容によっては危険な方法という事になります。

セキュリティ対策は、扱うデータやサービスの内容によって、求められるレベルが変わってきます。スマホのアプリなどは Web アプリに比べると安全ではありますが、セキュリティルールの設定はしっかり行う方が無難である事には変わりありません。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す