FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Adminのみ閲覧可能なデータの作成・利用方法

f:id:mbaasdevrel:20180625092940p:plain

mBaaSではAclを使ってアクセス権限を制御できます。たとえば、特定のユーザーにしか閲覧できないデータの作成も可能です。本記事では「Adminにしか閲覧できないデータ」を作成した場合の活用方法について紹介します。

例えば以下のようなデータ保存を行ったとします。

const Item = ncmb.DataStore('Item');
const item = new Item;
// ACLの設定
const acl  = new ncmb.Acl();
acl
  .setRoleReadAccess('Admin', true)
  .setRoleWriteAccess('Admin', true);

item
  .set('name', 'Hello')
  .set('acl', acl)
  .save()
  .then(data => {
    
  })

そうすると、Adminロールにしか読み書きできないデータが作られます。作成時には権限のチェックは行われないので、ログインしていないユーザでも作成できます。

このデータの特徴としては、以下が挙げられます。

  • データの保存は可能
  • データの読み込みは不可
  • データの更新は不可
  • objectIdは保存時に確認可能

ロールに対して権限を付与する場合、ロール名さえ分かっていれば良いのが利点です。ユーザに権限を付与する場合、ユーザのobjectIdが必要ですが、ロールの場合はロール名でOKです。システムを構築する上でも、objectId固定よりも、ロール名で指定した方が開発しやすいはずです。

使い方

使い方としては、例えばこんな形が考えられます。

保存後、更新/閲覧しないデータの作成

IoTなどで見られるような、センサーデータをアップロードするだけという仕組みが作れます。データを閲覧する必要はないので、とにかくアップロードだけするものです。

本部のみ閲覧可能としたいデータの作成

本部と支部、管理者と運営など権限を分けて運用したいことがあります。そうした時にデータの保存はできても閲覧や更新が一切できないデータは役立ちます。この場合、何度もデータ投稿ができるようになりますので、本部側では最新のデータをチェックしたり、アップロードできないように制御する仕組みが必要でしょう。

アンケート

アンケートデータを蓄積する場合、多くは投稿のみになるでしょう。アンケートデータなどは、後で修正できる仕組みにはしないことが殆どです。アンケートでmBaaSを利用する場合、投稿者にも非公開データとして保存するのが良いでしょう。

注意点

注意点としては投稿者にも自分がすでに投稿したかどうかが分からないという問題があります。保存時に投稿したデータを残しておき、そのデータと比較してすでに投稿済みかどうかチェックするのが良いでしょう。

管理者に対しては表示、更新権限を付与しましょう。誰にも権限をつけない場合、デフォルトで全体で読み書きできるデータができてしまいます。

まとめ

mBaaSのロール管理を使いこなすと、クエリで細かく記述することなくデータが取り出せるようになります。また、データの流出リスクを下げられます。ユーザ単位で細かく設定すると運用が大変になる可能性があるので、ロールを使って保守が簡単な形にしてください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。