権限管理について

投稿日 / 投稿者名

2021.05.06 / 三橋

はじめに

本レポートは、Things Cloud の権限管理についてより知っていただくためのレポートとして作成したものです。今後のリリースにより、一部画面や初期に用意されているロール群などが変更となる可能性があることをあらかじめご了承ください。なお、作成にあたり、以下バージョンを用いています。

難易度 ★

所要時間

基本的な権限の管理について理解し、手順に従い「ユーザーごとにデバイスデータのアクセス制御を設定する」を実現するまでの所要時間。

概要

本レポートでは、Things Cloud における権限の管理についての解説を行います。
また、Things Cloud の権限管理機能をもちいて、ユーザーごとにアクセスできるデバイスデータを制御する方法を紹介します。
このレポートで、以下について説明します。

前提条件

Things Cloud における権限の管理について

Things Cloud では、グローバルロールと呼ばれるロールの集合体をユーザーに割り当てることで、テナントのさまざまなデータへのアクセスを制御します。また、インベントリロールと呼ばれるロールの集合体をユーザーごとにデバイスグループに割り当てることで、ユーザーごとにデバイスデータへのアクセスを制御します。

グローバルロールはテナント内のすべてのデータを対象とし、インベントリロールはデバイスのグループを対象の限定としているため、グローバルロールが上位となります。(グローバルロール > インベントリロール の関係です。)
たとえば、グローバルロールで計測値へなんらかの権限を付与しているユーザーは、インベントリロールによってデバイスグループごとに計測値へのアクセスを制御することはできません。

この2つのロールは インベントリ、メジャーメント、オペレーションなど各データタイプ別に定義します。 インベントリはマスターデータであり、デバイスやアセットをはじめ、ダッシュボードなどさまざまなデータが格納されているため、グローバルロール、またはインベントリロールでインベントリになんらかの権限を付与しないと、ユーザーはこれらのオブジェクトにアクセスすることができません。

ただし、Things Cloudには所有者という概念があり、インベントリ内のオブジェクトにはすべて所有者(owner)が存在し、所有者は自身が保有する他のロールに関係なく常に所有するオブジェクトに関連付けられたデータを作成、更新、および削除することができます。 詳しくは、アクセス制御権限と所有者をご覧ください。

グローバルロールとは

アラームなどさまざまなタイプのデータへのアクセスを許可レベルごとに定義された権限をグループ化したもので、ユーザーに割り当てデータへのアクセスを制御します。
1ユーザーに複数のグローバルロールを割り当てることができます。

各ロールはさまざまなタイプのデータへの許可レベルをあらわします。
たとえば、ユーザーがテナント内のすべてのアラームを読み取れるようにする場合、アラームの読み取りロールを持つ必要があります。また、発生したアラームのクリアができるようにする場合、更新アクションを含むアラームの管理者ロールが必要となります。

あらかじめ定義されているグローバルロール(抜粋)

Things Cloud にはあらかじめ定義されているグローバルロールが用意されていますが、変更することはもちろん、用途に応じて組み合わせてユーザーに割り当てたり、独自のロールを新たに定義することができます。

グローバルロール
説明
admins 運用するのに必要な権限が揃っていますが、テナント管理やシミュレータ操作など付与しないとできないこともあります。
devices デバイス認証を行うと自動的にデバイスユーザーに割り当てられます。
デバイスユーザーのグローバルロールはデバイス管理アプリケーションのデバイス資格情報の管理で変更することができます。
cockpit user コックピットアプリケーションにのみアクセスすることができます。
ロールを何も持たないためインベントリロールでデバイスグループへのアクセスを許可するなど、なんらかの追加のロールが必要となります。
business 主にデバイスとデバイスデータを扱えますが、ユーザー管理などのテナントに関する操作はできません。
新規ユーザーにデフォルトで割り当てられます。
readers ほぼすべてのデータを読み取れますが、変更することはできません。
グローバルロール admins devices cockpit user business readers
  読取管理者作成更新 読取管理者作成更新 読取管理者作成更新 読取管理者作成更新 読取管理者作成更新
アカウント --- --- --- --- ---
アプリケーション管理 -- -- -- -- --
一括操作 -- -- -- -- --
CEP管理 -- -- -- -- --
データブローカー -- -- -- -- --
デバイス制御 -- -- -- -- --
アイデンティティ -- -- -- -- --
オプション管理 -- -- -- -- --
データ保持ルール -- -- -- -- --
エクスポートスケジュール --- --- --- --- ---
シミュレーター --- --- --- --- ---
グローバルスマートルール -- -- -- -- --
Sms -- -- -- -- --
テナント管理
テナント統計 --- --- --- --- ---
ユーザ管理 - - - - -
自身のユーザ管理 -- -- -- -- --
アラーム -- -- -- -- --
イベント -- -- -- -- --
インベントリ - - - - -
計測値 -- -- -- -- --
監視 -- -- -- -- --

インベントリロールとは

