見出し画像

23. Ubuntu の TPM で Device Provisioning Service を試す

前回の記事                        次回の記事

はじめに

前回でAMD64 系の Ubuntu の基本的なセットアップが終わったので、色々と試していきます。Lenovo M70q は TPM1.2 対応のセキュリティチップが装備されているので、それを使った Azure IoT Hub への接続を試みます。

HW TPM による Azure IoT Hub への機器接続

Azure IoT Hub への機器接続の基本は、「2. IoT Hub に接続する機器側アプリプロトを開発する」で解説しました。Azure IoT Hub への IoT 機器の接続認証については、「デバイスを IoT Hub に認証」の記載にある通り、

  • X.509 認証の適用

  • デバイスとして SAS トークンを使用する

の二種類が用意されています。ちなみに、サービス側(機器から送信されたデータの受信や、Device Twins Desired Properties の更新・Device Twins Reported Properties の参照、Direct Method 起動、デバイスの登録・削除・検索、Job の生成・管理等)に対する権限は、「IoT Hub へのアクセス制御」に記載があって、

  • Azure AD 統合

  • 共有アクセス署名(SASトークンの使用)

の二種類が用意されています。これまでの記事では後者を使ったサービス側の実装を行ってきました。後者は Azure IoT Hub へのサービス側へのアクセスの役割をグループ化し、そのグループごとに SAS キーを用意して、その SAS キーを知っていれば誰でもアクセスできるようになっています。前者は、更に、Azure AD を使った IDベースの認証により、”誰が”アクセスできるのかきめ細かい設定が出来るようになっています。

DPS:Device Provisioning Service

さて、本題です。Azure IoT Hub の機器接続の認証の説明には HW TPM 云々の記載はありません。HW TPM による認証設定は、Azure IoT Hub への機器の接続認証設定を自動化する、Device Provisioning Service(略して DPS)というサービスにおいて行うようになっています。
DPS は、Microsoft Docs の「Azure IoT Hub Device Provisioning Service とは」で詳細に解説されています。
このページには、DPS とは何か、何故必要か、どの様なシナリオで活かされるかが詳細に書かれています。是非、隅から隅まで読んで頭に叩き込んでください。
IoT デバイス、または、IoT Edge を Azure IoT Hub に接続するには、接続先の Azure IoT Hub の URL と、接続用の秘密情報(SAS Key または、X.509証明書)が必要になるのが基本で、Azure IoT Hub への事前登録も必要です。 IoT ソリューションに接続する前に、これらの情報を機器側にセットアップしておく必要があるという事です。この様な接続に必要な設定作業を”プロビジョニング”と言います。数~数十台の機器が専用の IoT ソリューションに接続するだけなら、機器設置時に人を現場に派遣していちいち設定作業を行うのは可能だとは思いますが、数百台以上の機器がつながる様な中・大規模な場合はかなり大変な作業になります。また、専用の小規模な IoT ソリューションに接続する様な機器ならば工場出荷時に接続用の情報を仕込むことも可能ですが、汎用的な機器で様々な IoT ソリューションに接続される可能性のあるような機器であれば、工場出荷時の接続用情報の確定も不可能です。Azure IoT Hub のインスタンスが異なれば接続先のエンドポイントも異なります。機器の製造者が契約する Azure Subscription とは異なる Azure Subscription の Azure IoT Hub に接続する場合もあるでしょう。
一方、DPS は Azure IoT Hub とは異なり、どの Subscription で作成したインスタンスでも、不変なグローバルエンドポイントでサービスを提供するので、機器が自分が誰であるかを示す情報と、Scope ID という各 DPS 毎に割り振られる識別子情報のみでの利用が可能です。

https://learn.microsoft.com/ja-jp/azure/iot-dps/media/about-iot-dps/dps-provisioning-flow.png

DPS では、Azure IoT Hub で使える対象キーと X.509 証明書に加えて、HW TPM も利用が可能です。それぞれどれが良いかは、「Azure IoT デバイス製造元向けのセキュリティプラクティス」を確認してください。個人的には、対象キーの場合は第三者に漏れてしまったらアウト(平文で保存していた場合機器のHDD を覗かれたらダダ洩れ)だし、X.509 証明書の場合はお高め(正式な認証局が発行したルート証明書以外は全部なんちゃって証明書)だし有効期限もあるし…ということで、可能なら HW TPM による DPS 接続が良いと考えています。TPM の構成証明については、Azure IoT Hub Device Provisioning Service - TPM の構成証明 | Microsoft Learn に詳しく説明されています。今回は、Lenovo M70q のセキュリティチップを使って、DPSを試そうと思います。

Device Provisioning Service を使ってみる

先ずは、実際に DPS インスタンスを作成して DPS の動きを試すところから始めます。他の Azure サービスと同様、Azure Portal で Azure Marketplace から作成を行います。

Device Provisioning Service インスタンスの作成

検索窓で、”Device Provisioning…”で検索できると思いきや、一向に候補に出てこないので、”IoT”で検索候補に挙がったものの中から探してください。多分、”IoT Hub デバイス…”で検索できるんじゃないかと思います。手順的には、下図の通り。
”マイクロソフトさん、用語は統一してね”

Azure Portal で DPS を作成

Azure IoT Hub のリンク

DPS は Azure IoT Hub に機器を接続するためのプロビジョニングの部分だけを担当するサービスなので、「IoT ハブと Device Provisioning Service とリンクさせる」を参考に、既に作成済みの Azure IoT Hub インスタンスをリンクします。以下の手順です。

IoT Hub インスタンスのリンク

対象キーによる接続を試す

ここから先は

24,024字 / 12画像

2022年3月にマイクロソフトの中の人から外の人になった Embedded D. George が、現時点で持っている知識に加えて、頻繁に…

この記事が気に入ったらサポートをしてみませんか?