概要

多くの企業様では資産管理ソフトウェアを導⼊してOSの資産管理をされていますが、AWS環境の場合、AWS Systems Manager インベントリを利⽤して管理が可能です。
可視化や複雑なフィルタをする場合はAthenaとQuickSightが必要になりますがAWS Systems Manager インベントリ機能だけでもどのようなソフトウェアが導⼊されているか、どのWindowsUpdateが適⽤されているかなど確認が可能です。

csvも出⼒可能ためExcelでまとめて集計、報告なども可能です。

以下に⼀般的な資産管理要件に対してAWS Systems Manager を含むAWSマネージドサービスで満たせる要件と満たせない要件例を記載します。

満たせる要件

  • 取得可能なメタデータの確認(アプリケーションインストール情報、ハードウェア情報、IPアドレス情報、WindowsUpdate適⽤情報など)
  • 各種情報のcsv出⼒(S3にメタデータの出⼒、リソースデータの同期設定が必要)
  • アプリケーション変更管理(Configと連携が必要)
  • WindowsUpdate適⽤(パッチマネージャ機能で実現)
  • 情報の可視化(QuickSightが必要)
  • 複数アカウント、複数EC2インスタンスの情報取得(リソースデータの同期設定がアカウント毎に必要)

満たせない要件

  • 資産状況のレポート出⼒(csvエクスポート後、Excelなどで加⼯が必要)
  • 操作ログの取得
  • インストール制限など各種OSレベルでの制限
  • ログイン情報などの取得
  • リモート操作
  • 画⾯録画

AWS Systems Manager インベントリで取得できる情報

以下公式ドキュメントからの引⽤です。
アプリケーション情報やAWSコンポート、WIndowsUpdateの情報、レジストリ情報などを取得、参照することが可能です。

アプリケーション: アプリケーション名、発⾏元、バージョンなど。
AWS コンポーネント: EC2 ドライバー、エージェント、バージョンなど。
ファイル: 名前、サイズ、バージョン、インストール⽇、変更および最新アクセス時間など。
ネットワーク設定の詳細: IP アドレス、MAC アドレス、DNS、ゲートウェイ、サブネットマスクな
ど。
Windows 更新: Hotfix ID、インストール者、インストール⽇など。
インスタンスの詳細: システム名、オペレーティングシステム (OS) 名、OS バージョン、DNS、ドメ
イン、ワークグループ、OS アーキテクチャなど。
サービス: 名前、表⽰名、ステータス、依存サービス、サービスのタイプ、起動タイプなど。
タグ: ノードに割り当てられるタグ。
Windows レジストリ: レジストリキーのパス、値の名前、値タイプおよび値。
Windows ロール: 名前、表⽰名、パス、機能タイプ、インストール⽇など。
引⽤元:https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systemsmanager-inventory.html

構成図

稼働中である単体サーバの情報をマネージドコンソール上から閲覧する場合は特に複雑な構成は必要とせず、EC2にSSM Agentを導⼊してインベントリを有効化することで確認が可能です。
複数サーバを⼀括で確認したい、削除済みのEC2インスタンスの情報も確認したい、などの要件があればメタデータをS3に保存して参照する必要があります。

取得設定

取得設定は以下の⼿順が必要です。
1. 対象のEC2 WindowsにSSM Agentをインストール(AWS公式のAMIから展開すれば初期段階で導⼊済み)
2. 対象のEC2にIAMロールで「AmazonSSMManagedInstanceCore」の権限を付与する
3. SSMインベントリを有効化する。

AWS Systems Manager→インベントリ→セットアップインベントリを選択します。

任意の名前を設定、どのEC2から取得するか、取得間隔を⼊⼒します。

取得する情報を選択して「セットアップインベントリ」を選択します。

上記設定でSSMインベントリから情報閲覧が可能となります。

情報の確認

取得設定後はインベントリメニューの下部に情報取得されたインスタンスの⼀覧が表⽰されますのでインスタンスIDのリンクをクリックして情報の閲覧が可能です。

取得されたデータの⼀覧例は以下のとおりです。

アプリケーション情報

AWSコンポート情報

CPU情報

ネットワーク情報

サービス稼働情報

Windows役割と機能の情報

WindowsUpdate適⽤情報

Windowsイベントログ情報

Windowsレジストリ情報

