モバイルデバイス上のリソースにアクセスできるようにする必要があります。モバイルデバイスはサーバーとして機能する必要があります。電話がどのように接続されていても(wifi、3g、ファイアウォールの背後など)利用可能である必要があります。これは、電話からクラウドアクセス可能なサーバーに転送するsshリバースポートを開始することで実現できることを理解しています。これで、電話のリソースにアクセスしたいクライアントは、ランダムなポートでクラウドサーバーに接続し、接続をモバイルデバイスにトンネリングすることができます。大丈夫。
私の質問は、スケーラブルで堅牢で安全なソリューションとしてのこのアイデアの実現可能性に関するものです。このスキームを使用して数万のデバイスに展開されたモバイルアプリケーションは、デバイスローカルリソースにアクセスできるようにします。デバイスローカルリソースは超高セキュリティではありません。sshが提案されたのは、主にトンネルのセットアップが簡単になるためです。
ここに私の懸念のいくつかがあります、
ポートの割り当て。すべてのトンネルには、クラウドサーバー上に一意のポートが必要です。これには、トンネルを開始する前にデバイスとクラウドサーバーがIPをネゴシエートする必要があると思います。これは確かに可能ですが、ポートの可用性を判断するために常にポートをプローブしている、やや複雑なサービスがどこかにあることを意味します。
ポートリソース。サーバーには有限数のポートがあります。物事が複数のサーバーにまたがってスケーリングされる場合、おそらく問題ではありません。
トンネル管理。トンネルは常にうまくダウンするとは限らないため、予期せずダウンするトンネルを「クリーンアップ」するという問題があります(#1を参照)。
安全。各デバイスは、クラウドサーバー上の秘密と一致する公開鍵を必要とします。デバイス上にある場合は、デバイスから取得できます。現在、アカウントがロックダウンされている限り、発生する可能性はほとんどありませんが、別の攻撃ベクトルが開かれます。
また、サーバーのすべての一意のポートを開くだけでも、別の攻撃経路になります。
スケーラビリティ。おそらく何千ものSSHトンネルを開くのにどれくらいの費用がかかりますか(リソースに関して)?それは現実的ですか?
ファイアウォール。クラウドサーバーのポートは「80」または「8080」ではなく、乱数になります。これは、標準ポートへのアウトバウンド接続を制限する可能性のある一部のファイアウォールの問題ですか?
ご覧のとおり、セキュリティは私の得意ではないので、子供用手袋で扱ってください。ご想像のとおり、私はこのアプローチについて非常に留保しているので、一般的な問題を解決するための他の解決策を検討するための証拠を探しています。