freeeの開発情報ポータルサイト

障害訓練、これ見てやってみよう

こんにちは。freee で CISO 兼 CIO をやっている土佐と申します。 この記事は freee Developers Advent Calendar 2019 の20日目です。

みなさん、障害訓練てやってますか?

やんなきゃいけないとは思いつつ、なかなか腰が重くなる仕事ですよね?

わかります。

当社では、今年の10月に大規模な障害訓練を実施し、非常に多くの学びがあり、継続的にやっていこうと意識が高まっております。

この記事では、訓練の企画から実施までを円滑に実施するために、ある程度フレーム化したものを紹介したいと思います。障害訓練の参考になればと思います。

なお、これは陸上自衛隊出身で当社のCSIRTマネージャーを勤めている 粟津さんの知見がふんだんに盛り込まれています。彼がいてくれて本当によかったと心から思います。

まずは重い腰をあげる

専任の担当者がアサインされてでもしていない限り、片手間での対応にならざるを得ないのが障害訓練です。日々忙しいなか、どうしても腰が重くなってしまいますよね。これをエイっと、みんなの「よしやるか!」を引き起こすための何かが必要になってきます。

汎用的な手段ではないかもしれませんが、当社では標語を作りました。

「あの日を忘れない。10月は障害訓練月間」

あの日とは、去年の10月31日にやらかしてしまった 大障害です。ちょうど去年のアドベントカレンダーで弊社の平栗がお詫びと学びを共有させていただいています。

この障害は当社にとって本当に大きなもので、これ以降、様々な危機管理対策、品質向上対策を行ってきました。それは色々全社を巻き込んだものであるため、全社員の危機意識も向上できていると思います。

関東大震災が発生した 9月1日を防災の日としたことに倣い、10月を障害訓練月間とすることで、あの障害で高まった意識を風化させることを防ぎ、また全社で取り組むべきイベントという意識づけを狙いました。

このようなポスターも、社内の各フロアの扉に貼って、オンラインだけでなくオフラインでも啓蒙に繋がるような取り組みにしました。

「10月は障害訓練月間」と書かれたポスター。背景は日経コンピュータにfreeeで発生した障害が掲載されたときのページの写真
障害訓練月間ポスター

ちなみに、この背景画像になっているのが、日経コンピュータの「動かないコンピュータ」シリーズに掲載された、あの障害の記事のページです。このシリーズに載ったことも、当社にとって非常に大きなインパクトになりました。

まずテーマを決める

さてまずはテーマを決めないといけません。障害対応に関係することが多い各チームのキーマンを招集し、定例会の日程を抑え、テーマの議論に入りました。

テーマは、「障害訓練を実施することで ◯◯ ができることが確認できる」というような形で検討します。

当社が具体的にどういうテーマでやったかを記載するのは差し控えさせていただきますが、例えば、以下のような感じです。

  • XXXのパターンの障害発生時にノーダウンで縮退運用に移行できることを確認する
  • いつも障害対応をするメンバーがいなくても、障害時の顧客コミュニケーションができる(属人化されていない運用が確立していること)を確認する
  • 内部不正の発生を迅速に特定して、顧客・メディアへの消火対応を行えることを確認する

訓練概要と参加メンバーを決める

テーマが決まったあとは、訓練概要を決めます。

  • どういう原因で、どういう事象が発生するのか
  • どういう影響範囲を想定した事象なのか
  • どこまでの対応を訓練の中でやるのか

訓練概要が決まれば、実際に訓練に参加してもらうメンバーを確定します。

日程を決め、予定を押さえる

メンバーが固まったらとっととメンバーの予定を押さえます。ある程度長時間になるので、早めに押さえておくといいですね。また会議室も早めにおさえておけるといいでしょう。

よりリアリティを求めて、予定を確保せずに抜き打ちでやる手もありますが、訓練を回す難易度がかなり上がってしまうので、やはり予定を確保しておいたほうがいいと思います。「抜き打ちに耐えられる」をテーマにするのであれば別ですが。

また訓練実施日だけでなく、振り返りの会議の日程もおさえてしまいましょう。

準拠したいガイドライン・マニュアルを決める

実際に事象が発生した時の対応として、どういう行動を取るべきかが記載されたガイドラインやマニュアル、手順書のドキュメントについて確認をしましょう。

これによって、訓練時の行動に対して評価ができますし、訓練とそれまでの準備を通してドキュメントの有効性についても確認できます。

準拠すべきドキュメントが存在していない場合は、訓練実施までにそれを準備することをタスクに組み込みましょう。さらにそのドキュメントが一定程度有効かを机上演習で事前に確認しておけると、とてもいいと思います。

参加メンバーの役割分担を決める

参加メンバーは「統制する側」と「参加する側」に分かれます。

統制する側は訓練をコントロールする役割です。参加する側は、訓練を受ける側ですね。

