Slide 1

Slide 1 text

インシデントレスポンスを自動化で支援する Slack Bot で人機一体なセキュリティ対策を実現する - SEASON2 伊藤洋也 / GMO PEPABO inc. 2023.03.18 YAPC::KYOTO 2023 Reject Con 1

Slide 2

Slide 2 text

2 自己紹介 GMOペパボ セキュリティ対策室 2007年 入社 伊藤 洋也 Hiroya Ito セキュリティ対策室に所属 組織横断のセキュリティ対策をやっています ● Twitter : @hiboma ● YAPC Asia 2009 に登壇してから 13年ぶり!

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

6 同僚の紹介 明日 (3/19) に登壇する GMOペパボの二人を紹介 !! @ryuichi_1208 @rsym1290

Slide 7

Slide 7 text

7 アジェンダ 1. #インシデントあるある 2. “インシデント” のアウトプット事例 3. GMOペパボのインシデントマネジメント支援ボット 4. 未来の課題 How (どうやって作ったか) より What (何を作ったか) の話しがメインです

Slide 8

Slide 8 text

スライドの注意 8

Slide 9

Slide 9 text

スライドの注意 9 GMO ペパボでは インシデント対応マニュアルで インシデント を下記の通り定義します 本スライドに用いる インシデント の記述は、この定義に準じています 本スライドでの「インシデント」の定義 • 情報資産のうち重要性1、2に属するものについて、アクセス権限がない人が閲覧することができた • (機密性の問題) • 情報資産全てを対象にして、なくなってしまった • (完全性の問題) • 情報資産全てを対象に改ざんされてしまった • (完全性の問題) • 情報資産全てを対象に、一時的に利用できない状態が発生しお客様に影響が発生した • (可用性の問題)

Slide 10

Slide 10 text

#インシデントあるある 10

Slide 11

Slide 11 text

#インシデントあるある 11 • どこのチャンネルで対応しよう !? • 😲 アラート通知が流れるチャンネルはどんどんログが流れていく ... • 😲 Slack のスレッド(*) で作業してたら みんな気が付かなかった ... • インシデントの対応を始めたけど、人が集まらない ! • 😲 みんなをチャンネルに呼び出すのは気が引ける .... • 😲 そもそも、誰を呼び出したらいいんだっけ ? インシデントの初動、こんなことありませんか? 注) チャンネルの会話を枝分かれさせて、一部の人だけで会話を進行する UI

Slide 12

Slide 12 text

12 • 関係者との連絡がうまくいかない • 😲 インシデントが起きたこと、みんなに知らせてないな .... • 😲 対応が終わったこと、みんなが知らなかった ... • 事前に準備したフローやプロセスが機能しない • 😲 どういうフローでやるんだっけ ...? 報告? すぐ対応? • 😲 マニュアルを出したけど、みんな無視しちゃうな インシデントの対応中、こんなことありませんか? #インシデントあるある

Slide 13

Slide 13 text

13 • 対応の記録がまとまってない • 🤔 いつのインシデントだったけ ? • 🤔 どこのチャンネルで対応したっけ ? • 再発防止のアクションが出せない • 🤔 サマリがなくて 何やったか全体感がわからん • 🤔 ポストモーテム* やりたいんだけど 準備が面倒 ... インシデントから復旧後、こんなことありませんか? 注) Postmortem Culture: Learning from Failure https://sre.google/sre-book/postmortem-culture/ #インシデントあるある

Slide 14

Slide 14 text

14 • みんな、どうやって取り組んでいるのかな ? みんな 困ってそう? #インシデントあるある

Slide 15

Slide 15 text

“インシデント” のアウトプット事例 15

Slide 16

Slide 16 text

“インシデント” のアウトプット事例 16 • テックブログで、インシデントや訓練をテーマに発信 • 技術情報誌の特集・書籍の発刊 • カンファレンスの開催 • SaaS 注) 定量的なエビデンスはなく、私がそう思っているだけです! 😲 “インシデント” はホットなアウトプットテーマ (*)

