こんにちは!ソリューションアーキテクトの今井です。社内でのニックネームはfactoryと申します。昔、イマイファクトリーという名前でグラフィックデザインなどをやっておりました。
今回の記事では、Amazon AppStream 2.0(以下、AppStream)を使ってIoTデバイスへの安全なアクセスをするための方法論を紹介していきます。AppStreamとSORACOM Canal(以下、Canal)を組み合わせると、いつでもオンデマンドに利用可能なリモートアクセス環境がエンドツーエンドに構築可能です。
なお、この記事におけるIoTデバイスへのリモートアクセスとは、クラウドやPCからのSSHやリモートデスクトップ、またはブラウザによるアクセスのことを指すものとします。IoTデバイスによってInitiateされたHTTPやMQTTコネクションを利用してクラウド側からアクセスするパターンについては論じません。
これまで紹介されてきたリモートアクセスの方法論
IoTデバイスへのリモートアクセスには、これまで以下の3つの方法論をご紹介してきました。
SORACOM Napterを利用した手元の環境からのオンデマンドなリモートアクセス
SORACOM Napterを利用すると、IoTデバイスに対していつでも好きなところからオンデマンドに安全なリモートアクセスが可能です。料金も「使った分だけ」なのでリーズナブルです。
出典: SORACOM IoT レシピ:外出先から安全にリモートデスクトップへアクセス
SORACOM GateによるD2Dアクセス
SORACOM GateのD2Dアクセス(D2Dとは「Device to Device」をもとにした機能名称)を利用するとIoTデバイス同士の通信が可能です。リモートアクセスのクライアント端末側にSORACOM IoT SIMやSORACOM Arcによるコネクティビティの用意が可能な場合、お手軽なリモートアクセス実現方法のひとつです。イメージ的にはリモートアクセス先とクライアントを同じLANに放り込む感じですね。
SORACOM Gateを利用したクラウド経由(C2D)での常時利用可能なリモートアクセス
SORACOM GateのC2Dアクセス(Cloud to Deviceの意)を利用すると、みなさまのクラウド環境とIoTデバイスの間で常時利用可能なコネクションをセットアップ可能です。リモートアクセスの頻度が高い場合、前述のSORACOM Napterを使うよりもこちらのほうが経済合理性があがる場合があります。また、アクセス時にはかならずみなさまのクラウドを経由することになりますので、システムの統合や監査等を行うためにも便利な方法です。
前述のとおり、このブログポストではこの「常時利用可能な環境」をより便利に、より具体的に構築するためのひとつのアイデアとして、AppStreamをリモートアクセスクライアントとして利用する方法をご紹介します。
AppStreamでIoTデバイスへリモートアクセスする
AppStreamは、高速かつ安全なアプリケーションのストリーミングサービスです。利用者は、インターネットに接続されたデバイス(Windows、Mac、Chromebookなど)からブラウザでアクセスし、ターミナルやウェブブラウザなどのアプリケーションを実行できます。このサービスを使えば、ユーザーの端末に各種アプリケーションを配布することなく業務に即したアプリケーション実行環境を準備することができます。
例えばAppStreamに予めRemote Desktop Clientやブラウザ、Teratermなどをインストールされたイメージを作成したうえで、下記の図のようにデプロイをすると、ユーザーは自端末のブラウザだけ利用してAppStreamにアクセスし安全にIoTデバイスにリモートアクセスができるようになります。
手法を紹介するだけだとこれで終わってしまうので、より具体的なイメージを持っていただくために実際に構築した環境をデモ的にご紹介していきます。
実際にやってみる
まず、前提としてSORACOM Canal、SORACOM Gate、SORACOM Junctionを利用したIoTデバイスとAWS VPC間の双方向のルーティング環境を構築する必要があります。これについては以下のポストを参考に構築していきます。
この時点ではこういうネットワークが構築されています。
次にAppStreamの環境を構築します。ポイントはFleetのNetwork detailsで、以下の点を考慮して設定を進めます。
- VPC: Canalで接続されているVPCであること
- Subnets: Gate Peerと双方向にルーティングが可能なRoute Tableと紐づいているSubnetであること
- Security Groups: Gate PeerとやりとりできるInbound/Outbound設定をもったSecurity Groupであること
ここまでで以下のような構成になりました。
あとはAppStreamのコンソールにてStackのメニューから「Create Streaming URL」をして、クライアントマシンのブラウザでアクセスすれば・・・
利用可能なアプリケーションが表示されるので、任意のアプリケーションを起動します。
ここではTeraTermを起動して、IoTデバイス(ラズパイにOnyxドングルを挿したもの)にアクセスしてみました!(AppStreamの環境を日本語化できていないので、TeraTermの日本語UIが文字化けしてしまっていますがご容赦を)
SSHでログインしてみると、SORACOMのものっぽいppp0インターフェースも見えますね!素晴らしい!
実際に利用するためには:
ユーザーの認証を整理する必要あり
ここまでは「やってみる」というお話でした。このポストのデモでは、AWSのマネージメントコンソールにログインしてStreaming URLの生成を行いましたが、実際に自社のユーザーやお客様向けのサービスとしてこれを提供するにはそうもいきません。ではどうすればよいでしょうか?
- Active DirectoryにAppStreamを統合する
すでに利用可能なActive Directory環境がある場合にはこれに認証を統合するのがよいでしょう。AWSのウェブサイトにて非常にわかりやすいガイドがあるのでこれを参照すれば迷わないと思います。
- 自前でユーザー認証してStreaming URLを返すサービスを作る
Active Directoryを利用しない場合、このような対応が必要になるでしょう。AppStreamはCreateStreamingUrlというAPIを提供していますので、認証されたユーザーに対してこのAPIの結果を返してやるサービスを作るのがよいかと思います。
他にも
また、今回のポストではIoTデバイスにSIMが直接挿さっているケースを例にとりましたが、実際のユースケースではセルラールーターやIoTゲートウェイの配下にIoTデバイスがいるケースも多いと思います。この場合は前述のルーターやゲートウェイにDNATの設定をしてやる必要があります。
まとめ
今回はSORACOM GateによるGate C2DとAmazon AppStream 2.0を組み合わせた、実用的なリモートアクセスのend to endなアーキテクチャ例をご紹介してきました。実際の業務での利用のイメージが少しでもついたら嬉しいなと思います。
改めて、この構成のメリットを改めて書き出してみると以下のようになります。
- 利用者が持つ物理端末はブラウザだけあればOK
- ユーザー管理も既存のシステムと統合が可能
追加でクライアント端末にソフトウェアをインストールすることなく、既存の社内システムとのユーザー認証の統合もできますので、エンタープライズ環境でも十分に利用可能な構成だと思います。IoTデバイスへのリモートアクセス環境の構築にお悩みの方はぜひご参考にしていただければ!
― ソラコム今井 (factory)