テナント階層

概要

テナントは、物理的に分離されたデータのスペースであり、個別のURL、特定のユーザーのセットを持ち、個別のアプリケーション管理であり、デフォルトでデータは共有されません。1つのテナント内のユーザーは、同じURLで同一スペースのデータを共有します。

多くのシナリオでは、1つのテナント内で複数の関係者(顧客など)を管理できれば十分です。この場合は、適切な権限を割り当てることでユーザーのアクセスを制御し、ユーザーがどのデバイスを見ることができるかを指定します。これにより、複数の関係者を互いに分離して保護します。このアプローチは、Things Cloud のサブテナントに相当します。

他のシナリオでは、さまざまな理由からこのアプローチでは十分ではない可能性があり、テナントのポートフォリオの管理に関連する可能性があります。このマルチテナントのアプローチは、 Things Cloud の 親テナントの概念に反映されています。

マルチテナント

Things Cloud は完全なマルチテナントをサポートしています。テナントに関連するすべてのデータは、専用のデータベースに保存されます。これには、ユーザーデータ、インベントリ、イベント、メジャーメント、オペレーション、アラームが含まれます。

親テナントは、サブテナントを作成することができ、サブテナントは、プラットフォーム内で サブテナントと同じように機能し、独自のテナント管理を行います。

このマルチテナントのアプローチには、次のようなさまざまなメリットがあります。

ただし、各テナントには専用のデータベースがあるため、各テナント内ではそのテナント自体のIoTデータのみアクセスできます。これはデータを明確に分離するという点で多くのメリットがある一方で、テナント間でデータを共有するにはデータをコピーする必要があり、データが二重に保存されることになります。

シングルテナントとマルチテナント アプローチにおけるロールベースのアクセス制御(RBAC: Role-based access control)のメリットとデメリットについては、RBAC VS マルチテナントで詳しく説明しています。

階層レベル

Things Cloud テナントのコンセプトとして、下から上へ、次のような3レベルの階層を構築します。

※赤枠内が1契約の範囲になります。 3-level hierarchy

これらの3つのレベルは、特に管理に関する範囲が異なります(以下をご覧ください)。

備考

関連する商用サービスの詳細については、Things Cloudオフィシャルサイトをご覧ください。

個々のサブスクリプションの詳細については、お客様のご契約内容をご確認ください。

サブテナント

階層の一番下には、Things Cloud の サブテナントの概念で表されるシングルテナントがあります。

サブテナントは、Things Cloud プラットフォームのほとんどのデバイス管理および監視機能を提供しますが、管理面に関しては一定の制限があります。

サブテナントでは、複数の関係者は個別のユーザーとして反映されます。テナント内のすべてのユーザーは、同じURLとデータスペースを共有するため、ロールの概念に基づいてアクセス権を割り当てることによってのみ、相互に分離することができます。つまり、ロールを使用すると、特定のユーザーにテナントの制限された可視性(たとえば、そのユーザーに所属するデバイスのみ)を与えることができます。

サブテナントの管理についての詳細は、ユーザーガイド管理セクションをご覧ください。

親テナント

親テナントは、サブテナントと比較して管理機能が追加されます。主な違いはマルチテナントであることです。

親テナントを使用すると、次のことが可能となります。

マルチテナントのアプローチもご覧ください。

マネジメントテナント

マネジメントテナントは、Things Cloud テナントの最上位階層です。

Things Cloud クラウドのインスタンスでは、Things Cloud のクラウド運用チームのみがマネジメントテナントにアクセスできます。ただし、基本的にお客様の了承を得ずアクセスはしません。

RBAC VS マルチテナント

はじめに

アプリケーションやサービスを顧客に提供することを考えるとき、プラットフォーム内で顧客をどのように構成するか、どこかの時点で考える必要があります。Things Cloud は 2つの異なる方法でそのお手伝いをします。

ロールベースのアクセス制御(RBAC: Role-based access control) は、Things Cloud プラットフォームのすべてのテナントの一部であり、各ユーザーの権限を細かく定義できます。特定のユーザー(顧客など)に、テナントの部分的な表示のみ (そのユーザーに属するデバイスのみ) を提供するために使用できます。

それに加えて、Things Cloud プラットフォームは一般にマルチテナント プラットフォームであり、プラットフォーム内の他のテナントと同じように機能する独自のサブテナントを作成することもできます。

これにより、顧客を組織化するための2つの選択肢があります。顧客ごとにテナントを作成するか、1つのテナントでRBACを使用して顧客同士を相互に保護し複数の顧客を管理するか、いずれかです。