Slide 17

Slide 17 text

17 「インシデント」「障害対応」をテーマにしたテックブログのエントリ CloudNative Inc. BLOG mercari engineering モノタロウ Tech Blog 2022年以降のエントリを任意で掲載しています。「あの事例が載っていない!」というお声があったら教えてください 引用: https://blog.cloudnative.co.jp/13419/ 引用: https://engineering.mercari.com/blog/entry/20221220-5040a56d02/ 引用: https://tech-blog.monotaro.com/entry/2022/09/06/090000

Slide 18

Slide 18 text

18 STORES Product Blog RAKUS Developer Blog Ubie テックブログ 2022年以降のエントリを任意で掲載しています。「あの事例が載っていない!」というお声があったら教えてください 引用: https://www.blameless.com/ 引用: https://product.st.inc/entry/2022/12/13/090317 引用: https://tech-blog.rakus.co.jp/entry/20220218/troubleshooting 引用: https://zenn.dev/p/ubie_dev 「インシデント」「障害対応」をテーマにしたテックブログのエントリ

Slide 19

Slide 19 text

19 「インシデント」「障害対応」をテーマにしたテックブログのエントリ

Slide 20

Slide 20 text

20 「インシデント対応」「障害対応」を特集した技術情報誌 / 書籍の発刊 SoftwareDesign 2022年5月 WEB+DB PRESS vol. 119 システム障害対応の教科書 🌟 GMOペパボ 高橋雄紀 @takapi86 寄稿 🌟 引用: https://gihyo.jp/book/2020/978-4-297-11265-3 引用: https://gihyo.jp/magazine/wdpress/archive/2020/vol119 引用: https://gihyo.jp/magazine/SD/archive/2022/202205

Slide 21

Slide 21 text

21 インシデントをテーマに集う海外コミュニティ LEARNING FROM INCIDENTS 引用: https://www.learningfromincidents.io/

Slide 22

Slide 22 text

22 インシデントをテーマにした海外カンファレンス The Incident Response Conference 2022 引用: https://www.learningfromincidents.io/learning-from-incidents-conference-2023 引用:https://www.irconf.io/ LEARNING FROM INCIDENTS Conference 2023 📝 SRE の文脈も含めた広義のインシデント ( 障害 + セキュリティンシデント ) のカンファレンスのようです セキュリティインシデント をメインテーマにしたカンファレンスは他にもあると思います

Slide 23

Slide 23 text

23 インシデントマネジメントの SaaS BLAMELESS rootly jeli 引用: https://www.blameless.com/ 引用: https://rootly.com/ 引用: https://www.jeli.io/ 発表者が任意で選択したサービスになります

Slide 24

Slide 24 text

24 インシデントマネジメントの SaaS incident.io 引用: https://waroom.com/ 引用:https://incident.io/ Waroom 発表者が任意で選択したサービスになります

Slide 25

Slide 25 text

25 インシデントマネジメント機能を推す SaaS Datadog PagerDuty Incident Response Graphana Incident 発表者が任意で選択したサービスになります 引用: https://www.datadoghq.com/ja/blog/incident-response-with-datadog/ 引用: https://www.pagerduty.com/platform/devops/incident-response/ 引用: https://grafana.com/products/incident/

Slide 26

Slide 26 text

GMOペパボの インシデントマネジメント 26

Slide 27

Slide 27 text

GMOペパボのインシデントマネジメント 27 インシデントマネジメントを支援する Slack Bot を内製 • プロセスの標準化支援 • コミュニケーションの支援 • 分析・記録の支援 @sssbot <エスエスエスボット>

Slide 28

Slide 28 text

28 過去にも発表してました CloudNative Days 2021での発表 インシデントレスポンスを自動化で支援する https://speakerdeck.com/hiboma/insidentoresuponsuwozi-dong-hua-dezhi-yuan-suru-slack-bot-deren-ji-ti-nasekiyuriteidui-ce-woshi-xian-suru

