HardeningというのはWASForumによるセキュリティの実践演習イベントだ。サイト改ざん、サーバへの侵入、サービスへのDDoS攻撃、個人情報の流出...次々と発生する様々なインシデントに対して参加者はエンジニアとして運用担当者としてカスタマーサポートとして対応しなければならない。本家本元のHardeningは競技時間が8時間で2日間開催だ。こいつは非常にタフなイベントで中の人が例えて曰く「精神と時の部屋」である。Hardeningだ。前回参加したのがこのMicro、そして今回の参加がMiniだ!https://minihardening.connpass.com/event/95508/ハードニングのコンセプトは「マイルドな修羅場に参加者を叩き落として飛躍的に成長させること」である。今回のMiniHardeningも本家ほどではないにしろ「カリン塔あるいはミスターポポの修行」くらいだと主催者たちは語る。今回はそんなMiniHardeningへ参加したレポートだ。レポートとはいえ......実はMiniHardeningは何度も同じ題材で開催されるので競技が終わった後でも公平性のために具体的な内容についての言及が禁止されているのでWriteupは書けないんだ。いやぁ、まさか██████の脆弱さについて事前に対応したことが██████の████に影響して██████してしまうとは......。MiniHardeningは前日くらいにメンバー間の経歴などを元になるべく平たくなるように運営側によってチーム分けが行われる。実はチームで参加する事は出来ず全員が申し込み時点では個人参加なのでチームについて悩む必要は無い。基本は4人チームだが不運にも自分たちのチームは3人しかいなかった。そんな不運も関係なく競技結果は準優勝だったので急な欠席などの事情でチームメンバーが欠けても悲観的になる必要は無い。新しいバージョンの初回開催は大抵なんらかがゴタつくらしく今回も例外ではない。自分のチームが利用したインスタンスも含めて多少のリアルインシデントが発生して接続できなかったりアプリが動いてなかったりするが、落ち着いて確認し問い合わせるなどの対処をしよう。それがハードニングなんだ。修羅場を体験しているのは開催側の方ではないか?競技の話をすると、出来る限り構成や資料を見て事前に対応できることを探すのも重要ではあるが、もっとも重要なのはインシデントの発生に対して素早く対応することだ。競技としてスコアを稼ぐ為に最も重要なことは実のところ「インシデントの発生を手早く発見する」というところにある。全ての攻撃に事前対処するのは不可能だ。事前対処のために集中・作業するとインシデントへの対応が遅れる。ダウンタイムを短くする事に徹した方がスコアは伸びる。これは少なくともMiniHardeningの場合には報告書などのスコア比重が軽いのが一因だ。極論を言えば、報告書を一行も書かなくても素早くインシデント対応が出来ていれば優勝出来るはず。インシデントがどこで発生したかを検知するための小技がいくつかある。......いや止めよう。ハードニングにはスコアがあり順位がある。目的はスコアを高めることではない。少なくとも評価基準をハックして報告書の手を抜くとか、些末な小技で勝負が決まるとか、そんなことは絶対に本筋じゃない。本筋ってなんだ?やるべきこと本筋とは普段なら経験できないインシデントを実際に経験することで対応力を高めることだ。やるべきなのはハードニングで経験したインシデントが、例えば自分たちが運用しているシステムで発生した場合ならどうするかといった思考実験だ。脆弱性や攻撃手法を自分たちの保守運用するシステムが防げるのか。これから構築するシステムに対して攻撃が発生するとしたらどんなことか。インシデントが発生した場合はどんなレポートラインになっているのか、そのレポートラインに不備は無いのか。ハードニングによる実践を通じて実務に生かそう。ISUCONと同様に『最も多くのものを持ち帰った人こそが勝者』であり、「自分が知識・勉強不足だ」ということを知ることが最も大きな収穫だといえる。優勝チームのメンバーがインタビューの時に「自分は何も出来なくて他のメンバーが対応するのを見てただけだった」という趣旨のコメントをしていたが、何も気にする必要はない。ぶっちゃけた話をしてしまえば、インシデントに対して素早く対応出来ると言うのは、自分が既に知っていることを出しただけで新しい学びがあったわけじゃない。イベントの意義を体現しているのは「出来なかった人」の方なのだから。知らせたいこと(公開されない)索引レポートやるべきこと。