中途半端にどちらにも所属するようなメンバーを作るべきではありません。きっちり分けるようにしましょう。普段、障害対応に参加することが多いとか、障害対応運用を構築することが多い立場のメンバーが統制する側に立つのが良いと思います。

統制する側には、以下の役割が必要です。

  • 統制統括役

    • 訓練フェーズへの遷移を決めて新しい状況を訓練に与える
    • 参加メンバーの行動を俯瞰できる環境にいる
    • 訓練そのものに対する問い合わせに対応する
    • 訓練が思うように進まない場合にフォローをする
  • 仕掛け人役

    • 仮の相手を演じる。
    • 内部不正を行う人、メディア記者、官公庁担当者、顧客担当などなど
  • 記録役

    • 参加メンバーの行動をメモっていく
    • 教訓となりそうなこと、準拠すべきドキュメントから逸脱した行動などは、積極的に記録していく
    • 随時写真や動画などを撮っておくことも振り返りに役立つ

シナリオを決める

時系列に沿って、どういう事象が発生するのか、それに対してどういう対応を期待するのか、次のシナリオに遷移するのに何が必要か、統制側からフォローする範囲は何かを決めます。 下記のように、「タイムボックス」に時系列ごとのシナリオを記載しました。

  • 状況
    • 11:00~12:00
    • メディア記者から情報漏洩の速報を15:00に配信するという連絡が届く
  • シナリオ
    • PR担当の XX宛に電話で、情報漏洩のタレコミがあり、それを受けて速報を15:00に配信するという連絡がくる
    • PR担当はセキュリティ担当にエスカレーションし、そこからさらに経営陣へのエスカレーションが行われる
    • 参加チームは速報が出るまでに取るべき対応をとる
  • 訓練側に期待すること
    • [ ] 記者からの連絡を正確にセキュリティ担当にエスカレーション
    • [ ]セキュリティ担当から迅速に経営陣へエスカレーション
    • [ ] 記者に具体的な情報を引き出す交渉を行う
    • [ ] 従業員向けに社外からの問い合わせへの回答方針をアナウンスする
    • [ ] 関連事象の社内調査を実施する
  • 遷移条件
    • 上記が全て満たされる
    • あるいは12時になってしまう
  • 統裁側の統制
    • セキュリティ担当へのエスカレーションまではもし実施されない場合にはフォローを行う

なお、訓練であることをしっかり見分けられる統制は必要です。

例えば、本番のインシデントを共有するの同じチャネルでインシデント情報を共有する場合は、文頭に 【訓練】 とつける、など。また、この記号をつける統制について、訓練実施前日などに共有しておくことも大事です

また、事象が発生したことを表現できる素材は、可能な限りリアルに用意しておくと、よりリアリティのある訓練ができて効果的です。例えば、SNS上で炎上しているツイートのスクリーンショットとか、メディア記事サイト、漏洩した顧客情報のスクリーンショット、実際に不正操作をしたログ、などなどです。

訓練の実施

全ての準備が整ったらいよいよ訓練の実施です。

訓練を実施している最中にどうしても起こってしまうのは、「どこまでが与えられた状況で、どこからはリアリティ持って対応をしないといけないこと?」と参加メンバーが戸惑ってしまう状況です。これに迅速に回答できるように、統制側は緻密にシナリオを組んでおくべきですし、訓練最中の問い合わせに回答できるように準備しておくべきです。準備できていない点について問い合わせを受けたら、慌てずに統制サイドで迅速に議論し、その場その場で方針を決めていきましょう。

振り返り

振り返りまでちゃんとやることはとても大事です。 やってみて得られる気づきは必ずあるものです。またそこからTODOも発生すると思います。そのTODOをきちんと実行できるようにフォローしていきましょう。

実際に freee でやってみてどうだったか

まずは、「やれてよかった」「やってよかった」という感想が一番強いです。やってみて、色々な気づきが得られて、参加チームが自発的に「おかわり訓練」をやってくれるなどの動きも見られました。また、思った以上に経営陣含め、社員が積極的に関わってくれて、会社のチームとしての強さを感じることもできました。また、この手の「やばい感じのお祭り」が好きなメンバーというのは一定数いるもので、そのことと、それが誰かなのかがよくわかったのも面白かったです。トップダウンでやるよりも、そういうメンバーを負担かけすぎない程度にうまく巻き込んでいくことで、ムーブメントっぽく進めることができると思っています。

一方で準備不足、運営の未熟さを感じる場面も多かったので、その辺りはよく学んで次回に生かしていきたいと思います。

WANTED!

freeeでは freee の危機管理能力を爆上げしてくれる次世代CISOを積極募集中です!

jobs.jobvite.com

明日は?

明日は freee でもっとも尖った、活きのいい若手エンジニア kotegawa くんの出番です!お楽しみに!