Howto

Armadillo-IoTでSORACOM Beamを利用する

SORACOM Beam は、株式会社ソラコムが提供している、IoT デバイスにかかる暗号化等の高負荷処理や接続先の設定を、クラウドにオフロードできるサービスです。12

SORACOM Beam

Armadillo-IoTシリーズでは、SORACOM AirのSIMを使用することで、SORACOM Beamを利用することが出来ます。

このサービスの特徴は3つあります。

  • 暗号化による安全なデータアップロード・ダウンロード
    • Beamを使えば、暗号化処理をクラウド側にオフロードできます。リソースの乏しい IoT デバイスであってもデータの暗号化を利用でき、安全に通信を行うことができます。
  • 接続先の切り替え
    • デバイスの出荷前後でデータの送信先を切り替えたり、システムの変更によって接続先サーバが変更になった場合に一括で接続先を切り替えたりすることができます。多数のデバイスを管理する際に特に役立つ機能です。
  • クラウドサービスへの接続
    • データの送信先をクラウドサービスへ振り向けることによって、IoT デバイスから各種のクラウドサービスを容易に利用できるようになります。クラウドサービスへアクセスするための認証情報をIoTデバイスに持たせることなく、通信が可能となります。

Beam概要

ここでは、以下の流れに沿ってソラコムが用意している Sandbox サーバを使って Beam の設定方法と動作の確認をします。TCPエントリポイント、HTTPエントリポイントの利用例をご紹介します。3

Beam のエントリポイントには、Air SIM 以外から接続できません。動作確認の際には Air SIM で通信を行っていることを確認してください。

Air SIM グループの作成と設定

SORACOM Beam の設定はグループ単位で行います。そのため、Beamを使うためには Air SIM をグループに登録する必要があります。今回は、SORACOM Beam の動作確認をするための専用のグループを作成してそこに Air SIM を登録してみましょう。

まず Air SIM 管理画面を開いて、SORACOM Beam による通信を行いたい Air SIM にチェックマークを付けます。続いて、[操作] ボタンから [所属グループ変更] を選択します。

グループの変更

Air SIM の所属グループを選択するためのダイアログが表示されますので、[新しい所属グループ] ドロップダウンから [新しいグループを作成…] を選択します。

新しいグループ

以下のようなグループ作成ダイアログが表示されます。グループの名称を入力して [グループ作成] ボタンをクリックします。 今回は “hello beam” というグループ名で作成してみましょう。

グループ作成

[グループ作成] ボタンを押すと元の [SIM の所属グループ変更] ダイアログに戻ります。 [新しい所属グループ] ドロップボックスが、今作成した hello beam グループになっていることを確認し [グループ変更] ボタンを押します。

グループ変更

TCP / SSL: TCPエントリポイントの設定例

Beam を使った通信では、デバイスから Beam のエントリポイントまでは閉域網での接続であるため平文でも安全に通信を行うことができます。さらに、 Beam から外部サーバへの通信は SSL で暗号化して送信できるため、暗号化処理による負荷をかけずに安全に通信を行えます。

