権限の管理

権限は、ユーザーがThings Cloudアプリケーションで実行を許可される内容を定義します。権限をより簡単に管理するために、グローバルロールとインベントリロールにグループ化されています。すべてのユーザーは、権限を追加しながら複数のロールに関連付けることができます。

必要条件

ロールとアクセス権限:

  • グローバルロール、インベントリロール、アプリケーションを表示する:「ユーザー管理」権限タイプの読み取り権限
  • グローバルロールを管理する(ユーザーに割り当て、ユーザーから解除)、インベントリロールを管理する、アプリケーションアクセスを管理する:「ユーザー管理」権限タイプの管理者権限
  • 所有するロールをユーザーに割り当てる(「feature-user-hierarchy」アプリケーションのサブスクライブが必要):「ユーザー管理」権限タイプの作成権限
  • 利用可能な(所有の)権限で新しいロールを作成する:作成および管理者権限

上記の権限を使用して、堅牢なユーザー管理のためのロールを作成できます。すべての新しいテナントには、デフォルトで指定された一般的なロールがあります。

  • グローバルユーザーマネージャー:ユーザー階層全体にアクセスし、変更できます
  • 共有ユーザーマネージャー:新しい独自のサブユーザーを作成し、管理できます(「feature-user-hierarchy」アプリケーションのサブスクライブが必要)

グローバルロール

アカウントメニューのロールをクリックして、構成設定済みのロールの一覧を表示します。

コンテキストメニュー

グローバルロールタブには、システムレベルで権限を付与するロールが表示されます。あらかじめ定義されたグローバルロールがいくつか定義されていますが、必要に応じて独自のロールを定義できます。

備考

定義済みロールは、特定の目的のためのサンプルとして構成されています。これらを出発点として使用し、個々のニーズにおいて、さらに適合させることができます。

新しいユーザーを作成するとき、割り当てられたグローバルロールによって、特定ユーザー関連の必要なすべての権限が含まれていることを確認します。異なるロールの権限は、同じユーザーに割り当てられるとマージされます。例えば、ユーザーが「コックピット ユーザー」ロール(以下参照)しか持っていない場合、ユーザーはコックピット アプリケーションのみアクセスでき、それ以上はアクセスできません。ただし、利用可能なロールの一部を介してインベントリのアクセス許可を割り当てると、ユーザーはデバイス、グループ、構成などのインベントリ全体にアクセスできるようになります。

「管理ユーザー」および「デバイスユーザー」ロールには特別なステータスがあります。

ロール    説明
管理ユーザー 管理権限が有効になっています。テナントで最初に作成された初期管理者がこのロールを持ちます
デバイスユーザー デバイスの一般的な権限の設定。登録後、デバイスは自動的にこのロールを持ちます。デバイスが必要とするアクセス許可が既定より少ないか多い場合に、このロールを編集するか、デバイスに他のロールを割り当てます

さらに、あらかじめ構成された次のロールがデフォルトで設定されています。

ロール 説明
CEPマネージャー すべてのスマートルールおよびイベント処理ルールにアクセスできます
コックピットユーザー コックピットアプリケーションにアクセスできます。さらに、デバイスへのアクセスを許可するロールを追加する必要があります
デバイス管理ユーザー デバイス管理アプリケーションにアクセスできます。ユーザーはシミュレータを使用して、一括オペレーションを実行できます。さらに、デバイスへのアクセスを許可するロールを追加する必要があります
グローバルマネージャー すべてのデバイスからのすべてのデータに対し、閲覧、書き込みができます
グローバルリーダー すべてのデバイスからのすべてのデータを閲覧できます
グローバルユーザー マネージャー すべてのユーザーを管理できます
共有ユーザーマネージャー サブユーザーを管理できます。サブスクライブしているプランには、サブユーザーを管理できるようにユーザー階層を含める必要があります
テナントマネージャー 所有アプリケーション、データブローカー、データ保持、オプション、テナント統計など、テナント全体の設定を管理できます

