[小ネタ] CSVダウンロードしたAWS Security Hub検出結果のファイル構造が変わっていました

2024.04.29

あしざわです。

AWS Security Hubの検出結果のCSVダウンロード機能は、2022年のアップデートから利用できるようになっています。

先日こちらの機能を使ってCSVファイルを取得したところ、CSVファイル構造が変わっていることに気づきました。

ここでいう「CSVファイル構造」とは、このようなカンマ区切りで表現されるフィールド(ヘッダー、本文)の並び順のことを指します。

ヘッダーA,ヘッダーB,ヘッダーC
本文A1,本文B1,本文C1
本文A2,本文B2,本文C2

忙しい方向けのまとめ

  • 変更の対象は2つ
    • セキュリティ標準すべての検出結果(Security Hub > コントロールからダウンロードできるCSV)の一覧から出力したCSV
    • 個別のセキュリティ標準の検出結果(Security Hub > セキュリティ標準 > [セキュリティ標準名])の一覧から出力したCSV
  • アップデート前後のファイル形式はこちら
    • 変更前: "コンプライアンスのステータス","重要度","ID","タイトル","不合格のチェック","不明なチェック","利用不可のチェック","合格したチェック"
    • 変更後: "ID","タイトル","コントロールステータス","重要度","不合格のチェック","不明なチェック","利用不可のチェック","合格したチェック","カスタムパラメータ"
  • 差分は以下
    • 冒頭の4つ目までのフィールドの並び順が変わっている("コンプライアンスのステータス""コントロールステータス"に変わった)
    • 一番最後のフィールドに"カスタムパラメータ"が追加されている

概要

Security Hubの検出結果のCSVダウンロードはマネジメントコンソール上からのみ実行できます。この機能はAWS CLIやSDKなどを使ったAPI経由では利用できないため、同様のことをAPI経由でやろうとするとSecurity Hubの出力結果を整形することになり少し大変です。

現時点でCSVダウンロードできる検出結果は以下の3種類です。

  1. アカウントで有効化されているすべてのセキュリティ標準の検出結果の一覧(Security Hub > コントロール)
  2. 個別のセキュリティ標準の検出結果の一覧(Security Hub > セキュリティ標準 > [セキュリティ標準名])
  3. 個別のコントロールの検出結果の一覧(Security Hub > セキュリティ標準 > [セキュリティ標準名] > [コントロールID])

1点目のアカウントで有効化されているすべてのセキュリティ標準の検出結果の一覧は、有効化されているセキュリティ標準すべての検出結果の一覧がコントロールID単位で確認できます。

特徴は1ページあたり検出結果50件となるようにページ分けされている点です。CSV出力したファイルもコンソール上で表示されている50件までの結果しか含まれていないため、50件以上の結果をすべて出力したいケースでは適していないため注意です。

2点目の個別のセキュリティ標準の検出結果の一覧は、有効化されている特定のセキュリティ標準に含まれるコントロールの検出結果の一覧がコントロールID単位で確認できます。

特徴は1点目と比較するとページ分けされておらず、すべての出力結果がCSV出力できる点にあります。

3点目の個別のコントロールの検出結果の一覧は、Lambda.1のようなコントロールIDの形式で表現される特定のコントロール1つの出力結果の一覧が確認できます。

1点目、2点目とフィールドの項目が異なりアカウント名やリソース名、ワークフローの状態など具体的な検出結果まで表示されていますね。

ちなみに、検出結果の統合機能の登場で「コントロール」はセキュリティ標準から独立した概念になったため、複数のセキュリティ標準を利用していてもコントロールごとに1回重複してチェックされることがなくなりました。

アップデートによって出力された形式が変わっていたのは、1. アカウントで有効化されている〜一覧2. 個別のセキュリティ標準の検出結果の一覧の2つです。

確認した変更差分

アップデートによる変更後の出力結果はブログ執筆時点のものであり、変更前のサンプルは2023年の10月末頃に出力したCSVファイルを参考にしています。

変更前は以下の形式でした。

"コンプライアンスのステータス","重要度","ID","タイトル","不合格のチェック","不明なチェック","利用不可のチェック","合格したチェック"

現在は以下の形式になっています。

"ID","タイトル","コントロールステータス","重要度","不合格のチェック","不明なチェック","利用不可のチェック","合格したチェック","カスタムパラメータ"

変更差分は以下です

  • 冒頭の4つ目までのフィールドの並び順が変わっている
    • "コンプライアンスのステータス","重要度","ID","タイトル"
    • "ID","タイトル","コントロールステータス","重要度"
  • 一番最後のフィールドに"カスタムパラメータ"が追加されている

1点目のコンプライアンスのステータスからコントロールステータスへとフィールドの名称が変わっていますね。

どちらも「成功」「失敗」など、コントロールのチェック状態のステータスを表現するものなので、フィールドとしての目的は変わっていませんが、変更後のコントロールステータスは以前のコンプライアンスのステータスでは表示されなかった「成功」「失敗」以外の「データなし」「無効」「不明」のようなイレギュラーな状態も表示できるようになっています。

2点目のカスタムパラメータですが、そのコントロールIDがSecurity Hubのパラメータカスタマイズ機能に対応しているかを表す項目です。

こちらは去年のアップデートで利用できるようになったセキュリティ標準の条件をチューニングできるようになった機能です。

さいごに

本ブログではSecurity HubのCSV出力結果の変更について、概要の深掘りや変更差分の確認を行いました。

私は普段の業務の中で、CSVダウンロード機能でSecurity Hub検出結果を出力しエクセルやスプレッドシートの関数を利用して出力結果を分析することがありました。

CSVファイル構造が変わり出力結果がずれると関数が正しく表示されなくなるため、どのように変わったかキャッチアップしておきましょう。

AWS What's newでのアップデートのアナウンスがないため、出力結果が変わった正確な時期は不明です。

しかし、CSVの新しいフィールドとしてコントロールのカスタムパラメータが追加されていたため、カスタムパラメータが登場した2023年の終わり頃だとは想像できます。

このブログがどなたかの役に立てれば幸いです。

以上です。