IBM Developer Japan Webサイトは2021年3月15日をもって終了となり、日本語コンテンツの一部は、オープンソースとして、提供予定です。 URLはこちら

IoT デバイスを管理する

多数のデバイスからなる複雑な IoT システムの場合、システム・アーキテクチャーにデバイス管理機能を組み込む必要があります。IoT デバイスはセキュリティー上のリスクにさらされた環境内にデプロイされることがよくあります。こうしたデバイスを積極的にモニタリングし、デバイスで障害が発生した場合に回収したり、リスクにさらされた環境内でも引き続き運用できるよう更新したりしなければなりません。

デバイス管理機能は、デバイスのセキュリティー保護とモニタリングを容易にすることによって、デバイスとそのデータを保護するために役立ちます。デバイス管理機能により IoT 開発者は、例えばデバイスを工場出荷時設定にリセットしたり、セキュリティー問題にパッチをあてるため、あるいはバグを修正するために更新を適用したりするといった操作を実行することで、IoT デバイスを制御することができます。

デバイスの通信にはさまざまなプロトコルとデータ形式が使用されるため、デバイスの数が増えると、それだけ IoT システムが複雑化することから、IoT デバイス管理の重要性が増すと同時に、管理するのがより困難になってきます。

デバイス管理の課題

IoT デバイスの管理とメンテナンスに伴う主な課題としては、セキュリティー、相互運用性、デバイスに伴うリソースの制約、スケーラビリティー、可用性が挙げられます。

セキュリティー

セキュリティーは IoT システムのあらゆる層で重要となる考慮事項です。IoT デバイスのセキュリティーを管理しやすくするには、デバイス管理サービスを利用して、セキュアなデバイス登録および認証サービスを提供したり、暗号化されたマシン間 (M2M) 通信をサポートしたりする方法があります。暗号化された通信では一般に、アーキテクチャーのすべての層で SSL やアクセス・トークンなどの標準的なセキュリティー対策を講じることになります。IoT システムにデバイス管理サービスを実装して、さまざまなセキュリティー上の課題に対処する方法について詳しくは、記事「Top 10 IoT Security Challenges」を参照してください。

相互運用性

現在もそうですが将来にわたっても、IoT システム内には、等級も、製造メーカーも、使用する通信プロトコルもさまざまに異なるデバイスがデプロイされることになるでしょう。したがって、使用するデバイス管理ツールが各種のデバイスを一貫性のある方法で管理できるようでなければ、異機種混合のデバイス間での相互運用性を確保できません。デバイス管理サービスを選択する際は、そのサービスが標準的な一連のデバイス管理プロトコルをサポートしているか、異機種混合のデバイスの一括管理を抽象化するプロトコルと API を実装しているかを判断基準にすることをお勧めします。また、長期的なサポートを可能にするために、IoT リファレンス・アーキテクチャーに従って、業界標準のデータ転送プロトコル (MQTT など)、あるいはそれよりも高度なデバイス管理指向のプロトコル (LMW2M、OMA-DM、TR-069 など) を採用するようにしてください。

デバイスに伴うリソースの制約

多くの場合、IoT デバイスには制約があります。つまり、使用できる電力、メモリー、処理能力、接続性が限られています (IoT デバイスの詳細については、この IoT ハードウェア・ガイドを参照してください)。これらの制約は、デバイスをリモートから管理して効率的にリモート・オペレーションを適用できるかどうかに影響します。バッテリー駆動型のデバイスの場合に極めて重要となるのは、デバイスがデバイス・マネージャーと通信して、利用可能な電力を使い切ることなく更新などの処理を実行できるかどうかという点です。電源が枯渇すると、工場出荷時設定へのリセットやファームウェア更新などの処理が中断されて、デバイスが使用不可能になる恐れがあります。

LWM-2M などの軽量の (リソースのオーバーヘッドが少ない) デバイス管理プロトコルは、効率を高め、デバイス自体が行わなければならない処理を最小化するように設計されているため、IoT デバイスで使用するプロトコルとしては有力な選択肢です。このような軽量のデバイス管理プロトコルを使用すれば、デバイスとアップストリームの管理サービスとの間の通信に必要となる帯域幅も頻度も少なくなることから、計算能力やバッテリーなどのリソースを節約できます。一方、軽量のプロトコルの欠点としては、高度なデバイス管理機能と対策 (データ転送エラーの処理、信頼性、セキュリティーなど) を独自仕様の実装に頼らなければならない場合がある点があります。

スケーラビリティー

システムに追加されるデバイス数の増加に応じて多数のデバイスを登録して通信できるよう、利用するデバイス管理サービスはスケーリング可能なものでなければなりません。随時実行する必要が生じる日常的なデバイス管理処理の数の増加に対処できるようなデバイス管理サービスを選択する必要があります。