以下では、両方のアプローチをより詳しく検討し、それぞれの方法で解決する手段を説明したいくつかのユースケースをざっと見ていきます。どちらのアプローチが自社のビジネスケースに適しているかを判断できるようになります。Things Cloud は、テナント階層を使用してテナントを管理するように設計されています。その結果、ロールベースのアクセス制御をする場合、顧客環境で対応する必要があるいくつかの場面で、より困難になります。両方のアプローチを組み合わせて使用​​することで、あなたとあなたの顧客に最も柔軟なアプローチを提供できます。

備考
1つのアプローチから始めて、もう一方のアプローチに切り替えるには、ある程度の移行が必要になります。RBACからマルチテナントに移行する方が、その逆よりも簡単です。

一般的なセットアップ

特定のユースケースについて詳しく説明する前に、各アプローチの一般的なセットアップと、その基礎となる概念を明確にする必要があります。

ロールベースのアクセス制御 (RBAC: Role-based access control)

通常、1つのテナントですべてを処理するには、顧客用の個別のフォルダーをアセット階層に作成することから始まります。アセット階層の詳細はカスタマイズできますが、おそらく最終的には顧客ごとに1つのフォルダーを作成することになります。顧客は自分のフォルダーにのみアクセスでき、そのフォルダー以外のものを見ることができないようになります。

マルチテナント

顧客ごとにテナントを作成すると、顧客がテナントレベルで分離されます。顧客は自分のテナントにのみアクセスできるようになり、あなたのテナントで行うのと同じように、そのテナントで作業できるようになります(顧客に付与したい特定のアクセス権で)。このユースケースでは、顧客が自分のテナントの管理者であり、フルアクセス権を持っていると想定しています。

備考
顧客の特​​定の機能を明示的に制限しない限り、顧客のテナントはあなたのテナントと変わりません。

さまざまなユースケースの比較

次のタスクはプラットフォーム ソリューションでカバーされる必要があります。

次のセクションでは、これらのタスクが両方のアプローチでどのように処理されるかについて説明します。

顧客のオンボーディング

ロールベースのアクセス制御(RBAC) マルチテナント
新しい顧客を追加するには、アセット階層を拡張し、階層の一部に作成された新しいアセットにアクセスできる顧客用のそれぞれのユーザーアカウントを作成します。 新しい顧客を追加するには、自身のテナントから新しいサブテナントを作成します。テナントの作成時に、管理者権限を持つ顧客用の最初のユーザーを自動的に作成することができます。

比較:

新しい顧客の作成も同様に簡単です。ただし、マルチテナントのアプローチでは、標準のアプリケーション以外は何も含まない新しい空のテナントを作成することを考慮する必要があります。追加のアプリケーションのサブスクライブ、デフォルトのダッシュボードの作成、保持ルールの構成などが必要になる場合があります。これらの設定は全員に対して一度だけセットアップされるため、RBACアプローチにはすでに設定されていますが、一方で、この特定の設定(保持ルールなど)は、テナントレベルで構成されるため、顧客ごとに異なる設定を行うことができません。

デバイスの登録

ロールベースのアクセス制御(RBAC) マルチテナント
RBACセットアップの一般的なシナリオは、顧客がデバイスの登録に責任を負わず、すべてのデバイスがプラットフォーム提供者によってプラットフォームに登録されるというものです。ただし、顧客がデバイスを登録することは技術的には可能です。この場合の重要な点は、顧客は、登録エントリーを作成する際にデバイスが属する正しいグループを指定する必要があることです。そうしなければ、顧客は自分のグループのみ表示可能なため、自分のグループ以外で作成されたデバイスを見ることができなくなります。 顧客はテナントにフルアクセスできるため、追加の制限なく自由にデバイスを登録できます。

比較:

プラットフォームに誰がデバイスを登録するかについて技術的な制限はありません。ただし、RBACアプローチでは、顧客がデバイスを閲覧できない状態でデバイスを登録してしまうという誤った設定も簡単にできてしまうため、注意が必要です。

アクセス権