このステップでは、TCPエントリポイントの動作確認をするための echo サーバー (tcps://beamtest.soracom.io:1234) を使って、TCP で送信されたデータを TCP over TSL で転送する操作を試してみましょう。

tcp/SSL概要

先ほど作成した hello beam グループに対し、SORACOM Beam の設定を行います。設定を行うためには、グループ管理画面を開き、hello beam グループを選択してグループ詳細画面を開きます。

グループ詳細

[SORACOM Beam 設定] グループの中にある [ + ▼ ] ボタンをクリックします。するとドロップダウン形式でメニューが表示されますので、対象となるエントリポイントを選択してください。 今回の例では TCP → TCP/TCPS エントリポイントを利用します。

tcp_entryポイント2

ダイアログが表示されますので、以下のように必要事項を設定して最後に [保存] ボタンを押してください。

項目
設定名 echo over ssl
転送先-プロトコル TCP (SSL)
転送先-ホスト名 beamtest.soracom.io
転送先-ポート名 1234
オプション- IMSI ヘッダ ON

tcp_entryポイント

TCP Entry Point の各設定値の意味は以下の通りです。

項目 意味 必須
設定名 この TCP entry point 設定につける名前です。わかりやすい名前をつけてください。 Yes
エントリポイント・プロトコル SIM からこのエントリポイントに接続するためのプロトコルを選択してください。 Yes
エントリポイント・ホスト名 SIM からこのエントリポイントに接続するための ホスト名です。現時点では beam.soracom.io のみ対応しています。 Yes
エントリポイント・ポート番号 SIM からこのエントリポイントに接続するためのポート番号です。現時点では 8023 のみ対応しています。 Yes
転送先・プロトコル SORACOM から転送先に接続するためのプロトコルを選択してください。TCP もしくは TCP ( SSL ) が選択可能です。 Yes
転送先・ホスト名 SORACOM から接続する転送先のホスト名です。 Yes
転送先・ポート番号 SORACOM から接続する転送先のポート番号です。 Yes
オプション・ IMSI ヘッダ SORACOM から転送先へのコネクション成立時に、"imsi = IMSI 番号“ が送信されます。
オプション- IMEI ヘッダ SORACOM から転送先へのコネクション成立時に、"imei = IMEI 番号” が送信されます。
オプション-署名ヘッダ付与 事前共有鍵と通信ヘッダーに入っている IMSI、IMEI およびタイムスタンプを元に、SHA256 でダイジェストした値を生成します。
オプション-事前共有鍵 署名ヘッダの付与に使用する事前共有鍵を指定します。あらかじめユーザコンソールの「セキュリティ」画面より登録しておいてください。

Armadillo-IoTからの確認

Beamの設定を行った Air SIM で接続されているArmadillo-IoTから、上記で設定したエントリポイントに対して telnet で接続してみましょう。今回は暗号化処理と合わせて、IMSI ヘッダを付与するように設定しましたので、IMSI の情報が表示されるはずです。

Armadillo-IoT から telnet で接続し、出力を確認しましょう。telnetクライアントはdebianユーザーランドに標準でインストールされていないため、インストールしてください。

[armadillo ~]# apt-get update
[armadillo ~]# apt-get install telnet

echo サーバー (tcps://beamtest.soracom.io:1234)は、送信された文字列をオウム返し(エコーバック)するように設定されています。

  • 接続先ホスト: beam.soracom.io
  • 接続先ポート番号: 8023

キーボードから何らかの文字列を入力し、エコーバックがあることを確認できれば設定完了です。

[armadillo ~]# telnet beam.soracom.io 8023
Trying 169.128.169.128...
Connected to beam.soracom.io.
Escape character is '^]'.
Hello Soracom Beam Client IMSI:4XXXXXXXXXXXXXX ! (←Beam によって Air SIM の IMSI が付与されている)
hi        (←キーボードから入力)
hi        (←echoサーバからのエコーバック)

HTTP / HTTPS: HTTPエントリポイントの設定例

HTTP エントリポイントも、テスト用のサーバ ( https://beamtest.soracom.io ) を使って動作確認してみましょう。このテスト用サーバでは、Beam を使ってアクセスした際に、IMSIやHTTPヘッダなどの Beam で付与された情報を確認することができます。

HTTPエントリポイントのイメージ

まず、グループ設定ページで左下の + をクリックし、HTTP エントリポイントを追加します。 [SORACOM Beam 設定] グループの中にある [ + ▼ ] ボタンをクリックし、表示されたメニューの中から HTTP エントリポイントを選択します。

HTTPエントリポイントの追加

設定ダイアログが表示されたら、以下のように必要事項を設定して最後に [保存] ボタンを押します。カスタムヘッダについては、次のセクションで解説しますので、ここでは空欄にしておきます。

項目
設定名 http over ssl
エントリポイント-パス /
転送先-プロトコル HTTPS
転送先-ホスト名 beamtest.soracom.io
転送先-パス /
オプション- IMSI ヘッダ ON
カスタムヘッダ なし(空欄)

HTTPエントリポイントの設定

設定を保存後、Beamの設定を行った Air SIM で接続されているArmadillo-IoTから http://beam.soracom.io:8888 にアクセスすると、 Air SIM の IMSI が表示されます。

[armadillo ~]# curl http://beam.soracom.io:8888
Hello SORACOM Beam Client xxxxxxxxxxxxxxx !

Beam の設定を変更し IMSI ヘッダを無効にすると、IMSIは表示されず “Hello Unkonwn Client…” というメッセージが表示されます。

カスタムヘッダの設定

Beam の HTTP エントリポイントでは、データ転送時にカスタムヘッダを追加・削除・置換することができます。

SORACOM Beam 設定一覧で、先ほど追加した「http over ssl」の行の一番右にある[…] ボタンをクリックして設定ダイアログを開き、以下のように必要事項を設定して最後に [保存] ボタンを押してください。カスタムヘッダを追加するには、「ヘッダ操作」左下の [+] ボタンを押してください。

カスタムヘッダ

Beamの設定を行った Air SIM で接続されているArmadillo-IoTから http://beam.soracom.io:8888 にアクセスすると、以下のように表示されます。Air SIM の IMSI と合わせて、カスタムヘッダも表示されていることが確認できます。

[armadillo ~]#  curl http://beam.soracom.io:8888
Hello SORACOM Beam Client 4XXXXXXXXXXXXXX !

== HTTP Headers ==
HTTP_X_SORACOM_BEAM=SUCCESS
HTTP_X_SORACOM_IMSI=4XXXXXXXXXXXXXX

エラーログの確認

Beam では、直近2週間で発生したエラーログを保管しており、ユーザコンソールやAPIから確認することができます。うまく通信できないときなどのデバッグに利用できます。

確認できるエラーログの内容は以下のとおりです。

  • Beam 設定が存在していない、もしくは無効になっている場合
  • 転送先サーバーが見つからない場合 (TCP/UDP/HTTP)
  • 転送先サーバーからエラーが返却された場合 (HTTPのみ)
ログは直近2週間分のみ参照可能です。 それより古いログは閲覧できませんので、ご注意ください。

ユーザコンソールでは、ドロップダウンメニューの「ログ」からアクセスできます。

logs

Beam 設定の無効化

Beam の利用にはリクエスト単位で料金がかかります。Beam を使わない場合には、設定を無効化するか、グループから登録解除してください。

  • Beam の設定を無効化する場合
    • [SORACOM Beam 設定] グループから無効化したい項目を選択し、設定名横のスイッチを[OFF]にします。
  • グループから登録解除する場合
    • Air SIM 管理画面を開いて、SORACOM Beam による通信を行いたい Air SIM にチェックマークを付けます。続いて、[操作] ボタンから [所属グループ変更] を選択します。
    • 表示されたダイアログで、[グループ解除]をクリックします。

  1. SORACOM Beam サービス詳細はソラコムのWebサイトをご確認ください。 

  2. SORACOM、SORACOM Air、SORACOM Beamは、株式会社ソラコムの登録商標または商標です。 

  3. 参考/出典: ソラコム 開発者向けサイト/Getting Started