mBaaSはモバイルアプリからの利用を前提としているため、アクセス元を制限することはできません。一般的なバックエンドシステム(データベースなど)のようにLAN内部からしか使えないといった利用には向きません。
そんなmBaaSをセキュアに利用するためのTipsを幾つか紹介します。
ACLを設定しましょう
ログインしていないユーザが閲覧、編集さらに削除までできるオープンなデータは作らないようにしましょう。最低でも匿名認証を利用し、作成した会員を何らかのロール(Memberなど)に加えます。そのMemberに対してデータを公開設定すると良いでしょう。
自分のデータを共有する場合も、全体に読み込み権限を与えるのではなく、このMemberに対して付与するの方が安全でしょう。
クラスのパーミッションを設定しましょう
クラスでは下記の処理についてパーミッションが設定できます。
- 読み込み
- 検索
- 作成
- 更新
- 削除
- フィールド追加
これはユーザ、ロールごとに制御可能です。この設定を行うことで、悪意を持ったユーザが適当にフィールド追加するのを防げるようになります。
プッシュ通知の作成を制御しよう
プッシュ通知をSDK(API)から作成できないよう、制御しましょう。これは必要に応じてですが、キーが漏洩した場合にもプッシュ通知の作成を制限できます。キーが漏洩してもACL制御されていればデータの安全性は保証されますが、プッシュ通知を勝手に作られてしまうのは困るでしょう。そのため、アプリ側からプッシュ通知を作成する予定がないならば、制御しておく方が良いでしょう。
クラスの作成を制御しましょう
SDKから任意のクラスを作成できないようにするのはアプリ設定で行えます。多くの場合、この設定は有効にしておくべきです。そうすることで勝手なデータを作成されるのは防げるようになります。
まとめ
これらのテクニックを用いることで、万一キーが漏洩したとしてもアプリの安全性を維持できます。キーは際生成できますが、すでにアプリを配布してしまっている場合には安易な再生成はできないでしょう。セキュアにアプリを運用するためにも必要な制限を行うようにしてください。