Windowsファイルシステム情報

ローカルユーザ情報

SSMインベントリで⼀通りのWindowsOS情報が取得可能です。
資産情報だけではなくイベントログ、レジストリやファイルシステムの情報なども取得できるのは⾮常に便利だと思います。

複数インスタンス、複数アカウントでの取得

上記の情報取得は単体のEC2情報を取得して確認を⾏ってますが複数インスタンスの情報確認、csv出⼒、複数アカウントからの情報取得などはリソースデータ同期の設定が必要です。
リソースデータ同期の設定は以下の⼿順で⾏います。

1.S3バケットの作成
2.バケットポリシーの設定(取得対象元のAWSアカウントなどを許可)
ポリシーは以下のドキュメントを参考に設定してください。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-inventorydatasync.html
3.リソースデータ同期の設定

AWS Systems Manager→インベントリ→詳細ビュー→リソースデータの同期の作成を選択します。

1項で作成したバケット名などを記⼊して作成を選択します。

作成後、作成したS3バケットにメタデータが格納されます。
リソースデータの同期リストから設定した名前を選択するとS3バケットのメタデータを閲覧することが可能です。
csvの取得、クエリの実⾏などもリソースデータの同期メニューから可能です。

アカウント毎に情報集約⽤のアカウントのS3にリソースデータの同期設定をして集約⽤のアカウントで最終的にリソースデータの同期設定をすれば各アカウントで集約されたメタデータの情報を⼀元的に確認が可能となります。
メタデータはS3内でアカウントID毎にプレフィックスが切られて階層的にも⾒やすいのですが、⽣データのだと加⼯、またはAthenaでクエリを実⾏する必要があります。
SSMインベントリのリソースデータの同期メニューから各情報を⾒る場合、バックグランドでAthenaが実⾏されて⾒やすくなっています。

サービス連携で実現出来ること

その他サービスと連携すると更に使いやすくなります。

AWS Organizations

AWS Organizationsと連携することで複数アカウントのSSMインベントリ収集が楽になります。
個々のアカウントで設定したリソースデータの同期設定が⼀元的にAWS Organizationsで設定が可能となります。

AWS Config

AWS Configと連携することで変更管理などが可能となります。
資産管理で実施しているような差分管理のようなリスト化は難しいですがアプリケーションバージョンの変更などや新規アプリケーションインストール検知などが可能となります。

QuickSight

有料にはなりますがQuickSightと連携することでメタデータの可視化などが可能になります。

Lambda

Lambdaと連携することでメタデータを加⼯してcsvに加⼯、資産情報の⼀覧表などを作ることが可能です。
ただ、リソースデータの同期メニューからcsv出⼒可能なため、デフォルトのcsvで要件が満たせない場合などに検討ください。

料⾦

SSMインベントリ機能を利⽤する場合は料⾦は発⽣しません。
メタデータのS3保存料、Athenaでクエリ実⾏の料⾦が発⽣します。
S3はput/getの料⾦とストレージ保存料が発⽣しますがメタデータの容量はそこまでありませんしリソースデータの同期で発⽣するgetの回数もそこまで多くなりませんので数ドル程度⾒込んでおけばいいと思います。
Athenaのクエリ料⾦もデータ容量はそこまでありませんので数ドルレベルかと思います。
管理する台数によるのであくまで参考レベルですが・・・。

まとめ

Windowsに焦点を当てて記事を書きましたが、もちろんLinux環境でも取得が可能です。
Windowsの場合、レジストリやイベントログなどの確認が出来るのでOSにログインしていなくてもある程度の障害調査なども可能となります。
PCViewなどで情報取得、ドキュメントを作成している⽅にはSSMインベントリを使うことで⼯数も⼤幅に削減出来ると思います。
料⾦もそこまでかからずSSM Agentさえ⼊っていれば情報取得の難易度も⾼くないのでとりあえず⼊れときましょうとお客様にも提案しやすいと思います。
簡単な資産管理だと代替えが可能なので資産管理ソフトウェアのライセンス削減にも繋がる可能性もあります。
エンドポイント経由かインターネット経由での情報取得となりますのでSSMインベントリを使うことで資産管理ソフトウェアの管理サーバへのトラフィックも下げれますので⼤規模環境だとデータ転送量の削減にも繋がりそうです。