ロールベースのアクセス制御(RBAC) マルチテナント
Things Cloud には、グローバルロール と インベントリロール の2種類のロールがあります。グローバルロールはテナントレベルで適用されます。RBACアプローチでは、適切なレベルの分離を行うためにインベントリロールを使用する必要があります。一部のグローバルロールの権限 (「独自のユーザー管理」など) を除いて、顧客ユーザーにはロールが割り当てられません。インベントリロールを作成するか、デフォルトのインベントリロールを使用して、そのロールが適用されるアセットとを組み合わせてユーザーに割り当てる必要があります。これは顧客ごとに少なくとも一度行う必要があります。 テナントは他のすべての顧客から完全に分離されているため、顧客のアクセス権の設定に必ずしも関与する必要はありません。顧客にテナントの管理権限が与えられている場合は、顧客自身がアクセス権限を設定できます。顧客が他の顧客のテナントを目にしたり知ったりすることはできません。

比較:

RBACアプローチでは、構成ミスにより顧客が他の顧客のデータなど、見てはいけないデータにアクセスできる可能性があるため、アクセスの管理が最も複雑な部分になります。インベントリロールを使用すると、データの特定部分のみに対するアクセスを細かく定義できますが、偶発的な構成ミスからをも保護することはできません。ここでのもう1つの制限は、顧客が独自のロールを作成できないことです。

アクセス制御のセキュリティ側面については、セキュリティ側面 > アクセス制御をご覧ください。

ユーザー管理

ロールベースのアクセス制御(RBAC) マルチテナント
- 顧客はユーザー管理への管理者のフルアクセス権を持ち、自身のロールを定義することもできます。

比較:

顧客ごとに独立したテナントを持つことで、顧客はユーザー管理に関して制限されず、すべての管理機能をフル活用できます。

アプリケーション管理

ロールベースのアクセス制御(RBAC) マルチテナント
アプリケーションの管理は管理者のみが行うことができます。顧客は引き続き、利用可能なアプリケーションへのアクセスをユーザーに許可することができます (自身がアクセスできるアプリケーションのみ) が、ユーザーは独自のアプリケーションを作成することはできません。 顧客は、テナントに必要に応じてアプリケーションを自由に追加できます。

比較:

アプリケーションの管理はテナントレベルでのみ利用できます。顧客が自分でプラットフォームを拡張できるようにしたい場合は、顧客用のテナントを別途用意する必要があります。RBACアプローチでは、アプリケーション管理を行う必要がありますが、顧客ごとに異なるアプリケーションを持つことは可能です。これは UIアプリケーションでは簡単に実行できますが、通常、マイクロサービスを追加する場合は、マイクロサービスはテナント全体で利用できるため、アクセス権で管理する必要があります。

請求書と使用状況データ

ロールベースのアクセス制御(RBAC) マルチテナント
プラットフォームは、APIリクエスト、ストレージ容量、ユーザーとデバイスの数などの使用状況データを自動的に収集します。ただし、これは常にテナントレベルで行われます。どのくらいのデバイスを所有しているかはAPI経由で確認することは可能ですが、どの顧客がストレージ容量とAPIリクエストをどの程度利用しているかを分離することはできません。 顧客が自身のテナントのサブテナントである場合、顧客のデータにアクセスすることなく、自身のテナントから各テナントの使用状況データを参照し、エクスポートすることができます。

比較:

RBACアプローチを選択すると、顧客の正確な使用状況データを取得することができなくなるため、ビジネスモデルの選択肢が制限されます。ライセンスベースのビジネスモデル (たとえば、デバイスごと) は、RBACのセットアップの方がはるかに実現性が高いです。マルチテナントのセットアップを扱うと、APIコールやストレージごとに課金する典型的なクラウドベースのビジネスモデルを選択するオプションが提供されます。

分析

ロールベースのアクセス制御(RBAC) マルチテナント
すべてのデータは単一のデータベースで利用できるため、Apamaストリーミング分析エンジンや、外部ツールを使用してデータの分析を簡単に適用できます。対象の顧客が属するグループに基づいてデバイスを分割する必要があるため、1つの顧客だけに分析機能を適用することは、少し難しくなります。 すべてのデータは複数のデータベース (テナント/顧客ごとに1つ) に分割されており、それらすべてに直接アクセスすることはできません。データを抽出するには各テナントにアクセスするか、データエクスプローラーのような機能を使用して分析に関連するデータを1つのテナントに同期させ、そこで分析を行う必要があります。

比較:

1つのテナントを扱っている場合、すべての顧客のすべてのデバイスにわたって分析を行うのは簡単ですが、1つの顧客に対して個別に分析を行うのはより複雑になる可能性があります。複数のテナントにデータを分散させるとデータを1か所に収集する手間が増えます。ただし、顧客ごとのカスタム分析ソリューションの導入は容易になります。