Inspector V2のスキャン要件を深ぼってみる

2023.03.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、コンサルティング部の南です。
皆さんInspectorを活用していますか?

Inspector V2のスキャン要件がいまいち分かっていなかったので、今回まとめてみました!

結論

結論としてはこちらになります!

条件: Amazon Inspector がインスタンスを検出した場合

OS

全てのOS

仕組み・関連するリソース

Inspector内部によるものと推測

説明

EC2のステータスが「実行中」に変更されたタイミングでスキャンが行われる。
EC2を新規作成した場合停止中のインスタンスを起動した場合が該当する。

条件: 既存のインスタンスに新しいソフトウェアをインストールする場合

OS

Linux

仕組み・関連するリソース

ステートマネージャーInspectorInventoryCollection-do-not-delete(ドキュメント名 : AWS-GatherSoftwareInventory)

説明

Inspector有効時に自動作成されるステートマネージャーInspectorInventoryCollection-do-not-delete(ドキュメント名 : AWS-GatherSoftwareInventory)によってEC2 Linux インスタンス内のインベントリ情報を元にスキャンが実施される。
デフォルトではrate(30 minutes)となり、30分間隔で実行される。
パッチ適用などでアップデートした場合も条件に含まれる。

条件: Amazon Inspector が新しい Common Vulnerabilities and Exposures (CVE) 項目をそのデータベースに追加するとき

OS

Linux

仕組み・関連するリソース

Inspector内部によるものと推測

説明

条件の通り

条件: Inspector有効時に自動作成されるステートマネージャー「InvokeInspectorSsmPlugin-do-not-delete」が実行されるタイミング(ドキュメント: AmazonInspector2-InvokeInspectorSsmPluginが実行される場合)

OS

Windows

仕組み・関連するリソース

ステートマネージャーInvokeInspectorSsmPlugin-do-not-delete(ドキュメント名 : AmazonInspector2-InvokeInspectorSsmPlugin)

説明

WindowsEC2にインストールされているAmazon Inspector SSM プラグインの実行ファイルInspectorSsmPlugin.exeが実行されることでスキャンが行われる。

Inspectorを有効化するとステートマネージャーInvokeInspectorSsmPlugin-do-not-delete(ドキュメント名 : AmazonInspector2-InvokeInspectorSsmPlugin)が作成される。
デフォルトではrate(6 hours)となり、6時間間隔で実行されているが、スケジュール式を任意のcron式またはレート式に設定することでカスタマイズ可能。

Inspector V2のスキャン要件

まずは公式ドキュメントを確認してみましょう。

以下の条件でAmazon Inspectorがスキャンを行います。

  • Amazon Inspector がインスタンスを検出するとすぐに。
  • 新しいインスタンスを起動するとき。
  • 既存のインスタンスに新しいソフトウェアをインストールする場合 (Linux のみ)。
  • Amazon Inspector が新しい Common Vulnerabilities and Exposures (CVE) 項目をそのデータベースに追加するとき (Linux のみ)。

またWindowsは以下の記載があります。

Linux ベースのインスタンスのスキャンとは異なり、Amazon Inspector は定期的に Windows スキャンを実行します。Windows インスタンスは最初に検出時にスキャンされ、その後 6 時間ごとにスキャンされます。ただし、デフォルトの 6 時間のスキャン間隔は調整可能です。詳細については、Windows インスタンス スキャンのカスタム スケジュールの設定 を参照してください。以下は、Amazon Inspector が Windows インスタンスをスキャンする方法の概要です。

Inspector を有効化する際に作成されるリソースについて

公式ドキュメントに記載されている要件を理解するために、Inspectorを有効化すると作成されるSystems Managerのステートマネージャーについて詳しく見ていきましょう。

Inspectorを有効化すると、Systems Managerのステートマネージャーが3つ作成されます。

InspectorInventoryCollection-do-not-delete

このステートマネージャーでは、ドキュメントAWS-GatherSoftwareInventoryが実行されます。
スケジュール式はrate(30 minutes)となっており、30分おきに実行されます。

AWS-GatherSoftwareInventoryは、EC2内のインベントリ収集を行うドキュメントです。これにより、Systems Manager内でインスタンス内のインベントリ情報を確認することができます。

ドキュメントにも以下のように記載があります。

