概要
ここでは Things Cloud の複数のセキュリティー面(物理的セキュリティー、ネットワークセキュリティー、アプリケーションセキュリティー、アクセス制御)について詳しく説明していきます。さらに Things Cloud がIoTソリューションのセキュリティー管理をどのように手助けできるか説明します。
このセクションは、とくにITセキュリティ担当者と管理者を対象としています。Things Cloud を実行するには、ITセキュリティーの専門知識が必要です。
詳細については、Things Cloud OpenAPI仕様のREST implementationやUser APIなど、ドキュメントのセキュリティー関連のセクションをご覧ください。個々のAPIコールに必要なアクセス権限については、該当のThings Cloud OpenAPI仕様のAPIセクションに記載されています。
物理的セキュリティー
ITシステムの物理的セキュリティーとはサーバー、ストレージ、ネットワークなどの各デバイスへの無許可アクセスを防止することを表します。
Things Cloud は NTTコミュニケーションズのクラウド上で、日本国内のデータセンターに構築されており、Enterprise Cloud の持つ強固な物理的セキュリティーが適用されます。
IoTの物理的セキュリティーはデータセンターのみでなく、デバイスに対しても守る必要がある点に留意してください。例えば、デバイスからのデータをリダイレクトしたり操作したり、デバイス自身の情報を得たり、デバイスの設定を変更されたりなど外部からの進入を防止する必要があります。IoTを用いたシステムで使用するデバイスの物理的セキュリティーについて必ず確認するよう注意してください。例えば設定用のポートに対する物理的なアクセス防止対策などが当てはまります。
Things Cloud プラットフォームのオペレーターとして、当社はテナントの内部システムを制御しません。テナントは、独自のシステムに対して、強力で慎重に検討されたセキュリティー概念に従う必要があります。
ネットワークセキュリティー
ネットワークセキュリティーは、ネットワーク上にあるデータへの無許可アクセス、データの改ざんなどを防止すると同時に安全で安定したネットワークサービスの接続を確保することも含まれます。
Things Cloud は、NTTコミュニケーションズ WideAngle マネージドセキュリティーサービスの定める基準をクリアしており、Web Application Firewallに守られています。 さらに Things Cloud はデータが改ざんされないよう、デバイスからアプリケーションまでエンド・ツー・エンドのHTTPS通信を行っています。すべての通信は、個々の認証および許可に従います。
下図は Things Cloud のネットワークダイアグラムです。センサーネットワーク内とセンサーネットワークからエージェントへの通信にはデバイスやゲートウェイ固有のプロトコル(ZigBee や Modbusなど)を使用しています。これにより、安全性の確保をセンサーネットワークに限定することができるようになります。エージェントは Things Cloud に対し https を使用します。同様に IoTアプリケーションは Things Cloud 上で https を使用します。もしIoTアプリケーションが独自のプロトコルを Web ブラウザ上で利用する場合、これらを https 対応にすることを推奨します。これにより、エージェントからエンドユーザーへのパス全体が保護されます。
上記の通り Things Cloud ではインターネットに対するサーバーポートや独自のプロトコルが必要ありません。このことは、セキュリティー確保に大きく貢献します。デバイスの Things Cloud 接続の単純化のみならず、デバイスの安全性確保も大きく単純化されます。IoTプロジェクトでは、Things Cloud で提供するセキュリティー特性を元に、全体のセキュリティー設計を十分行うようにしてください。
暗号化されていない通信
Things Cloud では、HTTPなどの暗号化されていないプロトコルを介して、古いデバイスや低電力デバイスへ接続することが可能です。このようなデバイスは暗号化を実行できないか、弱い暗号化方法(TLSv1.0など)のみに対応しているためです。古いデバイスと暗号化されていない通信の使用は任意であり、そのような通信が攻撃を受けやすいというリスクを考慮する必要があります。例えば、正規のデバイスのネットワークトラフィックを見るのに適切な位置にいる侵入者は、プラットフォームとのやり取りを記録して監視し、デバイスが提供する情報を取得してしまいます。暗号化された通信と暗号化されていない通信を混在させて使用すると、勢力的な侵入者に対する防御には効果がありません。これは、暗号化されたリソースへのリファレンスが暗号化されていない接続を介して送信される場合に、これらのリファレンスを簡単に解除できるためです。
そのため、トランスポートレベルの暗号化(SSL/TLS)を使用して、デバイスとプラットフォーム間のすべての通信を保護することをお勧めします。デバイスが安全でない通信を介して接続した場合、プラットフォームへのアクセスを確実に拒否するためにStrict-Transport-Security HTTPヘッダーを使用してください。
アプリケーションセキュリティー
アプリケーションセキュリティーとはソフトウェアレベルの安全性のことです。
Things Cloud では WideAngle マネージドセキュリティーサービスの定める基準をクリアするのみではなく、その他にもいくつかのベストプラクティスも追加しており、Things Cloud の安全性を確立しています。
- Things Cloud のすべての機能は公開されたセッションレスREST APIで実行されます。 Things Cloud ではセッションハイジャックが使えません。
- Things Cloud はIoTデータのストレージにSQLデータベースを使用しておらず、Things Cloud 自体もスクリプト言語に基づいていません。これは、Things Cloudに対しインジェクション攻撃が使えないということです。
- デバイスは Things Cloud のクライアントとなるので、デバイスへの一般的な攻撃が効きません。
- デバイスは個々に Things Cloud デバイス登録機能と接続されます。これにより、もしデバイス自体が改ざんされたり盗まれた場合でも、その特定デバイスの接続を切ることで問題が解決できます。
アクセス制御
Things Cloud は領域、ユーザー、ユーザーグループ、権限を基盤とした認証モデルを使用しています。まず、「領域」は同じ認証・権限ポリシーを使用するユーザーとユーザーグループの集まりを指します。「ユーザー」は Things Cloud にアクセス許可を持つ個人または外部システムを指します。すべてのアクセスは権限によって制御されます。
Things Cloud は各テナントにユーザーの属する領域を新しく作成します。この領域では各ユーザーとして好きなユーザー名を利用できます。領域をまたがって同一のユーザー名があっても区別されます。テナントAの「コム太郎」はテナントBの「コム太郎」とは別に扱われます。このユーザー名はユーザーの所属するテナントが利用するすべての Things Cloud アプリケーションで使用可能です。
それぞれの領域には自動的に管理者ユーザーが指定され、この管理者は自由にユーザーやユーザーグループを追加し、許可を与えることができます(グローバルロール)。各企業ではこの管理アプリケーションを利用して自由にユーザー、権限を管理することができます。
権限と所有者
システム上で特定の機能を実行するためには2つのコンセプトが必要になります。権限と所有者です。
権限はユーザーの実行できる機能を定義します。
Things Cloud では読み取り権限と管理者権限を区別します。読み取り権限は各ユーザーにデータの閲覧を許可します。管理者権限はユーザーにデータの作成・更新・削除を許可します。この2つの権限は Things Cloud 内の各データタイプ別に定義できます。例えば、インベントリ、メジャーメント、オペレーション、などにそれぞれ読み取り権限が存在します。
権限をより簡単に管理するために、権限はいわゆる「ロール」にグループ化されています。すべてのユーザーを複数のロールに関連付けることができ、ユーザーの権限を追加できます。
次のタイプのロールをユーザーに関連付けることができます。
グローバルロール : テナント内のすべてのデータに適用される権限
インベントリロール : デバイスのグループに適用される権限
インベントリ内のオブジェクトはすべて所有者が存在します。所有者は自分の持つ他の権限に関係なく常に以下のことができます。
- 所有するオブジェクトの閲覧、更新、削除
- 所有オブジェクトに関連するデータの作成、閲覧、更新、削除
例えば、インベントリ内にあるスマートメーターを所有していたとします。所有者である限り、他の権限がなくてもこのスマートメーターが抽出したすべてのデータを利用することができます。
インベントリには「作成」機能があります。この機能の権限のみを持つユーザーは新しいオブジェクトをインベントリ内に作成できますが、データの閲覧・変更・削除などはできません。この機能はデバイス設置のときに利用できます。この「作成」権限でオブジェクトを他のオブジェクトへ子デバイス・子アセットとして登録することもできます。
ただし、更新権限、または該当のインベントリロールがない限り、自分で作成していないデバイスやグループを管理することはできません。
このコンセプトは、デバイスに最小限のアクセス許可を割り当てるのに役立ちます。
マネージドオブジェクトへのアクセス制限
Things Cloud を使用すると、すべてのマネージドオブジェクト、メジャーメント、イベントなどに適用できるグローバルなアクセス権限を設定できます。同時に以下へのアクセス制限を設けることもできます。
- 特定のマネージドオブジェクトまたは複数のマネージドオブジェクト
- 単一のユーザーまたはユーザーグループ
- 個々のフラグメント
ロールの管理と権限の割り当て
グローバルロールおよびインベントリロールは、管理アプリケーションのロールページにて権限を作成・管理することができます
使用可能なデフォルトロール、およびグローバルロールとインベントリロールの作成と割り当ての詳細については、「ユーザーガイド」の管理セクションにある 権限の管理 でご覧できます。
APIを使用した権限管理の詳細については、Things Cloud OpenAPI仕様内の User APIをご覧ください。
グローバルにアクセス可能なオブジェクト
特別な権限のないユーザーも含め、全てのユーザーにオブジェクトへアクセスする許可を与えることができます。c8y_Global
というフラグメントを新しく追加してください。
セキュリティ管理
セキュリティーに関連するイベントが発生するたびに、監査するためにログに記録する必要があります。セキュリティーに関連するイベントは、アプリケーションレベルでも、IoT ネットワークでも発生する可能性があります。アプリケーションレベルでのセキュリティー関連イベントの単純な例は、アプリケーションへのログインです。ネットワークレベルのセキュリティー関連イベントの例としては、デバイス上のローカルソフトウェアまたはローカルコントロールを使用してデバイスを操作することが挙げられます。
セキュリティーに関連するイベントを捕捉するために、Things Cloudは監査インターフェースを提供します。このインターフェースにより、アプリケーションやエージェントは監査ログを書き込むことができます。監査ログは永続的に保存され、書き込まれた後に外部から変更することはできません。Things Cloud 自体も、ログインとデバイス制御操作に関連する独自の監査レコードを書き込みます。
セキュリティーインシデントを報告するには、製品サポート までご連絡ください。
概略
Things Cloudのセキュリティーはさまざまなレベルに対処しています。
すべてのビジネスパートナーおよびサービスプロバイダーはセキュリティー証明書を認証しています。Things Cloudは、個々の認証および認可方法によってネットワークセキュリティーの側面を扱っています。
Things Cloudとの接続はHTTPSテクノロジを使用して確立されます。
すべてのテナントは、ユーザーおよびユーザーグループを追加または廃止するための全権限を与えられています。テナントはエージェントとデバイスにも権限を割り当てます。