Slide 29

Slide 29 text

https:LFI Conf 23 | Brent Chapman | Incident Response and Incident Analysis: Two Great Tastes https://www.youtube.com/watch?v=QAl3tF9eZek 29 このモデル図は Brent Chapman さんの発表を元に、発表者が GMOペパボの実情に合わせて 改変・解釈した図としています インシデントマネジメントのプロセス 🛠準備 🔥対応 🔍事後分析 初動 復旧 解決

Slide 30

Slide 30 text

https:LFI Conf 23 | Brent Chapman | Incident Response and Incident Analysis: Two Great Tastes https://www.youtube.com/watch?v=QAl3tF9eZek 30 このモデル図は Brent Chapman さんの発表を元に、発表者が GMOペパボの実情に合わせて 改変・解釈した図としています ● チーム編成 ● 訓練・演習 ● プロセス策定 ● 初動形成 ● 復旧作業 ● コミュニケーション ● 記録 ● サマリ ● postmortem ● 再発防止 インシデントマネジメントのプロセス 初動 復旧 解決 🛠準備 🔥対応 🔍事後分析

Slide 31

Slide 31 text

31 このモデル図は Brent Chapman さんの発表を元に、発表者が GMOペパボの実情に合わせて 改変・解釈した図としています インシデントのタイムライン 時間
 会社への影響
 ユーザへの影響
 インシデントマネジメント 
 監視 | アラート | 対応
 発生
 検知 
 アラート
 対応
 組織への影響
 ユーザへの影響 
 インシデントマネジメント 
 監視 | アラート | 初動
 検知 
 アラート
 対応
 復旧
 解決
 Incident Command for IT: What We’ve Learned from the Fire Department https://www.usenix.org/sites/default/files/conference/protected-files/srecon18americas_slides_chapman.pdf

Slide 32

Slide 32 text

32 インシデントのタイムライン 組織への影響 
 ユーザへの影響 
 インシデントマネジメント 
 監視 | アラート |
 Time is Money 💰 監視 | アラート | 初動
 時間
 発生
 検知 
 アラート
 対応
 検知 
 アラート
 対応
 復旧
 解決
 このモデル図は Brent Chapman さんの発表を元に、発表者が GMOペパボの実情に合わせて 改変・解釈した図としています Incident Command for IT: What We’ve Learned from the Fire Department https://www.usenix.org/sites/default/files/conference/protected-files/srecon18americas_slides_chapman.pdf

Slide 33

Slide 33 text

@sssbot 初動の支援 33

Slide 34

Slide 34 text

初動の支援 34 • チャンネルの作成 • 初動対応チームの招集 • 組織内の連絡 @sssbot が初動を形成、ニンゲンは復旧作業に集中 対応 初動

Slide 35

Slide 35 text

35 @sssbot を呼び出してチャンネルを作成する (1) メンションで呼び出します 事後対応 対応 初動の支援

Slide 36

Slide 36 text

36 @sssbot を呼び出してチャンネルを作成する (2) その時点でわかっている情報を添えて、フォーム入力してもらいます 事後対応 対応 初動の支援

Slide 37

Slide 37 text

💡 スクリーンショットはインシデント対応訓練の Slack 通知であり、実際のインシデントではありません 37 チャンネル作成の通知をブロードキャストする 部門、サービス、職種でチャンネルが細分化されているので広く通知 ! hoge 事後対応 対応 初動の支援

Slide 38

Slide 38 text

38 1インシデント = 1チンャネル ● 人間の認知負荷を下げたい ● 自動化で処理しやすい単位になる #サービスA-20200101i #サービスB-20200101i #サービスC-20200101i 🔥 🔥 🔥 事後対応 対応 初動の支援

Slide 39

Slide 39 text

