昨今、情報漏洩などが度々話題になります。気をつけていても、ちょっとしたシステム上の穴から簡単に情報が抜き出されてしまいます。どれだけアプリケーション層がセキュアであっても、データベースのID、パスワードが漏洩したら一巻の終わりです。
mBaaSでは権限管理機能を提供しています。これを使うと不用意な情報公開を防げるようになります。
特定のユーザしか情報にアクセスできない
例えば次のようなコードがあった場合、全データにアクセスできるように見えるでしょう。
let Item = ncmb.DataStore('Item'); Item .fetchAll() .then(results => { console.log(results); });
しかし、ここで取得できるのは全員に読み込み権限をつけているデータだけになります。特定のユーザ、グループにしか読み込み権限がないデータにはアクセスできません。
認証している場合、次の3種類のデータが読めるようになります。
- 全員に読み込み権限がついたデータ
- 認証しているユーザに読み込み権限がついたデータ
- ユーザの所属しているグループに読み込み権限がついたデータ
つまり、同じコードであっても権限の違いによって取得できるデータに差異があります。アプリ開発者としては、どのユーザのデータを取得するかと言った意識が全くいりません。絞り込み条件を追加する必要もなく、自動的にフィルタリングされます。
読み込みと書き込み権限を分けられる
読み込みができたからといって、更新や削除権限がある訳ではありません。さらに読み込み権限も外してしまえば、投稿はできるけれど閲覧や更新はできないデータと言ったものも作成できます。
特定のグループしかアクセスできない情報を作ったり、複雑なアクセス権限を管理できます。業務要件によって細かく制御したいというニーズがあると思いますので、mBaaSの権限管理を使いこなしてください。
アプリケーションキー/クライアントキーの組み合わせでも不可
万が一、アプリケーションキーとクライアントキーが漏洩した場合においても認証を伴ったデータにはアクセスできませんので安心してください。逆に言えば、そうした漏洩に備えて全データについて適切な権限管理をするのが良いでしょう。少なくとも更新権限を全員に付与してしまうような運用は避けなければなりません。
権限を越えたデータ閲覧、更新ができるのは管理画面のみになります。権限設定がうまくいっていないと、SDKからは見られないけれど管理画面では見られるデータができてしまうことがあります。管理画面からは全データが閲覧できますので、もしデータが消失したと思った時には管理画面から確認してみてください。
通常のRDBMSなどではユーザIDでのデータ絞り込みなどが常に行われるかと思います。万一それを忘れてしまうと思わぬデータ漏洩につながるでしょう。mBaaSではログインしていればデフォルトでデータのフィルタリングが行われます。セキュアな運用のためにもmBaaSをお使いください。