[アップデート] AWS Systems Manager インベントリによって収集された OS 上のファイルの設定変更が AWS Config の記録対象になりました!

OS 上のファイルを変更したら Config で検知して EventBridge で通知を行う、といったことできるようになりました。すごい。

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

コンバンハ、千葉(幸)です。

AWS Systems Manager が AWS Config と統合し、インベントリによって収集されたマネージドインスタンス上のインベントリファイルの構成変更が記録されるようになりました!

OS 上のファイルの変更管理までできてしまうなんてすごいですね!

目次

何が変わったのか

以下のイメージです。

Systems Manager インベントリでは、マネージドインスタンスからメタデータを収集し、一覧表示することができます。マネジメントコンソールから参照できるほか、 データを S3 に保存し、クエリを実行することもできます。

収集できるメタデータの一覧には以下のようなものがあります。

  • アプリケーション:
    • アプリケーション名、発行元、バージョンなど。
  • AWS コンポーネント:
    • EC2 ドライバ、エージェント、バージョンなど。
  • ファイル:
    • 名前、サイズ、バージョン、インストール日、変更および最新アクセス時間など。
  • ネットワーク設定の詳細:
    • IP アドレス、MAC アドレス、DNS、ゲートウェイ、サブネットマスクなど。
  • Windows 更新:
    • Hotfix ID、インストール者、インストール日など。
  • インスタンスの詳細:
    • システム名、オペレーティングシステム (OS) 名、OS バージョン、最終起動、DNS、ドメイン、ワークグループ、OS アーキテクチャなど。
  • サービス:
    • 名前、表示名、ステータス、依存サービス、サービスのタイプ、起動タイプなど。
  • タグ:
    • インスタンスに割り当てられるタグ。
  • Windows レジストリ:
    • レジストリキーのパス、値の名前、値タイプおよび値。
  • Windows ロール:
    • 名前、表示名、パス、機能タイプ、インストール日など。
  • カスタムインベントリ:

詳細は以下を確認してください。

AWS Systems Manager インベントリ - AWS Systems Manager

AWS Config では、各種 AWS リソースの構成管理ができます。記録を有効にした AWS リソースに対して、設定変更内容をタイムラインで参照することができるほか、変更を検知して通知サービスに連携するといったことができます。

AWS Config とは - AWS Config

今回のアップデートでは、 Systems Manager インベントリのタイプ「ファイル」で収集した内容について、 AWS Config の記録対象とすることが可能になりました。

やってみた

AWS Config で Systems Manager インベントリファイルの記録を有効化し、OS 上で変更を実施した場合に記録されることを確認できるところをゴールとします。

  1. AWS Config レコーダーの設定
  2. Systems Manager インベントリのセットアップ
  3. OS 上のファイルの変更
  4. AWS Config タイムラインでの確認

1. AWS Config レコーダーの設定

マネジメントコンソールの Config -> 設定 の画面より、[ 編集 ] を押下します。

記録するリソースタイプは以下から選択可能です。

  • このリージョンでサポートされているすべてのリソースを記録します
  • 特定のリソースタイプを記録する

前者を選択していた場合は、特に今回のアップデートに伴う設定変更は必要ありません。後者の場合は、今回リソースタイプとして新しく AWS SSM FileData が選択できるようになっているため、追加し、 [ 保存 ] を押下します。

これで Config の設定は完了です。

2. Systems Manager インベントリのセットアップ

続いては、インベントリのセットアップです。

インベントリ収集の設定 - AWS Systems Manager

ここでの前提として、マネージドインスタンスとして管理されているインスタンスが既に存在しているものとします。

マネジメントコンソールの Systems Manager -> インベントリ の画面より、 [ セットアップインベントリ ] を押下します。

インベントリによる収集は、Systems Manager の機能の一つであるステートマネージャー を利用します。ステートマネージャーにおけるリソースのアソシエーションを作成し、 SSM ドキュメント AWS-GatherSoftwareInventory をマネージドインスタンスに対して実行することで収集が行われます。

