閉域網は道具を奪うのではなく順序を変える
一言でいうと
エアギャップ環境で難しいのは、ツールがないという事実ではなく、外でいつも行っている調査の順序が丸ごと無効になるという事実です。
なぜ必要なのか
外の現場で見慣れないエラーに出会ったとき、私たちが実際に行う作業の順序はこうです。エラーメッセージをコピーする。検索する。同じ症状を経験した人の記事を読む。提案されたコマンドを貼り付ける。うまくいかなければ、ツールをもう1つインストールする。この5つのステップが体に染み付いているので、私たちはそれを「調査」と呼ぶことすらありません。ただの仕事の進め方です。
防衛産業・公共の国防の現場に入ると、この5つのステップが一度に消えます。
- インターネットがありません。検索も、ドキュメントサイトも、パッケージリポジトリもありません。
- 個人のノートPCを持ち込めません。昨日書いておいたスクリプトは外にあり、外にあるものはないのと同じです。
- 画面を撮影できません。写真も、キャプチャも、個人の記憶媒体も、持ち込み禁止です。
- ログを持ち出せません。そのログが原因の究明にどうしても必要でも、審査を通過する前には1行も出られません。
ここで初めて入った人が最も多く犯す間違いは、「ないものを惜しんで時間を使うこと」です。30分ほど経ってようやく、この中ではその方法が使えないことに気づき、そこからやり直します。1日にこうした30分が3、4回積み重なると、常駐の日程がまるごと遅れます。
どう動くのか
エアギャップ環境の調査は、順序が逆です。外では症状から出発して知識へ向かいます。中では持っているものから出発して症状へ向かいます。
1つ目に、始める前に持っているものの一覧を作ります。どのコマンドがインストールされているか、ログがどこにいくつあるか、構成変更の記録が残るか、設定ファイルがどこにあるか。この一覧が、その日の調査の範囲です。一覧なしで始めると、範囲外の方法を試し続けることになります。
2つ目に、ないという事実を証拠とともに固定します。「インターネットがつながらないようだ」と「curlが終了コード28で死ぬ」は、別の文です。前者は、あとで誰かがもう一度試すことになり、後者は、その議論を終わらせます。エアギャップ環境から出る報告書には、できることよりも、できないことのほうを、より正確に書く必要があります。
3つ目に、相関関係で原因を絞り込みます。エラーコードの意味を検索できないので、中にある異なる2つの記録を時間軸に並べることが、ほとんど唯一の方法になります。アプリケーションログの最初の失敗時刻と、構成変更記録の適用時刻。その間隔が3分なら、それが根拠です。間隔が3日なら、根拠ではありません。この判断は、知識ではなく、データ2組と時計で行います。
4つ目に、再現可能な形で書きます。中で作った調査スクリプトは外に出せませんが、中には残ります。次の人が同じものをもう一度作らなくて済むように、その場でファイルとして残さなければなりません。頭の中にあるものは、常駐が終わる日に一緒に出ていきます。
現場での姿
セキュリティ誓約と媒体の統制が、日課を変えます。入退室のとき、個人の記憶媒体は預けて入ります。コードを持ち込むには、許可された媒体に入れて、持ち込み審査を経なければならず、審査には時間がかかります。そのため、現実的には、中で最初から書くことが多くなります。外で完成させてきた100行のスクリプトよりも、中でその場で作れる20行のスクリプトのほうが役に立つという意味です。使い慣れたツールを減らし、標準ツールだけで仕事をする練習が、ここで効いてきます。
作業が終わったら、媒体を返却します。作業中に作った中間成果物は、たいてい外に出ません。そのため、「出すもの」と「中に残るもの」を、最初から分けて作る必要があります。作り終えてから何を出すかを選び始めると、そのときにはすでに機微な値があちこちに混ざっています。
一度痛い目に遭ったこと。エアギャップ環境で調べた結果をまとめて出そうとして、要約の中に残っていた内部ホスト名1つのせいで、持ち出し審査で差し戻されたことがあります。要約を3回読んだのに、気づきませんでした。人は、自分で書いた文章の中の、自分が残したものを見落とします。それ以来、目で読まずに、原本から機械的に抽出した禁止トークンの一覧で突き合わせます。
続けて読むこと
ここまでが「中でどう探すか」だったとすれば、すぐあとに来る記事は「見つけたものをどう外に出すか」です。原本ログは1行も出られないのに、本社の開発チームには原因を伝えなければならない状況で、何を残して何を消すかを決めることが、なぜ技術なのかを扱います。そのあとのラボで、2つの記事の内容を、一度に手で追います。