Slide 1

Slide 1 text

SORACOM Beam と Cloudflare Workers と梅雨の布団 SORACOM UG Online #12 ~SORACOM Beam の再発見~ Jun. 07, 2022 株式会社ソラコム Customer Reliability Engineer 三國直樹 (mick / @n_mikuni)

Slide 2

Slide 2 text

自己紹介 三國直樹 (mick) Customer Reliability Engineer SORACOM の技術サポートやドキュメント等を 担当 好きな SORACOM サービス: SORACOM Lagoon 好きな布団メーカー: my makura

Slide 3

Slide 3 text

今年も梅雨がやってくる Ref: https://www.data.jma.go.jp/cpd/baiu/sokuhou_baiu.html

Slide 4

Slide 4 text

IoT 現場 (家庭) の心配事 また雨か。最後に布団 干したのいつだ? うちは 2 つしか 干せない。次は 誰の番?

Slide 5

Slide 5 text

• 布団を干したとき、誰のものを干したかを記録・通知 • 記録を定期的に確認し、誰かの布団が一定期間干されていなかったら、通知 作ったもの

Slide 6

Slide 6 text

構成 SORACOM LTE-M Button for Enterprise SORACOM Beam KV (Key-Value Store) Cloudflare Workers (futon-checker) Cloudflare Workers (futon-recorder) Trigger Slack Incoming Webhook 布団干しの記録 記録から布団干し忘れの確認 https://github.com/nmikuni/cloudflare-futon-app-demo

Slide 7

Slide 7 text

• 使った理由: Cloudflare D1 と Cloudflare R2 が 話題になっていたので触ってみた かった • Amazon API Gateway + AWS Lambda が一つになったような使い勝手。Trigger で Cron 実行できるのも良い。Cloudflare D1 や Cloudflare R2 は使えなかったが、 KV (キーバリューストア) は使いやすかった • TypeScript による型定義や Wrangler CLI、サンプルが充実していて、安心して すぐに始められた Cloudflare Workers を使ってみて

Slide 8

Slide 8 text

Cloudflare Workers の実装例 設定ファイルで KV や cron を定義 env.KV.get で読み込み、env.KV.put で書き込み 直感的に ヘッダや body を取得

Slide 9

Slide 9 text

• Cloudflare Workers に認証の機構を実装したい場合、自分で考える必要がある (Amazon API Gateway のような X-API-Key を使ったヘッダ認証なども自分で書く) • SORACOM Beam はカスタムヘッダを付与できるので事前共有鍵によるヘッダ認証 は容易に実装できた • Ref: https://qiita.com/n_mikuni/items/b63eade4f3bc275d7c70 • 加えて事前共有鍵と SIM ID から生成する署名ヘッダでさらにセキュアにできた • Ref: https://github.com/nmikuni/cloudflare-futon-app-demo SORACOM Beam の使いどころ

Slide 10

Slide 10 text

1. SORACOM Beam と お客様サーバーへは事前に鍵を登録してある 2. IoT Device から SORACOM Beam へデータが送信される 3. SORACOM Beam は 事前共有鍵とIMSIなど、タイムスタンプをもとに署名を作成する 4. SORACOM Beam は IMSI、タイムスタンプ、署名をヘッダに入れてデータとともに転送先 のサーバーへ送る 5. サーバーはヘッダから IMSI、タイムスタンプ、署名を取り出す 6. サーバーは事前共有鍵とIMSIなど、タイムスタンプをもとに署名を作成する 7. サーバーは自分が作成した署名と SORACOM Beam から送信された署名を比較する (※) 署名はタイムスタンプをもとに作成されているので、データ送信ごとに変わる (配布資料用) 署名が検証されるまでの流れ

Slide 11

Slide 11 text

SORACOM Beam の署名ヘッダによる認証 IoT Device SORACOM Beam Customer Server 事前共有鍵 事前共有鍵 ハッシュ計算 ヘッダに入れて データと一緒に送信 ccc2594804… SIM の情報 タイムスタンプ ccc2594804… SIM の情報 タイムスタンプ ハッシュ計算 ccc2594804… 比較 (検証)

Slide 12

Slide 12 text

SORACOM Beam の署名ヘッダによる認証の実装例 Ref: https://users.soracom.io/ja-jp/docs/beam/verify-signature/ : Beam が生成する署名ヘッダ : Beam は「SIM の IMSI などのパラメータ」 「タイムスタンプ」「事前共有鍵」を結合し たものを SHA256 というアルゴリズムでハッ シュ化している。それぞれが正しければ Beam が生成する署名ヘッダと同じものがで きるはず : 事前に SORACOMと Cloudflare Workers に登録した事前 (Pre) 共有 (Shared) 鍵 (Key) : Beam が生成する署名ヘッダと、同じ方法 で生成したハッシュとを比較

Slide 13

Slide 13 text

• Cloudflare Workers を使ってみることができた。とても使いやすいので、 今後も活用できそう • SORACOM Beam と組み合わせることで、セキュリティを強化できること を再確認できた • この梅雨は布団の干し忘れを防げるはず まとめ

Slide 14

Slide 14 text

No content