デバイスのグループに割り当てるロールで、ユーザーごとにインベントリロールをそれぞれのデバイスグループに割り当てることで、ユーザーのデバイスデータへのアクセスを制御します。
それぞれのデータのフラグメントタイプまで絞り込むことができます。

現在インベントリロール(inventoryRoles)のAPIは非公開のため、GUIからのみ操作が可能です。

コックピットのグループ以外の機能について

インベントリロールはデバイスグループに割り当てるロールであるため、コックピットのレポートやデータエクスプローラ機能に制限が発生します。

たとえば、下記のようにコックピットのみ利用できるユーザーのデバイスグループに全スコープのアクセスを制御するフルアクセスのインベントリロールを付与した場合のアクセスについて、この後どのように見えるか確認します。

レポート

インベントリロールをレポート機能のアクセス制御に利用することはできません。
レポートのエクスポートするオブジェクトに、アクセス可能なグループやグループ配下のデバイスを指定してもアクセス権限のエラーが表示されレポートを作成することはできません。すでに存在するレポートも表示されないため参照できません。

データエクスプローラ

データエクスプローラにアクセス許可のないグループのデバイスのデータポイントやアラーム/イベントがある場合は、アクセス権限のエラーが表示されます。(下の画像の緑色のデータポイントにアクセス許可がありません。)

APIリクエストにおけるロールの振る舞いについて

Things Cloudは接続するデバイスも、コックピットなどのアプリケーションもAPIで通信し、さまざまなデータにアクセスしています。その際にもそれぞれのロールはAPIにおけるアクセスを制御します。(一部例外あり)

上記の要求されるロールとは別にインベントリロールを用いてアクセスを制御することができます。

また、APIリソースへのアクションに対するロールを持たなくても、ソースオブジェクトの所有者である場合、所有オブジェクトに関連するデータの作成、更新、削除のアクセスが許可されます。

アプリケーションのアクセスについて

アプリケーションへのアクセスはグローバルロールで指定することができます。
「アプリケーション管理」ロールのいずれか、またはぞれぞれのアプリケーションへの個別のアクセス許可によって管理されています。

標準の3つのアプリケーション以外の登録済みの内蔵アプリケーションについてはアクセス許可の有無に関わらず機能としてご利用いただけます。

アプリケーション管理ロール アプリケーションへのアクセス
あり すべてアクセス可
なし 登録済みアプリケーションにチェックのあるアプリケーションのみアクセス可

あらかじめ登録されているグローバルロールの許可アプリケーション(抜粋)

グローバルロール アプリケーション管理ロール 登録済みアプリケーション アクセスできるアプリケーション
admins 読み取り、管理 なし すべて
devices なし なし なし
cockpit user なし コックピット コックピット
business なし デバイス管理, コックピット デバイス管理, コックピット
readers 読み取り なし すべて

上の表にあるように、アプリケーション管理ロールが付与されていないcockpit userbusinessのユーザーは別途アクセス可能なアプリケーションを許可する必要があります。

コックピットなどの3つの内蔵アプリケーションをWeb SDKでカスタマイズした場合、登録済みアプリケーションからカスタムアプリケーションの扱いへと変更されます。

ユーザーのアプリケーションへのアクセス可否は、ユーザーの「アプリケーションへのアクセス」タブで確認することができます。「アプリケーション管理」ロールが付与されている場合は、ここでの変更はできません。

ユーザーごとにデバイスデータのアクセス制御を設定する

設定したいアクセス制御

アクセス管理イメージ

前提条件

  1. adminユーザー(管理者)、testuser1ユーザー(ユーザー①)、testuser2ユーザー(ユーザー②)の3名登録していること。
  2. グループ①、グループ②、グループ③の3つのデバイスのグループにそれぞれデバイスが登録していること。
  3. グローバルロール、およびインベントリロールは、初期設定から変更していないこと。

アクセス条件

  1. testuser1ユーザー(ユーザー①)はグループ①のデバイスグループのみアクセスすることができる。
  2. testuser2ユーザー(ユーザー②)はグループ②のデバイスグループのみアクセスすることができる。
  3. adminユーザー(管理者)はすべてのデバイスグループにアクセスすることができる。

実現手順

  1. グローバルロールをユーザーに割り当てる。

    • adminユーザー(管理者)にadmins、testuser1ユーザー(ユーザー①)、testuser2ユーザー(ユーザー②)にcockpit userのグローバルロールを割り当てる。
  2. インベントリロールをユーザーのデバイスグループに割り当てる。

    • testuser1ユーザー(ユーザー①)のデバイスグループ①にreaderのインベントリロールを割り当てる。

    • testuser2ユーザー(ユーザー②)のデバイスグループ②にreaderのインベントリロールを割り当てる。

アクセス結果

ユーザー①

testuser1ユーザーでログインすると、グループ①のみ表示し、グループ①のダッシュボードにアクセスできる。 user1

ユーザー②

testuser2ユーザーでログインすると、グループ②のみ表示し、グループ②のダッシュボードにアクセスできる。 user2

管理者

adminユーザーでログインすると、すべてのグループが表示し、すべてのダッシュボードにアクセスできる。 admin