次のレガシーロールも表示される場合があります。

ロール 説明
ビジネス ユーザー すべてのデバイスとそのデータにアクセスできますが、テナントでの管理権限はありません
リーダー ユーザー すべてのデータを閲覧できます(「グローバルリーダー」とは違い、ユーザー管理を含みます)

グローバルロールの追加

グローバルロールタブでグローバルロールの追加をクリックします。新しいグローバルロールページでは、アクセス権限タイプの一覧が左側に表示され、アクセス可能なアプリケーションの一覧が右側に表示されます。次のスクリーンショットは、「管理ユーザー」ロールの設定を示しています。

管理者例

権限レベル

タイプごとに、次の権限レベルを選択できます。

  • 読み取り:指定されたデータの閲覧ができます。
  • 作成:ユーザーやインベントリデータなどの新しいデータを作成し、階層内のユーザーを編集します。
  • 更新:指定したデータを変更および削除します(「読み取り」は含まれません)。
  • 管理者:指定したデータを作成、更新、または削除します。
備考
作成権限は、Things Cloudにおける所有権の概念に関連しています。オブジェクトを作成した場合、そのオブジェクトの所有者となり、それ以上の権限を必要とせずにオブジェクトを管理できます。例えば、「インベントリ」の作成権限を持つユーザーは、デバイス/グループを作成し、それらのデバイス/グループを完全に管理できます。自分で作成しなかったデバイス/グループは、更新権限または追加のインベントリロール(下記参照)を持っていない限り、管理できません。この概念は、デバイスに最小限の権限を割り当てるのに役立ちます。また、ユーザー階層にサブスクライブしている場合、ユーザー管理権限をサブユーザーに制限することもできます。

それぞれのレベルをすべての権限タイプに設定するには、列の最上部にあるチェックボックスを選択します。

権限カテゴリ

次の権限カテゴリは、デフォルトで使用可能です。

カテゴリ 説明
アラーム アラームの閲覧または編集
アプリケーション管理 アカウントで使用可能なアプリケーションの閲覧と編集
監査 監査ログの閲覧、作成
一括操作 一括操作の閲覧、作成
CEP管理 CEPルールの閲覧、編集
データブローカー 他のテナントへデータ送信、または他のテナントからデータ受信
デバイス制御 デバイスに送信するコマンドを表示、編集。デバイスにコマンドを送信。またデバイス登録にも使用されます
イベント イベントの閲覧、作成
グローバルスマートルール グローバルスマートルールの構成設定
識別子 デバイスの識別IDを閲覧、編集
インベントリ インベントリデータの閲覧、編集
計測値(メジャーメント) メジャーメントの閲覧、作成
オプション管理 パスワードのポリシーなどのアカウントオプションの閲覧、編集
データ保持ルール データ保持ルールの閲覧、編集
エクスポートをスケジュール レポートのエクスポートスケジュール管理
シミュレーター シミュレートされたデバイスの構築設定
SMS SMSの構成(Things Cloudでは本機能は利用できません)
テナント管理 サブテナントの閲覧、作成、編集、削除
テナント統計 管理アプリケーションのホーム画面に表示されている該当アカウントのデータ使用量の閲覧
ユーザー管理 ユーザー、グローバルロール、アクセス権限の閲覧、編集
自身のユーザー管理 自身のユーザーの閲覧、編集。この権限は技術的なユーザーにのみ適用される場合があることに注意してください

サブスクリプションプランの機能によっては、追加の権限が表示される場合があります。それらは、各機能とともに説明されています。

重要
新しい権限を持つ新機能がThings Cloudに追加されても、既存のロールには自動的に追加されません。最近発表された新機能を使用できない場合は、権限を確認してください。

グローバルロールの割り当て

グローバルロールをユーザーに割り当てるには、ユーザーリストで直接割り当てるか、目的のユーザー詳細画面を開いて追加します。

