RedmineでCSIRTのインシデント管理
Redmineの活用例の1つとして、組織内のセキュリティインシデントの管理があります。本記事では、企業等のCSIRT(コンピュータ セキュリティ インシデント レスポンス チーム)におけるインシデントハンドリングをRedmineで行うための設定例を紹介します。
この記事はリーフレット(PDF 5.3MB)でもご覧頂けます。
CSIRTとインシデントハンドリング
組織のセキュリティ対策のトライとして CSIRT(コンピュータ セキュリティ インシデント レスポンス チーム) が注目されています。 CSIRTの中心となる活動の一つが インシデントハンドリング です。
インシデントハンドリングとは、インシデント発生から解決までの処理全般の活動を指します。 インシデントの発生から解決までには事象の発見から情報収集・判断・対応・内外への報告など多くの活動が伴います。 活動の状況を関係者で共有すること、過去に取り組んだ対応を見直すなど、活動の運用をシステム化するメリットは大きいです。
強力な課題管理機能を備えるRedmineはインシデントハンドリングにも適しています。ここ最近、発生したインシデントの管理をRedmineを使って行う事例が増えてきています。
Redmineによるインシデント管理
インシデントの管理では記入する内容はエビデンスとして情報の改ざんから守る必要があります。 Redmineではログインユーザ毎に権限を細かく設定できるため、登録された情報の誤削除や改ざんなどを防ぐことができます。 またチケット操作について操作者や操作時刻、変更差分が自動的に記録されますので安心して利用することができます。 そして対応の経過をいくらでも履歴として追記することができるため、表計算ソフトなど帳票で管理する場合と比べ、柔軟に運用することが可能です。
その他インシデントに関連し行わなければいけない活動を 子チケット として管理することでインシデント発生から解決まで一連の活動を関係づけることができます。 類似のインシデントや関係する事象などは 関連するチケット として関係づけておくことにより他のインシデントの対応などと連携づけることもできます。
インシデント管理専用にRedmineを使用する事もできますが、既に利用しているRedmineに組み込むこともできます。 どちらの場合でもRedmineのデフォルトの項目とは管理する内容が異なるためインシデント管理用に個別の設定をすることにします。
プロジェクトの設定
プロジェクト
Redmineでは プロジェクト という単位で個別の設定をすることができます。
プロジェクトごとに個別に以下の設定が行えます。
- メンバーと権限
- 処理の流れ
- 個別項目
- 項目の表示設定
トラッカー
インシデント管理の様な特別なプロジェクトに対し専用の項目や処理の流れを組み込む場合、専用のトラッカーを作成し適用します。 (※トラッカーが増えすぎると管理が大変です。トラッカーは必要最小限で作成しましょう。)
トラッカーの作成画面で
- 何のプロジェクトで使用するか
- デフォルト項目のうち使用するものはどれか
を指定します。
またチケットのデフォルト状態を指定できます。一般的なタスクであれば 新規 の状態からチケットを起票しますが、実際にインシデントが発生した際は、起票より対応が優先すると考えられます。 起票するタイミングでは既にインシデントやインシデントへの対応は進んでいる事が想像できますので、 進行中 をデフォルトのステータスとして設定します。
トラッカーの使い方については次のページをご参照ください。
Redmineワンポイントチェック(5): トラッカーを正しく使おう
フィールドの追加
インシデントの管理では事象の性質や影響、情報源など管理すべき項目(=フィールド)が多岐に渡ります。 事象の共有や事後の分析のためにも必要となるフィールドを増やす必要があります。
Redmineでは標準のフィールドの他に カスタムフィールド で追加することができます。
カスタマイズのサンプルとして今回は次のフィールドを追加します。
項目 | 内容 | フィールドの種類 | 選択肢など |
---|---|---|---|
情報源 | インシデントの発見・検出元 | リスト(複数選択不可) |
|
インシデント重要度 | 重要度の指標を選択 | リスト(複数選択可) |
|
インシデント種別 | インシデントの種別 | リスト(複数選択可) |
|
役員への報告 | インシデントの経過が経営層に伝わっているか | リスト(複数選択可) |
|
事象経過 | インシデントに関する発生の経過 | 長いテキスト | |
一次対応内容 | 一次的にインシデントを抑えるために行った内容 | 長いテキスト |
リスト型としては リスト と、 キー・バリューリスト の2種類ありますが、リスト型を選択しました。 キー・バリューリストは値にリスト選択肢文字が割り当てられるため、選択肢文字の設定を変更すると既に登録済みのチケットの内容も変更されます。 とても便利な機能ですが、インシデント管理ではそれぞれのチケットは内容を変更せず、記録として残すべき対象と考えられます。 今回はあえてリスト型を採用しています。
設定例:情報源
設定例:事象経過
カスタムフィールド作成画面で対象となるトラッカーとプロジェクトにチェックを入れることで利用可能になります。
表示フィールドのカスタマイズ
画面上に不必要なものが表示されていると操作者は混乱してしまいます。これらを整理します。
まずトラッカーとワークフローで不必要なフィールドを消しましょう。
トラッカー
使用するトラッカーにて標準フィールドの項目から使用しないフィールドのチェックを外します。 指定したトラッカーではチェックを外したフィールドは使用しないことになります。
ワークフロー
フィールドに対する権限 のタブにてフィールドの表示を消すことができます。 使用しないフィールドを 読み取り専用 とすることでそのフィールドが表示されなくなります(システム管理権限を持っているアカウントでは表示されます)。
Redmine 2.1新機能紹介: トラッカー/ロール/ステータスごとにチケットの項目を必須・読み取り専用に設定可能
プロジェクト
画面上部で選択出来るRedmineの機能で使用しないものも消してしまいましょう。 プロジェクトの設定からモジュールタブを選び不必要な機能のチェックを外します。
変更前
変更後
ガイダンス表示
インシデント報告は多くの状況から対応を管理する必要があるため、できるだけ詳細に事象を把握している当事者が起票した方が望ましいです。 しかしながら滅多に使用しないシステムの画面を操作するのは難しいですし、インシデントの報告となると起票する行為自体気が重い作業です。 できるだけ難しさを省くためにもガイドを表示しておくといくらかは楽になると思います。
Redmineには画面を装飾する機能はありませんが、View-Cutomizeプラグインを使用するとCSSやJavascriptを挿入することができます。
GitHub - onozaty/redmine-view-customize: View customize plugin for Redmine
README.mdの通りインストールすると管理画面に設定項目が表示されます。
起票ガイドの例を示します。
上記では
Path Pattern | /projects/csirt/issues/new |
---|---|
Type | Javascript |
Code | $(function() { $('select#issue_assigned_to_id').val('13'); var guideText = '<p><strong>インシデントの状況を下記のフォームで報告してください。</strong><br><br>「題名」にインシデント発生日と簡単なタイトル、<br>「説明」に起きたことについてできるだけ詳しく記入して作成してください。<br></p>'; $('div#all_attributes').prepend(guideText); var sampleSubject = '例)【12/12】FAX誤送信'; $('input[name = "issue[subject]"]').attr('placeholder', sampleSubject); var sampleDescription = "起きたことをできるだけ詳しく記入してください"; $('textarea[name = "issue[description]"]').attr('placeholder', sampleDescription); $('textarea[name = "issue[description]"]').attr('rows', "6"); })(); |
の設定を入れてます。 これによりPath PatternにURLがマッチしたページでこのJavascriptが動作し以下の様な表記を画面上部に挿入します。
これらの設定で次の様な起票画面を作る事ができました。
最後に
今回はインシデントを登録する簡単なサンプルを作成しました。 このほかにもいろいろなアイデアでそれぞれの組織に合ったインシデントハンドリングのツールを作ることが出来そうです。
インシデント管理の方法が既に確立されているところはそれを具体化出来れば良いですが、まだ試行錯誤されている組織ではしっかりとしたものを作り上げるより、まずは簡単なところから使い始めて記録を残していき、チームなりの良い形を探っていくのが良いのでは無いかと感じます。
リーフレット版
本記事の内容をリーフレット(A4・6ページ)にまとめました。ぜひご活用ください。