例えば複雑な IoT システムでは、数千台もの多種多様なデバイス (センサー、アクチュエーター) を世界中のさまざまな地理的地域のネットワーク経由で接続することになります。これらのデバイスには、相互に依存するものもあれば、システム更新を同期した形で行わなければならないものもあるでしょう。そのような場合、デバイスを手作業でモニタリングして管理するのは不可能となるため、グループ単位でのリモート制御、リモートからのデバイスの状態変更、新しいデバイスのプロビジョニング、デバイス・ディスカバリーといった高水準の機能が必要になります。つまり、IoT デバイスの管理をスケーリングできるかどうかの鍵は、自動化にあります。

可用性

デバイス管理サービスによって可用性を確保するためには、そのサービスがデバイスを認識するだけでなく、ネットワークのコンテキストも認識するようでなければなりません。デバイスの管理には、デバイスの現在の状態をモニタリングして、更新中デバイスのリブートや、バッテリー残量が少ないデバイスに更新を適用するなどのインシデントを防ぐことも含まれます。さらに、ネットワークの状態を大局的に認識すること、デバイスの状態と使用可能な電力を認識すること、あるいはメンテナンス・オペレーションを実行する前にデバイスの現在の使用状況を把握することも必要です。デッドロックを防ぎ、システムの混乱を最小化するためには、ファームウェア更新やシステム・リセットなどのオペレーションの管理を同期できるデバイス管理サービスを選択する必要があります。

デバイス管理プロトコル

デバイスの管理に伴う上述の課題の多くには、標準的なデバイス管理プロトコルを採用するか、IoT プラットフォームで提供されるデバイス管理サービスを利用することで対処できます (IoT ソリューション内で IoT プラットフォームを使用すべき理由について詳しくは、私が以前に作成した developerWorks 記事を参照してください)。

通常、IoT デバイスはマシン間 (M2M) 通信を行うために、軽量の接続プロトコルを使用します。こうしたプロトコルの例としては、XMPP (XML ベースのチャット・プロトコル)、CoAP (Constrained Application Protocol)、MQTT (MQ Telemetry Transport) がありますIoT 通信プロトコルについて詳しくは、この接続およびネットワーク・プロトコルのガイドを参照してください。

デバイス管理プロトコルは上述のような汎用接続プロトコルをベースに、デバイスの登録と認証をサポートし、デバイスの機能を照会して、デバイス間で一貫した処理を行います。

ブロードバンド業界とモバイル業界で標準化されて IoT デバイスに適用されているデバイス管理プロトコルとしては、TR-069、OMA DM、LWM2M があります。

  • TR-069: BroadBand Forum の TR-069 Customer Premises Equipment (CPE) WAN Management Protocol (CWMP) は、モデム、ルーター、ゲートウェイ、ホーム・デバイス (セットトップ・ボックスなど) を含むブロードバンド機器を管理することを目的に SOAP をベースに開発され、2004 年に初めてリリースされたプロトコルです。このプロトコルは IoT スマート・ホーム・アプリケーション内で適用されています。
  • TR-369 (USP): TR-369 User Services Platform プロトコルは、TR-069 の対象範囲を拡大したバージョンであり、より IoT 指向になっています。BroadBand Forum のサイトによると、このプロトコルは TR-069 の自然な進化であり、TR-069 の「Device:2 Data Model」の拡張バージョンを使用してデバイスの操作 (ファームウェア・アップグレード、リブートなど)、ネットワーク・インターフェース、サービス機能 (IoT 機能、VoIP など) を表します。
  • OMA DM: Open Mobile Alliance Device Management (OMA DM) 仕様は、LWM2M に先行する仕様で、携帯電話、PDA、タブレット用に開発されて 2003 年に初めてリリースされました。OMA DM は、帯域幅が限られたデバイスを対象とした仕様であり、HTTP、WAP、SMS などの一連のプロトコルによる M2M 通信をサポートします。OMA DM を IoT デバイスに適用して、プロビジョニング、構成、ファームウェア更新、障害管理をサポートすることもできますが、OMA DM は LWM2M ほど軽量ではありません。
  • LWM2M: OMA の Lightweight Machine to Machine (LWM2M) プロトコルは、例えばセンサー・ネットワーク内などセルラー・ネットワーク経由で通信するデバイスの管理を目的に設計されています。LWM2M は一般に CoAP を使用して実装されます。LWM2M プロトコルをサポートするクライアントとサーバーのオープンソース実装はいくつもあります。その例としては、ARM mbed、 Eclipse の LeshanWakaama が挙げられます。

IoT デバイス管理は活発な標準化の最中にある分野なので、かなり不統一が残っています。デバイス管理機能を記述する、さまざまな IoT リファレンス・アーキテクチャーが存在するだけでなく、IBM Watson IoT Platform をはじめとするほとんどの IoT プラットフォームでは、その特定のプラットフォームで使用する IoT デバイスの管理要件に合わせてカスタマイズされたデバイス管理サービスを実装しています。

