当社のsecure provisioning service(セキュア初期設定サービス)であるSoracom Kryptonは、Azure IoT Hub Device Provisioning Service(以下DPS)をブートストラップパートナー(bootstrap partner)としてサポートしています。今回は、Soracom Kryptonを利用してAzure IoT EdgeとしてAzure IoT Hub(IoTデバイスの管理サービス)にデバイスを登録する方法をご紹介します。
このブログでは、Soracom Kryptonを利用してAzure IoT Hubにデバイスを登録する手順について、より詳細なドキュメントへのリンクを掲載し、さらにAzure IoT Edgeとして登録する手順を中心に紹介します。
Soracom Kryptonを使う理由
IoTにおける重要な課題の1つは、デバイスとクラウドサービス間での認証です。例えば、デバイスからAzure IoT Hubに安全にデータを送信したい場合、デバイスを認証する必要があります。証明書などの認証情報は、どのようにデバイスに配布すべきでしょうか?デバイスが1台しかない場合は、PCを直接デバイスに接続し、手動で証明書を配布することができます。しかし、100台や1000台のデバイスの場合はどうなるでしょうか?
Soracom Kryptonを使用すると、認証情報を安全かつ効率的にデバイスに配布することができます。
はじめに
デバイスへのAzure IoT Edgeのインストール
まず、Microsoftのドキュメントに従って、デバイスにAzure IoT Edgeをインストールする必要があります。IoT Edge設定ファイルの編集方法と、そののちのステップで動作が実行されていることを確認する方法について説明します。
事前セットアップ
ユーザーマニュアルに記載されている手順に従って、Azure IoT EdgeとSoracom Kryptonをセットアップし、IoT デバイスとSoracom IoT SIM をセットアップします。今回は、IoT デバイスはUSBモデム(Soracom Onyx LTE USB modem.)を使用します。
Azure IoT Edgeデバイスとして登録する場合は、「Add an enrollment group to the DPS」セクションで 「IoT Edge Device」を「True」に設定します。
デバイスの登録
このステップでは、デバイスをAzure IoT EdgeデバイスとしてAzure IoT Hubに登録します。Soracom KryptonのAPIの実行手順はこちらに記載されており、以下のAPIを順次実行していきます。
- registerAzureIotDevice:デバイスをAzure IoT Hubに登録します。
- getAzureIotDeviceRegistrationStatus:登録されているAzure IoT Hubデバイスの認証情報を取得します。
上記2つ目のAPIで取得した認証情報を元に、Azure IoT Hubに接続します。Azure IoT Edgeデバイスとして接続する場合は、取得した認証情報を元にAzure IoT Edgeの設定ファイルconfiguration file (config.toml)を作成する必要があります。
この方法でAzure IoT Edgeデバイスを登録する場合、Soracom Kryptonがデバイスに代わってDPSへの登録用APIを実行します。その後、デバイスは、Soracom KryptonのgetAzureIotDeviceRegistrationStatusのAPIで取得した証明書を使用して、Azure IoT Hubに直接接続します。そのため、Azure IoT Edgeの設定ファイルconfig.tomlで指定する「[provisioning]」の「source」プロパティは「manual」となります。デバイスはDPSに直接リンクされていないため、「source」は「dps」ではないことに注意してください。
[provisioning]
source = "manual"
# Specify the value of host in the getAzureIotDeviceRegistrationStatus API response
iothub_hostname = "IOTHUB_HOSTNAME"
# Specify the value of deviceId in the getAzureIotDeviceRegistrationStatus API response
device_id = "DEVICE_ID"
[provisioning.authentication]
method = "x509"
# Save the certificate value in the getAzureIotDeviceRegistrationStatus API response to a file and specify the file path.
identity_cert = "file:///<path to device cert>"
# Save the privateKey value in the getAzureIotDeviceRegistrationStatus API response to a file and specify the file path.
identity_pk = "file:///<path to private cert>"
動作確認
最後に、Azure IoT Edgeがデバイス上のAzure IoT Hubと正しく連携していることを確認します。まずは、設定ファイルの内容がIoT Edgeに反映されていることを確認します。
sudo iotedge config apply
次に、Microsoftの資料に基づき、Azure IoT Edgeにモジュールを配置して、Azure IoT Edgeのランタイム動作を確認し、配置したモジュールが動作していることを確認します。Azure IoT Edgeが正常に動作し、edgeAgentモジュールの Runtime Status
がrunning
と表示されていれば、全ての設定や準備は成功です。
おわりに
このように、Soracom Kryptonを使用すると、デバイスをAzure IoT EdgeデバイスとしてAzure IoT Hubに簡単に登録することができます。上記の詳細な手順を行えば、デバイスの初期設定を自動化し、迅速かつ効率的にモジュールを展開し、動作させることができます。