見出し画像

イラストでわかるセキュリティ! 『Google Cloud で Web の脅威に立ち向かう』 #gc_appmodern #湊川あいグラレコ

こんにちは! IT漫画家の湊川あい(みなとがわ・あい)です。

Google Cloud Japan さんのオンライン放送「App Modernization OnAir」第8回目に湊川あいがグラフィックレコーディングで参加🎨
セッションの内容を、イラストでわかりやすくまとめました!

今回イラスト化したセッションはこちらです。

『Google Cloud で Web の脅威に立ち向かう』#gc_appmodern
スピーカー: Google Cloud カスタマーエンジニア 岩成 祐樹 様

そもそも Web アプリケーションにおける脅威とは?

GoogleCloudさんグラレコ_001

そもそも Web アプリケーションにとっての脅威とは何でしょうか?
実際にどれくらいの被害があるのでしょうか?

日本企業へのアンケートによって判明した数値がこちらの通りです。

データ損害や漏洩の対応に要する平均コストが「1件あたり 4億円」もすることは驚きですね。
岩成さんによると、この4億円という数字は、人件費などの金額ベースなので、「世間から失った信用」もコストに入れると、もっと莫大な金額になるとのことです。

これらの被害は年々増え続けているので、対策を打たない手はありません。
では具体的に、私たちはどうやって Web アプリケーションを守れば良いのでしょうか?

具体的なシナリオで学んでみる

GoogleCloudさんグラレコ_002

岩成さんが提案するのは、簡単なフォームを想定して、どんなセキュリティが必要か考えてみる方式です。

今回は、例として「ユーザがレビューを投稿できる」フォームを作ることにしました。多くの Web サイトで使われている機能ですね。

一見簡単そうに見えるフォームですが、考えるべきことはたくさんあります。

(1)ログインの仕組みはどうする?
(2)Bot による連続投稿などの攻撃にはどう対処する?
(3)DB との接続に使う認証情報を守りたい

ひとつずつ見ていきましょう。

(1)ログインの仕組みはどうする?
まず、https で通信するためには電子証明書が必要ですね。これはロードバランサーで設定できます。
電子証明書には有効期限があり、更新し忘れるというミスが起きがちです。そこで、Google の Managed Certificates という電子証明書管理サービスを使えば、自動で更新してくれます。
これでインターネット通信が暗号化されました。

でも、このフォームを使う前にログインが必要ですね。
Google の Identity Platform を使えば、エンドユーザは Googleアカウントや、Twitterアカウント、Facebookアカウント、Appleアカウント等でログインできるようになります。


(2)Botによる連続投稿などの攻撃にはどう対処する?
これでログインできるようになりましたが、すべてのユーザが人間というわけではありません。中には悪意のある Bot もまぎれこんでいるでしょう。
偽情報や、危険なURLを書き込まれては大変です。
さらに、パスワードリスト攻撃を行う Bot もあります。

「人間か Bot かを自動で判定したい。その際、エンドユーザの手間はなるべく減らしたい」
そこで Google が開発したのが reCaptcha(リキャプチャ)です。

バージョン1は、ねじれた英数字が画像で出てきてその通り打つというもの。皆さんも馴染み深いのではないでしょうか? これは10年以上前のもので、このタイプのものをかいくぐるBotも出てきたので、改善する必要がありました。

バージョン2は、「バスの画像を選んでください」とタイル形式で画像が表示され、選択するタイプです。
こちらも、高度な攻撃者に打ち負かされる可能性があることがわかりました。
エンドユーザ側にとっても、中には判断に迷う画像もあって、負担があります。

それらの問題を解決するために、バージョン3が作られました。
これは、ユーザの行動、認証、状況をAIで判定することによって、怪しいリクエストをはじいてくれるものです。
エンドユーザ側は、クリックや入力などの操作は必要はありません。

バージョン3の無償版は、世界で 500万の Web サイトに利用されています。

広く使われる中で、利用者から「新機能や、SLA、サポートが欲しい」といった声が挙がったので、より高機能な reCaptcha エンタープライズ版 が作られました。

有償版の reCaptchaEnterprise(リキャプチャ エンタープライズ)は、フルサポートで、SLA がついてきます。また、人間か Bot かを 0と1のバイナリではなく、粒度の細かい、11段階のスコアで判定することができます。他にもアカウント確認機能や、パスワードチェッカーといった機能もついています。


(3)DBとの接続に使う認証情報を守りたい
フォームのデータはどこかに保存しなければなりません。
ストレージか、データベースか……いずれにせよ、API キーのような認証が必要になります。こういった認証情報を、英語で「シークレット」と言います。
シークレットをコードに保存すると、悪用される可能性があり、危険です。
一元化されたシークレット管理サービスを使うと良いでしょう。GoogleCloud のシークレット管理サービス Secret Manager の出番です。
ここに保存したシークレットはもちろんすべて暗号化されます。さらに、古いキーのバージョン管理機能や、IAMでの権限管理機能もあります。

とはいえ、何らかの人為的ミスでコードにシークレットが混入してしまうこともあるでしょう。それを発見するためには Cloud DLP API を活用しましょう。
「DLPとは、何の略だろう?」と思い調べてみたところ、Data Loss Prevention、直訳すると「データ損失防止」という意味でした。
これを使えば、コマンド一発で、定義されたコンテンツ(テキストや画像)を検知することができます。

Googleクオリティのセキュリティをサクッとお借りしちゃいましょう

さて、イラストで補いきれなかったところもテキストで振り返ってみました。

これらの機能を、いちから自社のみで作ろうとすると相当大変なのでは……。
中には reCaptcha v3のように、無償のものもあります。
Google クオリティの技術をサクッとお借りできるのは大変助かりますね!

Google Cloud のサービスは星の数ほどあるので、何が何だか混乱しちゃいそうになりますが、このようにシナリオ形式で学ぶと、どれが何の役に立つかが理解しやすくて良いですね♪
大変勉強になりました。

ご視聴いただいた皆様、ご登壇いただいた岩成様、MCの北瀬様、ありがとうございました♪

ツイッターにも #gc_appmodern のハッシュタグで投稿しました!

見逃した方も大丈夫! 過去のアーカイブも視聴できる

Google Cloud Japanさんのオンライン放送「App Modernization OnAir」は、毎週水曜日に放送されています。

見逃した方も大丈夫! こちらのページから、過去のアーカイブも視聴できますよ。 もちろん無料です。

次回の配信は
4 月 21 日 (水) 18:00 - 19:00

テーマは「Firebase で作るサーバーレスアプリケーション」の予定です。

次回配信を視聴したい方は
こちらのページから「参加登録」ボタンをクリックしておいてくださいね。


感想は  #gc_appmodern でツイートいただけると、とっても嬉しいです😆👍

それでは、またお会いしましょう!

IT漫画家の湊川あい(みなとがわ・あい)でした。







サポートいただけると制作速度が上がります!!