Amazon Inspector では、ソフトウェア アプリケーションのインベントリを収集するために、アカウントに Systems Manager State Manager の関連付けが必要です。InspectorInventoryCollection-do-not-deleteAmazon Inspector は、関連付けがまだ存在しない場合に呼び出される関連付けを自動的に作成します。

つまり、以下の要件はステートマネージャーで収集したインスタンス内のインベントリ情報を元にスキャンが実施されるということになります。

  • 既存のインスタンスに新しいソフトウェアをインストールする場合 (Linux のみ)。

また、検証してみたところ、パッチ適用などでソフトウェアをアップデートした際もスキャン要件に含まれていました。

注意点ですが、Inspector有効化前に独自でAWS-GatherSoftwareInventoryのステートマネージャーを作成している場合は、InspectorInventoryCollection-do-not-deleteの作成はスキップされるようです。
そのため、長い間隔のスケジュール式を設定していた場合、上記の要件を満たしているのに、スキャンされなかった、などの問題も起こりうる可能性があります。

また、InspectorInventoryCollection-do-not-deleteの作成後でも独自でステートマネージャーを作成した場合、自動作成されたステートマネージャーは実行されない現状がありました。この場合でも、上記のような問題が考えられそうです。 そのため、意図した動作を行うためにも、AWS-GatherSoftwareInventoryのステートマネージャーは1つにするのが良いでしょう。

ちなみに公式ドキュメントの「よくある質問」では以下のようなQAがあります。

Q: SSM インベントリ収集頻度をデフォルトの 30 分から 12 時間に変更すると、Amazon Inspector による継続的なスキャンにどのような影響がありますか?

A: デフォルトの SSM インベントリ収集頻度を変更すると、スキャンの継続的な性質に影響を与える可能性があります。Amazon Inspector は、SSM Agent を利用してアプリケーションインベントリを収集し、結果を生成します。アプリケーションインベントリの期間がデフォルトの 30 分から増加すると、アプリケーションインベントリへの変更の検出が遅れ、新しい検出が遅れる可能性があります。

InspectorDistributor-do-not-delete

こちらのステートマネージャーでは、ドキュメントAmazonInspector2-ConfigureInspectorSsmPluginが実行されます。スケジュール式はrate(12 hours)で、12時間おきに実行されるようです。

このドキュメントは、Windows用Amazon Inspector SSMプラグインのインストールを行うドキュメントです。Amazon InspectorがWindowsインスタンスをスキャンするには、Amazon Inspector SSMプラグインが必要となります。
このステートマネージャーが実行されると、Inspector SSM プラグインがインストールされます。

Amazon Inspector SSM プラグインは、Windowsインスタンスの:C:\Program Files\Amazon\Inspector。に自動的にインストールされます。

この場所にインストールされる実行可能バイナリファイルの名前は InspectorSsmPlugin.exe となります。
また、Amazon Inspector SSM プラグインによって収集されたデータを保存するために、次のファイルの場所が作成されます。

  • C:\ProgramData\Amazon\Inspector\Input
  • C:\ProgramData\Amazon\Inspector\Output
  • C:\ProgramData\Amazon\Inspector\Logs

ここまでで、新規作成に利用したAMIにAmazon Inspector SSM プラグインがインストールされていない場合は、初回のスキャンが行われないのではないかと疑問に思うかもしれません。
しかし、InspectorではEC2を認識すると、自動作成された3つのステートマネージャーが自動で実行され、初回実行を行う動作となっていました。

InvokeInspectorSsmPlugin-do-not-delete

ドキュメントAmazonInspector2-InvokeInspectorSsmPluginが実行されます。
このドキュメントでは、Amazon Inspector SSM プラグインの実行ファイル「InspectorSsmPlugin.exe」が実行されることでスキャンが行われます。

デフォルトではスケジュール式はrate(6 hours)で、6時間おきに実行される設定となっていますが、この値を変更することで、スキャン間隔をカスタマイズすることができます。

まとめ

今回は、Inspectorの裏側を深掘りしてみました!
裏側がわかることで、パッチマネージャーでパッチ適用後に脆弱性が解消されたか確認したい場合に、直後にドキュメントAmazonInspector2-InvokeInspectorSsmPluginを実行するなど、さまざまな要件に合わせてカスタマイズ可能です。
これらの知識を活用し、よりセキュアな環境を構築する際に役立ててください!