Amazon Web Services ブログ

AWS IoT セキュアトンネリングを使用してリモートデバイスに接続する

このブログは、Syed Rehan と Chelsea Pan によって書かれた Connect to remote devices using AWS IoT Secure Tunneling を翻訳したものです。

イントロダクション

デバイスがリモートサイトの制限付きファイアウォールの背後に配置されている場合、トラブルシューティング、構成の更新、およびその他の運用タスクのためにそれらのデバイスにアクセスする方法が必要です。ここで、AWS IoT Device Management の機能であるセキュアトンネリングが、お客様のリモートタスクの実行に役立ちます。

お客さまへのさらなる利便性向上のために、AWS はサービスを大幅に更新しました。1 つ目は、AWS IoT Device Management のセキュアトンネリング機能は、接続時間は 12 時間のままで維持しつつ、価格が 80% 引き下げられたことです。コスト効率が向上したことで、顧客はセキュアトンネリングをスケーリングして、制限されたファイアウォールの背後にデプロイされたデバイス群にアクセスして、トラブルシューティング、構成の更新、トレーニング、その他の運用タスクを実行できるようになり、AWS で増大する IoT ワークロードのニーズに対応できるようになりました。

二つ目に、AWS はセキュアシェルプロトコル (SSH)、仮想ネットワーク接続 (VNC)、またはリモートデスクトッププロトコル (RDP) を使用してリモートデバイスとの通信をさらに簡単にし、複数の同時 TCP 接続をサポートできるようにしました。複数の伝送制御プロトコル (TCP) 接続を同時に使用することで、通常は複数の接続を行う HTTP ベースのアプリケーションにアクセスするためのトンネルを確立できます。たとえば、デバイス上で実行されている Web アプリケーションにリモートアクセスして、リアルタイムのテレメトリを取得したり、Web ベースのグラフィックユーザーインターフェイス(GUI)で管理タスクを実行したりできるようになりました。

3 つ目の改善点は、単一使用トークンの導入です。以前は、安全なトンネルが確立されると、トークンが保存されて再利用され、悪用される可能性がありました。最新のセキュリティ強化により、接続が成功した後にクライアントアクセストークン (CAT) を取り消すことができるようになりました。接続が切断された場合、 CAT をローカルデバイスに保存して、代わりにトークンの再配信方法を確立します。RotateTunnelAccessToken API を呼び出して、CAT の新しいペアを送信元デバイスと宛先デバイスに配信し、事前定義されたトンネル期間内に元のデバイスとの接続を再開できます。お客様が接続の問題に直面する場所に応じて、トークン・ローテーションでは、送信元、宛先、あるいはその両方のモードでの CAT のローテーションがサポートされます。再接続すると、セキュアトンネリング機能を使用してリモートデバイスに安全にアクセスし、トラブルシューティングを続けることができます。さらに、新しい CATは、サブスクライブしている MQTT トピックを通じてターゲットデバイスに発行されます。

最後に、ブラウザベースの SSH のサポートを追加しました。以前は、送信元デバイス(オペレータデバイス)のコマンドラインインターフェイス(CLI)を介したプロキシ接続を使用してのみ宛先デバイス(エンド宛先リモートデバイス)に接続できました。今日から、ソースデバイス (AWS IoT Secure トンネリングコンソール) からのローカルプロキシを必要とせずに、AWS コンソールに組み込まれて SSH ターミナルから これらの宛先デバイスに直接接続できます。この機能により、オペレーターのデバイスにローカルプロキシをコンパイルしてインストールする必要がなくなるため、オンボーディングエクスペリエンスが大幅に向上します。この合理化されたエクスペリエンスにより、日常的な運用メンテナンスの実施などのリモートタスクにセキュアトンネリングの使用を簡単に拡張できます。

AWS IoT セキュアトンネリング の使用

このブログ記事では、IoT デバイス (宛先デバイス) をセットアップし、AWS IoT Console から直接ブラウザベースのインターフェイスを使用してこの宛先デバイスに接続します。このビデオを参照してライブデモを行うこともできます。

ステップ 1: 宛先デバイスのセットアップ

