こんにちは、Customer Reliability Engineer (CRE) の三國です。セキュア・プロビジョニングサービスの SORACOM Krypton が新しく Azure IoT Hub に対応しましたのでご紹介します。
このブログでは、SORACOM Krypton がどのようなサービスなのか、Azure IoT Hub に対応することでどのようなことができるのかをご紹介します。利用方法の詳細は、以下のユーザードキュメントをご参照下さい。
Azure IoT Hub とは
Azure IoT Hub は IoT デバイスから Azure サービスへデータを送信したり、Azure サービスから IoT デバイスへ命令を送信したりするための橋渡しとなるサービスです。Azure の IoT サービス群を理解するには以下の Azure のドキュメントが参考になります。
SORACOM Krypton とは
IoT において重要な課題の一つに、デバイスとクラウドサービス間の認証があります。たとえばデバイスのデータを Azure IoT Hub へ安全に送信したいのであれば、認証が必要です。このとき、証明書などの認証情報をどのようにデバイスへ配布すればよいでしょうか。デバイスが 1 台であれば PC をデバイスに接続して手作業で配布しても良いかもしれません。しかし 100 台、1000 台になったらどうでしょう。
セキュア・プロビジョニングサービスの SORACOM Krypton は、デバイスへ認証情報を安全かつ効率的に配布するために利用できます。
SORACOM Krypton の利用イメージ
準備として、前述のユーザードキュメントに沿って Azure や SORACOM のセットアップ、IoT デバイスと SORACOM IoT SIM のセットアップをします。IoT デバイスは SORACOM Onyx LTE USB ドングルで IoT SIM を利用する Raspberry Pi を例とします。
SORACOM Krypton を利用しての認証情報の受け取り
以下のように、IoT デバイスで 2 回 SORACOM Krypton のエンドポイント (krypton.soracom.io) へ HTTP リクエストを送ります。
pi@raspberrypi:~ $ ID=$(curl -s -X POST https://krypton.soracom.io:8036/v1/provisioning/azure/iot/register | jq -r .operationId) pi@raspberrypi:~ $ RES=$(curl -s https://krypton.soracom.io:8036/v1/provisioning/azure/iot/registrations/${ID})
これだけで、変数 RES
には以下のような情報が格納されます。
- Azure IoT Hub の接続に用いる X.509 ルート証明書
- Azure IoT Hub の接続に用いる X.509 デバイス証明書
- Azure IoT Hub の接続に用いる X.509 秘密鍵
- Azure IoT Hub のホスト名
- Azure IoT Hub でプロビジョニングされたデバイス ID
変数 RES
から、それぞれファイルや変数に保存していきます。具体的な方法は「getAzureIotDeviceRegistrationStatus API のレスポンスの値をファイルや変数に保存します」をご覧ください。
Azure IoT Hub への接続SORACOM Krypton を利用しての認証情報の受け取り
先ほど受け取った情報 RES
の内容を基に、mosquitto_pub などの MQTT クライアントで Azure IoT Hub へデータを送信します。以下のような表示になります。
pi@raspberrypi:~ $ mosquitto_pub -d -h ${iot_hub_hostname} -p 8883 \ --cafile ./rootCaCertificate.pem \ --cert ./certificate.pem \ --key ./privatekey.pem \ -i ${device_id} -u "${iot_hub_hostname}/${device_id}/?api-version=2021-04-12" \ -t "devices/${device_id}/messages/events/" \ -m '{ "message": "Hello from Device with Krypton" }' Client myDevice-29505xxxxxxxxxx sending CONNECT Client myDevice-29505xxxxxxxxxx received CONNACK (0) Client myDevice-29505xxxxxxxxxx sending PUBLISH (d0, q0, r0, m1, 'devices/myDevice-29505xxxxxxxxxx/messages/events/', ... (49 bytes)) Client myDevice-29505xxxxxxxxxx sending DISCONNECT
このように、なにも認証情報を持っていないデバイスでも、SORACOM Krypton へ HTTP リクエストを 2 回実行するだけで認証情報を取得して Azure IoT Hub へ接続できることがわかります。
安全に認証情報を配布する仕組み
ここからは、SORACOM Krypton の仕組みとその背景について解説します。
IoT デバイスは、SORACOM プラットフォーム上にある SORACOM Krypton のエンドポイントへアクセスして、認証情報の配布を要求します。このとき、SORACOM Krypton へアクセスのためにセキュリティを担保する方法が 2 つあります。
- SORACOM の IoT SIM が利用する安全なセルラー回線経由
- SORACOM Endorse による、IoT SIM カード内に保存された秘密情報を用いた認証 (インターネット経由も可)
これが、SORACOM Krypton が「セキュア・プロビジョニングサービス」と呼ばれる「セキュア」の部分の所以です。
効率的に認証情報を配布する仕組み
デバイスへ配布するための認証情報は、いつ用意しておくのが良いでしょうか。IoT においては、どれだけの数のデバイスがいつ必要になるかの予測が難しいという特性があります。デバイスは一斉に利用開始されるわけではありません。まだ利用されない認証情報を用意しておくのは無駄にもなります。そのため、必要になったタイミングで認証情報を用意することが効率的です。
認証情報を用意するとき、クラウド側からは「新規に IoT デバイスが作成された」と見えます。この「新規に IoT デバイスを作成する」ことは「プロビジョニング」とも言い換えられます。SORACOM Krypton が「セキュア・プロビジョニングサービス」と呼ばれる「プロビジョニング」の部分の所以です。
今回サポートされるようになった Azure IoT Hub デバイスのプロビジョニングにおいては、SORACOM Krypton は Azure IoT Hub Device Provisioning Service (DPS) を利用します。SORACOM Krypton は Azure IoT Hub DPS を利用して、デバイスが必要になったタイミングでの認証情報の取得を支援します。
Azure IoT Hub Device Provisioning Service (DPS) の詳細は以下の Azure のドキュメントを参照してください。
SORACOM Krypton と Azure IoT Hub の組み合わせでの使いどころ
先ほど「SORACOM Krypton の利用イメージ」で紹介したように、IoT デバイスは簡単に Azure IoT Hub の認証情報を取得できます。この認証情報を用いて、Azure の各種 IoT サービスを利用してください。
さらに他の SORACOM サービスと組み合わせとしては、Azure IoT Hub へのプライベートネットワーク接続が考えられます。
- SORACOM Door を利用して Azure VPN Gateway・Azure Private Link 経由での接続
- SORACOM Direct を利用して Azure Express Route・Azure Private Link 経由での接続
SORACOM Door、SORACOM Direct を利用する具体的な方法は以下のブログを参照してください。
SORACOM Krypton がその他に対応しているサービス
SORACOM Krypton は Azure IoT Hub だけでなく、AWS IoT Core、SORACOM Inventory、SORACOM Arc のプロビジョニングにも利用できます。また、Amazon Cognito から AWS IAM の一時的な認証情報の取得もできます。詳しくはユーザードキュメントを参照してください。
デバイスの認証を支援するその他の SORACOM サービス
SORACOM Krypton はデバイスへ認証情報を安全かつ効率的に配布するために利用できますが、一方でデバイスへ認証情報を持たせない、認証は SORACOM のサービスにやってもらうという考え方もあります。
認証を SORACOM へ肩代わりさせるサービスの例としては、以下の 3 つがあります。
これらのサービスについての解説ブログもありますので、アーキテクチャ選定に活用してください。
まとめ
SORACOM では引き続き、IoT におけるお客様の課題を解決できるよう、継続してサービスを提供してまいります。SORACOM Krypton と Azure の組み合わせ、是非ご利用ください。
― ソラコム三國 (mick)