重要
デフォルトでは、SSO ユーザーのロール(SSO ログイン時に自動的に作成される)を変更することはできません。これは、動的アクセスマッピングによって上書きされるためです。ただし、この動作は変更できます。詳細についてはカスタムテンプレート構成を参照してください。

ユーザーリストよりグローバルロールを割り当てる

  1. 目的のユーザーのグローバルロール列をクリックして、グローバルロールの一覧を開きます。
  2. 各チェックボックスをオンまたはオフにします。
  3. 適用をクリックして設定を保存します。

ユーザーページよりグローバルロールを割り当てる

  1. ユーザーリストで目的のユーザーの行をクリックします。
  2. 表示されたユーザ画面において、右側の関連するグローバルロールのチェックボックスをオンまたはオフします。
  3. 保存をクリックして設定を保存します。
重要
OAI-Secure 経由でログインしているユーザーは、ロールを切り替えた後にプラットフォームから強制的にログアウトされます。ロールの変更には管理者による確認が必要です。

インベントリロール

インベントリロールには、デバイスのグループに割り当てることができる権限が含まれています。例えば、インベントリロールにデバイスを再起動する権限を含めるとします。そして、そのインベントリロールをデバイスグループ「Region North」とユーザー「smith」に割り当てるとします。その結果、ユーザー「smith」は、グループ「Region North」とそのサブグループ内のすべてのデバイスを再起動できるようになります。

インベントリロールの表示

現在設定されているインベントリロールを表示するには、アカウントメニューのロールをクリックし、インベントリロールタブに切り替えます。

コンテキストメニュー

インベントリロールタブでは、特定のグループやその配下にある子のユーザー権限を管理できます。デフォルトのインベントリロールがいくつか定義されていますが、必要に応じて独自のロールを定義できます。

新規テナントは、次のデフォルトのインベントリロールが最初から使用可能です。

ロール 説明
アセットマネージャー すべてのアセットのデータの読み取りとインベントリ内のデータの管理ができますが、
オペレーションの実行はできません。
さらに、ダッシュボードを含むインベントリデータとアラームの管理ができます
操作:すべて デバイスにオペレーションを送信し、アセットを遠隔管理することができます
(例:ソフトウェアのアップデート、リモート設定)
操作:デバイス再起動 デバイスを再起動できます
リーダー アセットのデータをすべて閲覧することができます

インベントリロールの追加

インベントリロールタブでインベントリロールの追加をクリックします。 新しいインベントリロールページで、名前説明を入力し、新しいインベントリロールにアクセス権限を割り当てます。

ロール詳細

アクセス権限は、次のカテゴリに分類されます。

カテゴリ 説明
アラーム デバイスからのアラームの操作に関連する権限
監査 監査ログに関連する権限
イベント デバイスからのイベントの操作に関連する権限
インベントリ デバイスを閲覧および編集するための権限
計測値(メジャーメント) メジャーメントに関連する権限
デバイス制御 デバイスを遠隔制御するための権限
フルアクセス 構成設定を簡素化するための、関連するデバイスへの完全なアクセス権

目的のカテゴリの横にあるプラスアイコン をクリックして、ロールに権限を追加します。

タイプフィールドでフラグメントを指定して、この権限が適用されるデータタイプをさらに制限します。アクセスは、指定されたフラグメントタイプを正確に含むオブジェクトにのみ許可されます。選択したオブジェクトに、インベントリロール構成で定義されているものよりも多くのフラグメントタイプが含まれている場合、それを表示するにはインベントリロール構成に追加する必要があります。

例えば、デバイスが「c8y_SignalStrength」などのデバイス管理に関連するメジャーメントを送信しているが、メジャーメント自体には関係ない「c8y_Temperature」も含まれているとします。 選択されたデバイスには、「c8y_Temperature」フラグメントのみを含むメジャーメントもあります。