IBM Watson IoT Platform デバイス管理プロトコルは、MQTT で動作する軽量のデバイス管理プロトコルです。IBM Watson IoT Platform はマネージド・デバイスと非マネージド・デバイスを両方ともサポートしています。マネージド・デバイスが実行するデバイス管理エージェントには、Watson IoT Platform のデバイス管理サービスに接続して通信するためのロジックが組み込まれています。

デバイス管理機能

IoT プラットフォームには通常、デバイスを管理するための API とダッシュボードが用意されています。プラットフォームのダッシュボードと API を使用して、デバイスの登録を管理したり、リモート・オペレーションをトリガーしたりできます。さらに、デバイスのモニタリング、検索、(製造メーカーやシリアル番号などを基準とした) フィルタリングを行うこともできます。

IoT プラットフォームが提供するデバイス管理サービス、標準的なデバイス管理プロトコルを実装するスタンドアロンのサービス (Eclipse Leshan サーバー)、あるいはデバイス管理サービスを組み合わせて採用するかを決める際は、鍵となる決定要因として以下の機能に注目してください。

  • プロビジョニング: 新しいデバイスがシステムに追加されるとき、そのデバイスはデバイス管理サービスに確実に登録されるようでなければなりません。さらに、デバイスのメタデータも登録される必要があります。デバイス管理サービスに登録することによって、デバイスに ID と資格情報が提供されるからです。
  • 認証: 認証サービスにより、デバイスの ID が設定されます。デバイスは、他のデバイス、アプリ、サービスと通信するときには常に、プロビジョニング・プロセスで最初に作成された ID を使用します。これによって、通信相手にそのデバイスの信頼性と信ぴょう性を保証します。
  • 構成: 一般的なデバイス管理サービスでは、IoT デバイスに新しい構成を直接適用したり、新しい構成をブロードキャストして複数のデバイスを一括で更新したりできるようになっています。さらに、デバイス構成の依存関係の管理もサポートしています。
  • モニタリング & 診断: デバイス管理サービスでは、デバイスのログとメタデータの追跡も行えるようでなければなりません。例えば、デバイスの機能、ファームウェア・バージョン、デバイスの通常の場所、デバイスの ID とステータスなどの追跡です。デバイス管理サービスでは、ダッシュボードまたは API を介して、この情報にエラーおよび接続のログを加えて公開し、正常性とステータスのモニタリングや、診断とリモートでのデバッグに使用できるようにしていることも珍しくありません。ログとステータスが使用できるようになっていれば、例えばデバイスが一定の期間データを生成していない場合にアラートを生成することもできます。
  • リモート・オペレーションのスケジューリング: 多くのデバイス管理サービスでは、リモート・オペレーションのスケジューリングをサポートしています。これには、デバイスのリブート、デバイスの有効化または無効化、工場出荷時設定へのリセット、OTA アップデートによる新しいファームウェアのダウンロードと更新のトリガーなどのオペレーションが含まれます。こうしたメンテナンス・オペレーションを手作業で操作することなくリモートから行うことができると、デバイスの寿命全体にわたって時間と費用を節約できるだけでなく、手作業によるエラーを回避し、プロセス全体でデバイスのダウンタイムを最小限にすることができます。また、物理的にアクセスしにくい場所に設置されたデバイスを手作業で回収したり更新したりする必要もなくなります。
  • 自動化: IoT システム内にデプロイされたデバイスの数と種類が増えてくると、自動化が必須となります。自動化により、リモート・オペレーションの一括適用が単純化され、例えばセキュリティーの脆弱性に対処するために、複数のデバイス上のファームウェアを迅速に更新できます。デバイスによっては、特化したデバイス管理プロトコルでこうした更新を適用する場合もありますが、Linux ベースのデバイスでは、Kubernetes などのオープンソースのオーケストレーション・ツールを使用して、ファームウェア、アプリケーション、運用環境を格納した Docker コンテナーを複数のデバイスにデプロイできます。
  • 回収: デバイスは最終的に故障するか、サービス寿命が終わると置き換えられます。デバイス管理サービスでは、デバイスに関連付けられたすべてのトークンと ID を取り消してシステム内の他のデバイス、アプリ、サービスと通信できなくすることなどにより、デバイスを安全に回収できるようでなければなりません。

まとめ

デバイス管理サービスを利用すると、デバイスのプロビジョニングから認証、構成、メンテナンス・オペレーション、モニタリング、そして回収に至るまでのライフサイクル全体を通して、デバイスの管理を自動化できます。スケーラブルで安全かつ相互運用可能な IoT ソリューションを実現するには、デバイス管理が非常に重要なコンポーネントとなります。