AWS PrivateLinkとSORACOM CanalでAWSのマネージドサービスに閉域アクセスする

2019/09/05

ども、ソリューションアーキテクトのtakipone(大瀧)です。

SORACOM Canalはいくつかあるソラコムの閉域サービスのうち、Amazon VPCとVPCピアリング接続することでSORACOM Air forセルラーの3G/LTE網からAWS(Amazon Web Services)へのプライベートアクセスを提供するサービスです。

SORACOM Canalの接続先としては、Amazon VPC内にPrivate IPアドレスを持つ仮想マシンのAmazon EC2インスタンスやロードバランサであるAWS ELB辺りをイメージするわけですが、それ以外にももちろん接続することができます。そこで本記事では、AWS PrivateLinkによってSORACOM Air forセルラーからAWSマネージドサービスに閉域アクセスする構成をご紹介します。

AWS PrivateLinkとは

AWS PrivateLinkはインターネット上にエンドポイントを持つAWSマネージドサービスに対して、VPC内から接続するための仕組みです。少し前にVPCピアリング接続経由のアクセスがサポートされ、SORACOM Canalからのアクセス先として利用できるようになりました。

PrivateLinkは、VPCエンドポイントのインターフェイスエンドポイントをサポートするAWSマネージドサービスの一覧から選択し、設定します。IoTシステムで利用することの多いAmazon Kinesis Data FirehoseやAWS Lambdaと組み合わせてサーバーレスシステムを構成するAmazon API Gatewayを設定することで、デバイスからSORACOM Canalを経由してVPCエンドポイントにアクセスしそれらのサービスを利用できます。

デバイスからの通信はモバイル閉域網とSORACOM Canalを経由し、インターネットに出ることなくKinesis Data Firehoseにアクセスできる様子がわかりますね。

また、アクセスするためのAWSのAPIキー取得をSORACOM Kryptonによって自動化することもできます。SORACOM KryptonはAmazon Cognitoと連携しAWS APIの一時キー取得を代行するサービスです。

デバイスは、Kryptonにリクエストを送ってAWS API一時キーを取得し、それをVPCエンドポイントへのアクセス時に利用してKinesis Data Firehoseにデータを送信することができます。

プライベートDNS

VPCエンドポイントのDNS名は以下の2つがあります。

  1. エンドポイント固有の DNS ホスト名
  2. サービスのデフォルトの DNS 名

AWS SDKやCLIをデフォルト設定で利用できる2.のデフォルトDNS名は便利ですが、今回の構成で利用するためにはひと工夫必要です。2.のデフォルトDNS名はプライベートDNS構成にあたり、VPC内にあるAmazon DNSというDNSサーバーに問い合わせる必要があります。SORACOM Canal経由で問い合わせるためにはAWSのRoute 53 インバウンドリゾルバという設定とそのリゾルバをデバイスのDNSサーバーに設定するためのSORACOM Air カスタムDNSを組み合わせます。以下のような構成です。

プライベートDNS構成の手順については、以下のブログ記事を参照してください。

SORACOMのAWS連携サービスとの使い分け

SORACOMにはAWSのマネージドサービスと連携するサービスが複数あります。

  • SORACOM Beam : AWS IoT CoreへのMQTTS接続
  • SORACOM Funnel : Amazon Kinesis Data Firehose, AWS IoT Coreへのリクエスト送出
  • SORACOM Funk : AWS Lambdaへのリクエスト送出とレスポンス受取

これらのサービスのいずれも、SORACOMがSIMを識別することでデバイスからはAPIキーを含めないシンプルなプロトコルでデータを送信、SORACOMサービス側でAWSの各サービス対応形式への変換とAPIキー付与を行い、AWSにデータを転送することができます。また、3G/LTE網からSORACOMサービスへの接続はインターネットと隔絶されているため、これらのサービスでも十分安全な通信が行えると考えていただくこともできます。

APIキーをSORACOMにオフロードできる点はデバイスの運用/セキュリティ面で大きなメリットがありますが、敢えて今回の構成(SORACOM CanalとAWS PrivateLink)を選択する理由としては、以下が挙げられます。

  • デバイスとAWSのエンドツーエンドで認証&暗号化しつつ閉域アクセスしたい
  • SORACOMサービスが対応しないAWSサービスに閉域アクセスしたい
  • SORACOMサービスが対応しない通信形式で閉域アクセスしたい

まとめ

SORACOM CanalとAWS PrivateLinkを組み合わせて、閉域でAWSマネージドサービスにアクセスする構成をご紹介しました。ケースによってSORACOMサービスを適切に使い分けるのがオススメです。なるべくラクに、かつセキュアなIoTシステムのネットワークが設計できれば幸いです。


Posted by takipone at 2019/09/05