Excelの「XLOOKUP」で脆弱性管理をラクにする手順:脆弱性リストとIT資産リストの突合を高速化
頻繁に出るIT製品の脆弱性情報をどう効率よく管理するかが、セキュリティ担当者にとって悩みどころだ。Excelの「XLOOKUP関数」を使えば、脆弱性管理のスピードを高められる。
セキュリティ担当者にとって悩みの一つである脆弱(ぜいじゃく)性管理。攻撃や他のセキュリティインシデントを防ぐために素早い対応が求められる。しかし、情報処理推進機構(IPA)など外部の脆弱性情報を社内のIT資産リストと突き合わせて「どの脆弱性がどのシステムに該当するか」の確認作業が非効率で、対応に時間がかかってしまう――。
実は「Microsoft Excel」の「XLOOKUP関数」を使えば、脆弱性管理の作業の効率性を上げ、対応の迅速化につなげることができる。本稿はその具体的な手順を簡潔に紹介する。
XLOOKUP関数で脆弱性を管理する方法
XLOOKUPは、検索する値を指定したセルの範囲で縦方向に検索し、一致したセルの右側のセルにある列の値を返す関数だ。基本構造は以下の通りで、覚えておくと便利だろう。
=XLOOKUP(検索値, 検索範囲, 戻り範囲, 見つからない場合)
では、XLOOKUPを使って、脆弱性情報リストとIT資産リストの突合を高速化させるための手順を見てみよう。
本稿で解説する手順では、以下の2つのシートが同一のExcelファイル内に存在することを前提とする。
- IT資産リスト(シート名:「IT資産」「Asset」など)
- 社内のIT資産情報を管理するメインのシート。
- 製品名(B列)、バージョン(C列)を含む。
- 脆弱性情報を書き込むD列(該当CVE)とE列(CVSS)を空欄で用意しておく。
- 脆弱性リスト(シート名:「Vuln」)
- IPAなどの外部情報源から取得した脆弱性情報を管理するシート。
- 1行につき1つのCVE-IDを記述する。
- 製品名(A列)、バージョン(B列)、CVE-ID(C列)、CVSSスコア(D列)を含む。
ステップ1:製品名とバージョンで CVE-IDを引き当てる
ITベンダーなどによって脆弱性情報が公表されたら、脆弱(ぜいじゃく)性識別子「CVE」(Common Vulnerabilities and Exposures)が割り当てられる。ステップ1では、IT資産リストのD2セル(該当CVE)に以下を入れる。
=XLOOKUP(B2&"-"&C2,Vuln!$A:$A&"-"&Vuln!$B:$B,Vuln!$C:$C,"なし")
「B2&"-"&C2」はIT資産リスト側での結合キーを作り、「Vuln!$A:$A&"-"&Vuln!$B:$B」は脆弱性リスト側でも結合キーを作成する。この式は、同じキーをもつ行のCVE-ID(Vuln!$C:$C)を返し、見つからなければ「なし」とする。
この式を使うことによって、「製品名だけ」「バージョンだけ」では一意にならない場合でも情報を突合できる。パッチ(修正プログラム)適用対象の抽出が一瞬で終わることも、この式を利用するメリットだ。
ステップ2:複数のCVEがある製品にも対応する方法
1つの製品に複数の脆弱性が存在するケースがある。その場合、XLOOKUPで最初の1件しか返せない。このときは、XLOOKUPをFILTER関数と組み合わせることで、複数の脆弱性への対応が可能になる。IT資産リストのD2セルに以下を入れる。
=TEXTJOIN(",",TRUE,FILTER(Vuln!$C:$C,(Vuln!$A:$A=B2)*(Vuln!$B:$B=C2),"なし"))
この式のメリットは、特定のIT資産の全CVEを1セルにまとめて表示できることや、「優先度順に並べる」「重大な脆弱性のみ抽出」といった拡張ができることだ。
ステップ3:最も深刻なスコア(最大CVSS)を同時に引き当てる
脆弱性には、その危険度を10段階で示す「CVSSスコア」が付けられる。CVSSは「Common Vulnerability Scoring System」の略だ。セキュリティ担当者はCVSSスコアを見れば、対応の緊急性について判断しやすくなる。このステップでは、IT資産リストにE列(CVSS)を追加し、E列に以下を入れる。
=MAX(FILTER(Vuln!$D:$D,(Vuln!$A:$A=B2)*(Vuln!$B:$B=C2)))
この式によって、該当する全ての脆弱性の中から最も深刻なもの(最大CVSSスコア)を取得する。
Copyright © ITmedia, Inc. All Rights Reserved.