ここでは、アソシエーションの設定を行なっていきます。まずは名前、ターゲット、スケジュールを指定します。

  • 名前
    • アソシエーションの名前
  • ターゲット
    • マネージドインスタンスすべてか、タグ指定か、インスタンス指定
  • スケジュール
    • 最小の期間は 30 分

(なお、インベントリ用のアソシエーションを作成する場合、ターゲットとして「マネージドインスタンスすべて」を設定できるのは一つのみです。複数のアソシエーションで設定しようとすると、以下のエラーが表示されます。 )

Multiple apply all associations with document 'AWS-GatherSoftwareInventory' are not supported.

収集対象となるメタデータを設定します。今回のアップデートの対象であるファイルについての収集設定を行います。

  • パス:収集対象とするパス
  • パターン:収集対象とするファイルのパターン
  • 再帰的:ディレクトリを再帰的にトラバースするかどうか

ファイルと Windows レジストリインベントリで作業する - AWS Systems Manager

一通りの指定が完了したら [ セットアップインベントリ ] を押下します。

これでセットアップができました。

3. OS 上のファイルの変更

マネージドインスタンスに SSH 接続を行い、インベントリの収集対象となっているディレクトリにファイルを作成します。

[root@ip-192-168-0-79 ~]# mkdir /chiba
[root@ip-192-168-0-79 ~]# touch /chiba/hoge.txt
[root@ip-192-168-0-79 ~]# echo hello > /chiba/hoge.txt
[root@ip-192-168-0-79 ~]# cat /chiba/hoge.txt
hello

アソシエーションによるインベントリの実施スケジュールを 30分で設定したため、それを待ってもいいのですが、今回はいますぐ収集を行いたいです。ステートマネージャーの画面より先ほどのアソシエーションを選択し [ 関連付けをいますぐ適用 ] を押下し、オンデマンドで収集を行います。

マネージドインスタンス詳細画面の [ インベントリ ] タブ でタイプをフィルタすると、先ほど作成したファイルが確認できます。

これだとまだ Config には初回の記録がされたままのため、先ほどのファイルに変更を加えます。

[root@ip-192-168-0-79 ~]# mkdir /satama
[root@ip-192-168-0-79 ~]# mv /chiba/hoge.txt /satama/fuga.txt
[root@ip-192-168-0-79 ~]# echo hellohello > /satama/fuga.txt
[root@ip-192-168-0-79 ~]# cat /satama/fuga.txt
hellohello

ディレクトリ、ファイル名、ファイルの内容を変更してみました。

再びアソシエーションを適用し……

インベントリで変更が反映されていることを確認します。

これらの変更が Config ではどのように確認できるでしょうか。

4. AWS Config タイムラインでの確認

マネジメントコンソールの Config -> リソースに遷移し、リソースタイプ部より AWS SSM FileData でフィルタリングを行います。フィルタリング結果より、詳細画面に遷移します。

詳細が確認できます。 [ リソースタイムライン ] を押下します。

初回の記録と、変更が行われたことがタイムラインから確認できます。変更内容を確認します。

このように確認できました。

今回の変更では、変更前と後では別オブジェクトとして扱われているようですね。

また、管理される項目としては以下があるようです。(この部分に関してドキュメントを見つけることができませんでした……知りたい!)

  • CompanyName
  • ProductLanguage
  • Description
  • ProductName
  • FileVersion
  • InstalledDir
  • ProductVersion

ここまでの確認の後に単純に追記を行なってファイルサイズ更新日時を変更する、といったことを試してみたのですが、そういった変更内容は Config の記録対象とはならないようでした。

インベントリではファイルサイズなども収集してくれるので、この辺りも記録対象に含まれてくるとより細かな記録に対応できそうだなと思いました!

終わり

AWS Systems Manager インベントリファイルの変更が AWS Config の記録対象となったことを確認しました。

アップデートブログによると、使用例としてアプリケーションのライセンスバージョンファイルへの変更の追跡ができるようになった、というものが取り上げられていました。

自動的な収集が最小で 30 分間隔であったり、記録対象となる項目が限定されていたりと制約はありますが、面白いアップデートですね。Config と 通知を組み合わせて、簡易的な変更監視などにも使えそうです。

以上、千葉(幸)がお送りしました。