Upgrade to Pro — share decks privately, control downloads, hide ads and more …

インシデントレスポンスを自動化で支援する Slack Bot で人機一体なセキュリティ対策を実現する - SEASON2

Hiroya Ito
March 18, 2023
2.2k

インシデントレスポンスを自動化で支援する Slack Bot で人機一体なセキュリティ対策を実現する - SEASON2

Hiroya Ito

March 18, 2023
Tweet

Transcript

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

    View Slide

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

    View Slide

  3. 3

    View Slide

  4. 4

    View Slide

  5. 5

    View Slide

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

    View Slide

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

    View Slide

  8. スライドの注意
    8

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. 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

    View Slide

  18. 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
    「インシデント」「障害対応」をテーマにしたテックブログのエントリ

    View Slide

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

    View Slide

  20. 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

    View Slide

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

    View Slide

  22. 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 の文脈も含めた広義のインシデント ( 障害 + セキュリティンシデント ) のカンファレンスのようです
    セキュリティインシデント をメインテーマにしたカンファレンスは他にもあると思います

    View Slide

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

    View Slide

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

    View Slide

  25. 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/

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. 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ペパボの実情に合わせて 改変・解釈した図としています
    インシデントマネジメントのプロセス
    🛠準備 🔥対応
    🔍事後分析
    初動
    復旧
    解決

    View Slide

  30. 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
    ● 再発防止
    インシデントマネジメントのプロセス
    初動
    復旧
    解決
    🛠準備 🔥対応
    🔍事後分析

    View Slide

  31. 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

    View Slide

  32. 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

    View Slide

  33. @sssbot 初動の支援
    33

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. 💡 スクリーンショットはインシデント対応訓練の Slack 通知であり、実際のインシデントではありません
    37
    チャンネル作成の通知をブロードキャストする



    部門、サービス、職種でチャンネルが細分化されているので広く通知 !
    hoge
    事後対応
    対応
    初動の支援

    View Slide

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

    View Slide

  39. スクリーンショットは Salesforce Collective: Collection Preview https://salesforce.widencollective.com/c/raqrnql6 を用いた
    39
    初動対応チーム

    セキュリティ対策チーム 

    @sssbot が初動対応チーム(*) を invite する
    CTO, VPoE, ...

    事後対応
    対応
    招集!
    💡 サービス、部門ごとに初動対応チームを編成しています。技術職、カスタマーサポート職、マネージャー職などが含まれた
    Slack グループです。
    初動の支援

    View Slide

  40. 対応の支援
    40

    View Slide

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

    View Slide

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

    View Slide

  43. 💡 スクリーンショットはインシデント対応訓練時の Slack 通知であり、実際のインシデントではありません
    43
    “復旧 ” できたら通知をブロードキャストする
    事後対応



    対応
    開けたら閉める。みんなに認知してもらうのが大事。
    対応の支援

    View Slide

  44. 事後分析の支援
    44

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. 💡 スクリーンショットはインシデント対応訓練時の Slack 通知であり、実際のインシデントではありません
    48
    対応を “完了” したら 通知をブロードキャストする



    全ての対応を完了して、チャンネルを /archive した際にも通知を出します。
    事後分析
    事後分析の支援

    View Slide

  49. 準備の支援
    49

    View Slide

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

    View Slide

  51. その他の機能
    51

    View Slide

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

    View Slide

  53. 実装 設計
    53

    View Slide

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

    View Slide

  55. 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

    View Slide

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

    View Slide

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

    View Slide

  58. 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/

    View Slide

  59. 評価 課題
    59

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  65. 見送りスライド
    65

    View Slide

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

    View Slide

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

    View Slide