POST /measurement/measurements
...
{
    "source": { "id": "2480300" },
    "time": "2013-07-02T16:32:30.152+02:00",
    "type": "SignalStrength",
    "c8y_SignalStrength": {
        "rssi": { "value": -53, "unit": "dBm" },
        "ber": { "value": 0.14, "unit": "%" }
    },
    "c8y_Temperature": {
        "T": { "value": 10, "unit": "C" }
    }
}
POST /measurement/measurements
...
{
    "source": { "id": "2480300" },
    "time": "2013-07-02T16:32:30.152+02:00",
    "type": "SignalStrength",
    "c8y_Temperature": {
        "T": { "value": 10, "unit": "C" }
    }
}

ユーザーには、フラグメント「c8y_SignalStrength」を含むデバイス管理のメジャーメントのみを表示させたいとします。

インベントリロールのデフォルト構成では、メジャーメントに含まれるすべてのフラグメント「c8y_SignalStrength」と「c8y_Temperature」へのアクセスを提供する必要があります。

デフォルトインベントリロール構成

メジャーメントに他のフラグメントタイプも含まれている場合、それらもインベントリロール構成に追加されている必要があり、レスポンスで返されることに注意してください。

それ以外の場合、ユーザーにアクセスが許可されていないフィールドが含まれているため、そのようなメジャーメントは返されません。

レスポンスは次のようになります。

GET /measurement/measurements
...
{
    "source": { "id": "2480300" },
    "time": "2013-07-02T16:32:30.152+02:00",
    "type": "SignalStrength",
    "c8y_SignalStrength": {
        "rssi": { "value": -53, "unit": "dBm" },
        "ber": { "value": 0.14, "unit": "%" }
    },
    "c8y_Temperature": {
        "T": { "value": 10, "unit": "C" }
    }
}

カテゴリconfigurationのテナントオプション acl.measurement.only-accessible-fragments は、メジャーメントに使用することができます。

これを有効にするには、次のようにオプションvaluetrueに設定します。

POST /tenant/options
...
{
    "category": "configuration",
    "key": "acl.measurement.only-accessible-fragments",
    "value": "true"
}

テナントオプション値をtrueに設定した後、「c8y_SignalStrength」などの単一のメジャーメントフラグメントにアクセスするために、メジャーメントに含まれるすべてのフラグメントタイプへのアクセスを許可する必要はありません。

例えば、デバイスが前述の例のような「c8y_SignalStrength」と「c8y_Temperature」を含むメジャーメントと、「c8y_Temperature」のみを含む他のメジャーメントを送信するとします。

POST /measurement/measurements
...
{
    "source": { "id": "2480300" },
    "time": "2013-07-02T16:32:30.152+02:00",
    "type": "SignalStrength",
    "c8y_SignalStrength": {
        "rssi": { "value": -53, "unit": "dBm" },
        "ber": { "value": 0.14, "unit": "%" }
    },
    "c8y_Temperature": {
        "T": { "value": 10, "unit": "C" }
    }
}
POST /measurement/measurements
...
{
    "source": { "id": "2480300" },
    "time": "2013-07-02T16:32:30.152+02:00",
    "type": "SignalStrength",
    "c8y_Temperature": {
        "T": { "value": 10, "unit": "C" }
    }
}    

HTTP/1.1 201 Created

ユーザーには、フラグメント「c8y_SignalStrength」を持つデバイス管理のメジャーメントのみを表示したいとします。 テナントオプションを変更した後、必要なフラグメントタイプのみを指定できます。

アクセス可能なフラグメントのみのインベントリロール

定義されたタイプのセットを持つメジャーメントのみが返され、インベントリロール構成にリストされていない追加のタイプは、返されるメジャーメントから削除されることに注意してください。

レスポンスは次のようになります。