スクリーンショットは Salesforce Collective: Collection Preview https://salesforce.widencollective.com/c/raqrnql6 を用いた 39 初動対応チーム
 セキュリティ対策チーム 
 @sssbot が初動対応チーム(*) を invite する CTO, VPoE, ...
 事後対応 対応 招集! 💡 サービス、部門ごとに初動対応チームを編成しています。技術職、カスタマーサポート職、マネージャー職などが含まれた Slack グループです。 初動の支援

Slide 40

Slide 40 text

対応の支援 40

Slide 41

Slide 41 text

41 💡 事象レベル : GMOペパボのインシデント対応マニュアル (非公開) にて定められた インシデントを 5段階評価するレベル タイムキーパーで経過時間をお知らせする インシデントのメタデータや TODO を表示する UI を兼ねる 💡 インシデントハンドラー (コマンダー): インシデントの進行をリードする、一時的なリーダーロール @hiboma 対応 対応の支援

Slide 42

Slide 42 text

タイムキーパーはコマンドランチャーの UI 42 コマンドを覚えず誰でも扱えるよう GUI のインタフェースを設ける 対応 対応の支援

Slide 43

Slide 43 text

💡 スクリーンショットはインシデント対応訓練時の Slack 通知であり、実際のインシデントではありません 43 “復旧 ” できたら通知をブロードキャストする 事後対応 対応 開けたら閉める。みんなに認知してもらうのが大事。 対応の支援

Slide 44

Slide 44 text

事後分析の支援 44

Slide 45

Slide 45 text

事後分析 事後分析の支援 45 • postmortem (*)ドキュメント作成の支援 • 記録の編集 事後分析で煩雑な処理を自動化して支援する 💡 ペパボでは可用性・完全生・機密性が損なわれた状態を元に戻したことを「復旧」と呼んでいる

Slide 46

Slide 46 text

46 事後分析 postmortem のドキュメント作成と Pull Request 作成 sssbot で記録したデータで ドキュメント (markdown) の下書きを作ります チャンネルで 📌 したメッセージからタイムラインも自動生成します @hiboma 事後分析の支援

Slide 47

Slide 47 text

47 💡 表示されているデータは、 development 環境での seed です。実サービスのインシデントではありません 過去の事例や類似の事例を一覧できる。タグで過去の記録を編纂 ダッシュボードで過去のインシデントを参照する 事後分析 事後分析の支援

Slide 48

Slide 48 text

💡 スクリーンショットはインシデント対応訓練時の Slack 通知であり、実際のインシデントではありません 48 対応を “完了” したら 通知をブロードキャストする 全ての対応を完了して、チャンネルを /archive した際にも通知を出します。 事後分析 事後分析の支援

Slide 49

Slide 49 text

準備の支援 49

Slide 50

Slide 50 text

事前の準備 50 情報セキュリティ規定* に基づき年一回以上 実施 • 部門、サービスごとに訓練*・演習* を計画し実施する • @sssbot を用いて実施します Software Design 2022 5月号 @takapi86 の記事もご覧ください! GMOペパボのインシデント対応 訓練・演習 準備 注1) GMO ペパボの社内規定です (非公開) 注2) 訓練 形式的な手続きやフローを習熟する目的で実施 注3) 演習 実践的なシナリオを想定した高度な内容で実施

Slide 51

Slide 51 text

その他の機能 51

Slide 52

Slide 52 text

52 CloudNative Days 2021での発表 インシデントレスポンスを自動化で支援する https://speakerdeck.com/hiboma/insidentoresuponsuwozi-dong-hua-dezhi-yuan-suru-slack-bot-deren-ji-ti-nasekiyuriteidui-ce-woshi-xian-suru

Slide 53

Slide 53 text

実装 設計 53

Slide 54

Slide 54 text

実装 設計 54 社内プライベートクラウド k8s で稼働 • Slack Bot + ダッシュボード パート • Ruby on Rails + slack-ruby-client • Slack Events API を利用 • ChatGPT パート • Celelry + FastAPI sssbot の実装 Rails FastAPI Celery

Slide 55

Slide 55 text

