• サービス紹介
  • SDPFナレッジセンター
  • 開発者レポート
  • リリースノート
  • API仕様
  • FAQ
  • お問い合わせ
Cumulocity IoT
このドキュメントについて IoTソリューション ユースケース Things Cloudコンセプト ユーザーガイド プロトコル統合ガイド カスタムストリーミング処理ガイド デバイス統合 デバイス統合チュートリアル Web SDKガイド リファレンス よくあるご質問 リリースノート 開発者レポート 開発者レポート
レポート一覧
Observable を活用したIoTデータ可視化の探索からカスタムウィジェット開発までのチュートリアル
テンプレートを用いたテーブルウィジェットのカスタマイズ
ユースケースを基にしたダッシュボードの設定方法
Step1 解説編 (工事現場ユースケース) Step2 問題編 (機器監視ユースケース)
Analytics Builder をはじめる
はじめに Apama Analytics Builderの強みと活用シーンについて イベント処理モデルを作成する 例題 リファレンス
Apama EPL をはじめる
はじめに Apama EPLコードを書く Apama 例題
htmlウィジェット開発
SCADA ウィジェットによるデータ可視化
Postmanを使用したMeasurement/Eventのデータ取得方法
pythonを使ってMeasurement/Eventデータを取得しcsvに変換する方法
Postmanを使用したMeasurementデータの格納方法
API 経由での Measurement 格納
Postmanを使ってMeasurementデータを一括アップロードする方法
Rubyによるリアルタイム通知
CEPスクリプトを書く(基本編)
CEPスクリプトを書く(応用編)
Web SDK for Angular を利用したカスタムアプリケーションの作り方
Web SDK for Angular を利用したカスタムウィジェットの作り方1
Web SDK for Angular を利用したカスタムウィジェットの作り方2
ロゴや配色を変更する方法
Sensor App(スマートフォンアプリ)の利用開始方法と利用例
MQTT対応のエージェントを利用しメジャーメントを送信する方法
権限管理について
Single Sign On セットアップマニュアル
CLIツールの使い方
Alarm の利用について

権限管理について

投稿日 / 投稿者名

2021.05.06 / 三橋

はじめに

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

  • ver.10.6.6.32(backend/UI)

難易度 ★

所要時間

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

  • 約 30 分

概要

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

  • Things Cloud における権限の管理について
    • グローバルロールとは
    • インベントリロールとは
    • APIリクエストにおけるロールの振る舞いについて
    • アプリケーションのアクセスについて
  • ユーザーごとにデバイスデータのアクセス制御を設定する
    • 設定したいアクセス制御
    • 実現手順
    • アクセス結果

前提条件

  • 管理アプリケーションの権限の管理について理解していること。

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におけるアクセスを制御します。(一部例外あり)

  • たとえば、「アラーム」の読み取りロールはデータ上 ROLE_ALARM_READ として保有しており、GET - アラームコレクションの取得の要求されるロールに指定されています。このロールを持たないユーザーがGETリクエストした際のレスポンスは403 Forbidden(このAPIにアクセスする権限がありません) となります。

    GET - アラームコレクションの取得

    • 応答本体: AlarmCollection
    • 要求されるロール: ROLE_ALARM_READ
    • リクエスト例: GET /alarm/alarms

    *上記のロールなしユーザーに「アラーム」の管理者ロール ROLE_ALARM_ADMIN を付与し同じようにGETリクエストした場合も状況は変わりません。これは管理者ロールは作成、更新、削除のアクションを含みますが、読み取りのアクションは含まないためです。

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

  • たとえば、とあるデバイスグループにすべてのアラームの読み取りを許可するインベントリロールを割り当てた場合、そのデバイスグループに所属するデバイスのアラームを取得することができます。

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

  • たとえば、POST - 新規アラームの作成の要求されるロールにソースオブジェクトの所有権とある場合、データの発生源となるソースオブジェクト(デバイス)は、つまりはデバイスの所有者(owner)であるユーザーはロールに関わらずアラームを作成することができます。

    POST - 新規アラームの作成

    • リクエスト本体: Alarm
    • 応答本体: Alarm
    • 要求されるロール: ROLE_ALARM_ADMIN または ソースオブジェクトの所有権
    • リクエスト例: POST /alarm/alarms

  • ただし、上記のGET - アラームコレクションの取得の要求されるロールにソースオブジェクトの所有権がないため、たとえ所有者であってもアラームの取得はできません。

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

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

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

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

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

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

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

コックピットなどの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

© 2025 NTT Communications. All rights reserved.