GET /measurement/measurements
...
{
    "source": { "id": "2480300" },
    "time": "2013-07-02T16:32:30.152+02:00",
    "type": "SignalStrength",
    "c8y_SignalStrength": {
        "rssi": { "value": -53, "unit": "dBm" },
        "ber": { "value": 0.14, "unit": "%" }
    }
}
...

これにより、ユーザーは定義されたタイプのみを含むメジャーメントを表示でき、メジャーメントに含まれる他のフラグメントのタイプを追加で構成する必要がありません。

デフォルトでは、タイプフィールドにはすべてのタイプを選択するアスタリスク「*」が含まれています。

備考
使用可能なタイプの詳細については、デバイスのドキュメントまたはフラグメントライブラリを確認してください。ここで使用されているタイプは、いわゆる「フラグメントタイプ」であり、「タイプ」プロパティではありません。メジャーメントを表示するには、メジャーメントで送信するすべてのフラグメントタイプを入力してください。他のデータのタイプについても同様です。

アクセス権限フィールドで、ドロップダウンリストから権限レベルを選択します。

  • 読み取り:オブジェクトを閲覧します
  • 変更:オブジェクトを変更します(読み取り権限は含まれません)
  • すべて:オブジェクトの閲覧と変更ができます
重要
アクセス権限を追加すると、小さな感嘆符が表示される場合があります。感嘆符は、ユーザーが追加した権限が有効でないことを示します。これは、そのユーザーの別の「高位」権限セットに、対応するアクセス権限がすでに含まれているためです。例えば、「フルアクセス」を設定しているかどうか、または同じセクションにタイプが「*」で、アクセス権限が「すべて」である別の設定があるかどうかを確認してください。

別の例として、トラッキングデバイスを使用しているとします。ユーザーにはすべてのデバイスを表示できるようにしたいのですが、何も変更できないようにしたいとします。さらに、ユーザーはマップ上でデバイスの軌跡を追跡できるようにしたいとします。追跡は、フラグメントタイプ「c8y_Position」のイベントを使用して記録されます(フラグメントライブラリ)。そのためには、下の図で示すようにインベントリと「c8y_Position」をタイプに持つイベントに読み取り権限を割り当てます。

権限の例

ユーザーへのインベントリロールの割り当て

インベントリロールは、ユーザーとデバイスのグループに割り当てられます。

インベントリロールを割り当てるには、アカウントメニューのユーザーをクリックし、ユーザーリストでユーザーを選択してインベントリロールタブに切り替えます。

インベントリロールタブでは、デバイスグループのツリーが表示されます。インベントリロールを割り当てるには、グループ行の右側にあるドロップダウンを開きます。関連するロールを選択し、適用をクリックします。ロールの詳細については、その横にある情報アイコンをクリックしてください。

重要
ユーザーがすでにインベントリ権限を含むグローバルロールを持っている場合、ここで設定したインベントリロールに関係なく、すべてのデバイスを表示または変更できます。

インベントリロールは、グループとその直接および間接的な配下にあるすべてのサブグループ、そしてこれらのグループ内のデバイスに継承されます。例えば、デバイスのグループのアラームに対する読み取り権限を持つロールを選択すると、ユーザーはこのグループ内のすべてのデバイスとサブグループのアラームを閲覧できます。

ユーザーがデバイスグループへのインベントリのアクセス権を持っている場合、ユーザーはコックピットアプリケーションでそのデバイスグループのすべてのダッシュボードへアクセスできます。

他のユーザーのインベントリロールをコピーすることもできます。ロールをコピーするには、他のユーザーからインベントリロールをコピーをクリックします。次のウィンドウで、リストからユーザーを選択し、コピーをクリックします。上部で、現在のロールをユーザーロールにマージするか(デフォルト)、現在のユーザーロールを置き換えるかを選択できます。ロールをコピーすると、参照ユーザーを作成し、そこから権限をコピーできるため、多数のユーザーの権限を簡単に管理できます。

アプリケーションへのアクセス許可