IoT デバイス (宛先デバイス) をセットアップしてください。このウォークスルーでは、AWS IoT Device Client または AWS IoT Greengrass を使用できます。「宛先デバイス」を設定して、このデバイスから AWS IoT Core に到着するデータを確認したら、次に進み、ブラウザからこのエンドデバイス (宛先デバイス) への安全なトンネルをセットアップしましょう。

ステップ 2: ブラウザベースのトンネリング

AWS IoT コンソールから以下のように選択します

  • Manage
    • All devices
      • Things

モノを選択します。下の画像では、あらかじめ作成したテスト用のモノが選択されています。作成した特定のモノを選択する必要があります。

ステップ 3: トンネルを作成する

Create secure tunnel を選択します。

Quick setup を使用し、Next を選択します。

必要に応じて詳細を Edit より「編集」できます。ここではデフォルト設定を使用し、トンネルを Confirm and create します。

ブラウザベースのセキュアトンネリングを使用する場合、送信元のクライアントアクセストークンは組み込みの SSH ターミナルを介して自動的に配信され、送信先のアクセストークンは AWS IoT に接続されたデバイスの予約済みのトンネル MQTT トピックに配信されます。この手順により、トークンをダウンロードする必要がなくなります。自前のソリューションを使用して宛先トークンを配信するか、ローカル CLI を使用してトンネルを確立する場合は、トークンをダウンロードできます。

トンネルを作成したら、「Connect via browser CLI」認証オプションを選択します。テストでは「Use private key」を使用します。

ポップアップで、「Username」と「Private key」を選択し、「Connect」を選択します。

認証が成功すると、「宛先デバイス」端末を示す次の端末ウィンドウが表示されます。

この例では、AWS IoT Greengrass デバイスを使用しましたが、ここでログを「CAT」して、「宛先デバイス」に接続していることを示すことができます。

この宛先デバイスで必要なタスクを実行できます。接続が切断された場合は、ソース/宛先デバイスの両方に「Send new access tokens」して、アクセスを取り戻すことができます。完了したら、トンネルを閉じて削除し、エンドデバイス(宛先デバイス)への接続を終了できます。

ステップ 4: トンネルを閉じて削除する

deleteDelete tunnel を確認します。

また、継続的な課金を避けるため、このテスト用に作成したインフラストラクチャ(IoT Things や EC2 インスタンスなど)をすべて削除してください。

まとめ

このブログでは、AWS IoT セキュアトンネル が IoT デバイス (宛先デバイス) への安全なトンネルを作成し、SSH 経由でリモート操作を実行する方法について学びました。デバイスの異常のデバッグや修復など、さまざまなユースケースがあります。AWS IoT のセキュアトンネリングはプライベートキーを使ったSSH 認証をサポートしているため、デバイスの異常を監視し、軽減措置を講じ、必要に応じてデバイスの状態を修正することが容易になります。80% の価格引き下げ、同時 TCP 接続のサポートの追加、単一使用トークン、トークンのローテーション、ブラウザベースのトンネリングを組み合わせることで、IoT 導入をより効率的に拡張し、複数のユースケースにわたって管理できます。

著者について

Syed Rehan は、アマゾンウェブサービスのシニアグローバルエバンジェリストであり、ロンドンを拠点としています。彼は世界中の顧客をカバーし、リード IoT ソリューションアーキテクトとして顧客をサポートしています。Syed は、IoT とクラウドに関する深い知識を持っており、スタートアップから企業に至るまでのグローバルな顧客とこの役割を果たし、AWS エコシステムを使用して IoT ソリューションを構築できるようにします。
Chelsea Pan は、アマゾン ウェブ サービスのシニア プロダクト マネージャーであり、シアトルを拠点としています。製品戦略、ロードマップ計画、ビジネス分析と洞察、カスタマーエンゲージメント、その他の製品管理分野に関する AWS IoT Device Management サービスを監督しています。チェルシーは、キャリアの中で急成長中のいくつかのセキュリティ製品の発売を主導しました。

このブログは、ソリューションアーキテクトの戸塚智哉が翻訳しました。