55 先人のプラクティスに学ぶ Incident Response and Incident Analsys Two Great Tastes Incident Command for IT What We’ve Learned from Fire Department 引用 https://www.youtube.com/watch?v=QAl3tF9eZek 引用 https://www.usenix.org/sites/default/files/conference/protected-files/srecon18americas_slides_chapman.pdf @brent_chapman

Slide 56

Slide 56 text

56 チャットを活用するためのプラクティスが盛りだくさん • チャンネルの運用方法 • 例) 1チャンネル1インシデント、名前の付け方 • チャットコミュケーションの回し方 • 例) 自分が何をやっているかテキスト、スクショ、リンクを貼って声をあげよう • インシデント時の組織体制 • 例) 平時と緊急時のリーダーシップは別で考えよう 3象現やタイムラインのモデルも Brent Chapman さんのエントリの内容を元にしています。ありがたすぎる .... @sssbot の DNA: Brent Chapman さんから学ぶ 先人のプラクティスに学ぶ

Slide 57

Slide 57 text

57 先人のプラクティスに学ぶ PagerDuty Incident Response 引用 https://response.pagerduty.com/ @sssbot の DNA

Slide 58

Slide 58 text

58 書籍からプラクティスを学ぶ @sssbot の DNA 引用: https://www.oreilly.co.jp/books/9784873117911/ 引用: https://gihyo.jp/book/2020/978-4-297-11265-3 引用: https://www.oreilly.com/library/view/incident-management-for/9781491917619/

Slide 59

Slide 59 text

評価 課題 59

Slide 60

Slide 60 text

評価 課題 60 @sssbot で改善できたこと • 部門やサービスを超えてのプロセスの標準化 • CSIRT* や 経営層への情報共有の促進 社内CSIRT 経営層 部門 サービス

Slide 61

Slide 61 text

61 やっぱり 事後分析のプロセスが 重たい ... • サマリをまとめる • postmortem のドキュメントを書く • postmortem のレビューを進行する • アクションアイテム* を出す (最重要) 「後でやろう」となりがち @sssbot を使っても、なお残る課題感 事後分析 注) postmortem の文脈でなければ、再発防止策と呼ぶでしょう。 🪨 🪨 評価 課題

Slide 62

Slide 62 text

62 レスポンス 3日前に作ったばかり 改善案: ChatGPT API でインシデントのサマリを生成 llama_index の SlackReader + GPTSimpleVectorIndex + ChatGPTLLMPredictor で作っています 1チャンネルに 1インシデントの記録が集約されるので、チャンネルのメッセージを丸ごとインデックスして扱えば良い 評価 課題

Slide 63

Slide 63 text

最後の締め 63 • インシデントログのデータ活用で、明るい未来が見えてる ! • 初動・対応フェーズでの活用も模索したい • ChatGPT API の処理速度が上がれば、準リアルタイムでも支援できるだろう • 支援だけでなく「インシデント 解決方法の提案」も実現可能 AI (ChatGPT API) + インシデントマネジメント支援 = 楽しみ

Slide 64

Slide 64 text

64 Thank You! Thank You! 「ご静聴ありがとうございました」「We're hiring」などに言い換えても。

Slide 65

Slide 65 text

見送りスライド 65

Slide 66

Slide 66 text

設計・実装 66 pros • 組織の体制やプロセスに準じた機能を提供 • 同僚からフィードバックを受けてすぐ UI / UX 改善 cons • 作り込み度合いをどこまでやるか • 私が Web UI の実装に弱いという話も ... インシデントマネジメントのシステム内製の pros / cons 🛠 💰

Slide 67

Slide 67 text

67 インシデントが同時多発すると グシャ っとなる • 例) 社外連携している SaaS や IaaS で障害 🔥 • ペパボ内の複数サービスでインシデントチャンネルが同時にたつ • チャンネルを超えて情報共有や指示出しが進めにくい 最近の課題感 🔥 🔥 🔥 Saas / Iaas 🔥