アプリケーションへのアクセスタブには、テナントで使用可能なすべてのアプリケーションがアルファベット順に一覧表示されます。

ユーザーにアプリケーションを割り当てるには、目的のアプリケーションを選択し、保存をクリックします。

アプリケーション管理の詳細については、アプリケーション管理を参照してください。

備考
ユーザーにすべてのアプリケーションを閲覧するグローバル権限がある場合、インフォメーションボックスが表示されます。

アクセス権限のトラブルシューティング

十分なアクセス権限のない状態で操作を実行しようとすると、エラーメッセージが表示されます。

アクセス権限のトラブルシューティングには、トップバーの右側にあるユーザーボタン(現在のユーザー名が表示)をクリックします。メニューから、拒否されたリクエストを選択します。次のウィンドウには、拒否されたリクエストの詳細が表示されます。アクセス権限の修正には、管理者ユーザーまたは製品サポートへお問い合わせください。

パフォーマンスの向上

Things Cloud プラットフォームは、インベントリロールへのアクセス権を持つユーザーのために最適化されたUIパフォーマンスを提供します。特に、大規模なインベントリ階層を持つテナントのリクエストが高速化されます。

次のUIページのパフォーマンスが改善されました。

  • デバイスの詳細ページのタブ: 情報計測値(メジャーメント)アラームイベント、および制御
  • システム内のアラーム数が少ない場合、複数のデバイスから集約されたアラームを表示するページ(例:コックピット > ホーム画面、コックピット > アラーム、デバイス管理と接続 > デバイス管理アプリケーション > ホームダッシュボード)
  • イベント数が少ない場合、複数のデバイスから集約されたイベントを含むページ(例:デバイス管理と接続 > デバイス管理アプリケーション > イベント)
  • オペレーション数が少ない場合、複数のデバイスから集約されたオペレーションを含むページ(例:デバイス管理と接続 > デバイス管理アプリケーション > 概要 > デバイス制御 > 単一操作)

管理者は、次の操作を実行してパフォーマンス機能を無効にできます。

  • 構成ファイルを使用したプラットフォームレベル: プラットフォーム管理者のみ利用できます。詳細については Things Cloud - オペレーションガイド を参照してください。
  • テナントオプションを使用したテナントレベル: テナントオプションには、LEGACY/OPTIMIZED の 2 つの値があり、OPTIMIZED はグローバル デフォルトです。

このオプションは、REST APIで次のようになります(詳細はThings Cloud OpenAPI仕様 参照)。

{"category": "configuration", "key": "acl.algorithm-version", "value": "LEGACY"}

テナントレベルでの設定は、プラットフォームレベルでの設定よりも優先されます。

デフォルトでは、このオプションは有効になっています。

インベントリロールを利用したアクセスの制限

Things Cloud インベントロールを利用したアクセスにはいくつかの制限があり、REST APIの動作が変更される場合があります。

最適化

最適化されたパフォーマンス は、以下の場合にのみ適用されます:

  • フィルタに一致する項目の合計数が 2000 未満である場合。たとえば、特定のタイプのアクティブなアラームのみを検索しており、そのアラーム数が2000未満の場合です。
  • 特定のデバイスに対してメジャーメント、アラーム、イベント、およびコントロールを取得する場合。

それ以外の場合、Things Cloud は従来の検索アルゴリズムを適用します。

従来

従来のアルゴリズムはREST APIに対して次のような影響を与えます:

  • currentPage クエリパラメータは、スキャンされたドキュメントのオフセットとして機能します。
  • REST APIは空のページを返す場合があります。Things Cloud はユーザーがアクセス可能な項目を検索しますが、リクエストごとのスキャンには制限があります。スキャンされた項目の中にアクセス可能な要素がない場合、プラットフォームは空のリストを返します。この場合、statistics.next のURLを使用して次のチャンクのスキャンを実行する必要があります。Things Cloud はスキャンする項目がある限り statistics.next を返します。