📌 結論:これは「会社PCの必須ソフトチェック」ルール
EC2インスタンスに「絶対に入っていてほしいアプリ」がちゃんとインストールされているかを
AWS Configが自動的にチェックしてくれるルールです!
AWS Configが自動的にチェックしてくれるルールです!
チェックリストを定義
必要なアプリ名とバージョンを指定できる
自動で検査
SSM経由でインストール済みアプリを収集・比較
違反を検出
必須アプリが無ければ非準拠としてアラート
🏢 会社のIT部門に例えると超わかりやすい!
「会社の全PCに必須ソフトが入っているか、IT部門が定期チェックする」
まさにこれと同じことをAWS Configがやってくれます!
👨💼
IT管理者
(AWS Config)
➡️
📋
必須ソフト一覧
(パラメータ)
➡️
💻
社員のPC
(EC2インスタンス)
➡️
✅❌
チェック結果
(準拠/非準拠)
会社のIT管理の場合
必須ソフト:ウイルス対策、Office、Slack
IT部門が定期的に各PCをチェック
入ってない人には「インストールして!」と連絡
全PCの導入状況をレポート
AWS Configの場合
applicationNames: CloudWatchAgent, nginx
SSMが各EC2のインベントリを収集
無ければ「非準拠」としてアラート
コンプライアンスダッシュボードで可視化
⚙️ どうやって動いているの?
1
SSMエージェント
EC2内で動作
➡️
2
インベントリ収集
アプリ一覧を取得
➡️
3
AWS Config
リストと比較
➡️
4
結果レポート
準拠/非準拠
📊 3つの判定結果
COMPLIANT(準拠)
- 指定した全アプリがインストール済み
- バージョン指定があれば、それ以上のバージョン
- 👍 問題なし!
NON_COMPLIANT(非準拠)
- 必須アプリが見つからない
- バージョンが指定より古い
- ⚠️ 対応が必要!
NOT_APPLICABLE(対象外)
- SSMエージェントが未インストール
- インベントリ収集が未設定
- 🔧 前提条件を満たしていない
⚠️ 使う前に必要な準備(これがないと動かない!)
1. SSMエージェント
EC2にSSM Agent(Systems Manager Agent)がインストールされ、実行中であること
2. SSM接続
EC2がSystems Managerのマネージドインスタンスとして登録されていること
3. インベントリAssociation
アプリケーションインベントリを収集するState Manager Associationが作成済みであること
🎛️ 設定できるパラメータ
applicationNames
必須
チェックしたいアプリケーション名をカンマ区切りで指定します。
オプションでバージョンも「:」で追加できます。アプリ名は完全一致で指定が必要です!
オプションでバージョンも「:」で追加できます。アプリ名は完全一致で指定が必要です!
# 例:複数アプリとバージョン指定
amazon-cloudwatch-agent, nginx:1.24.0, amazon-ssm-agent:3.0
amazon-cloudwatch-agent, nginx:1.24.0, amazon-ssm-agent:3.0
platformType
オプション
特定のプラットフォーム(OS)のインスタンスだけをチェック対象にしたい場合に指定します。
指定しない場合は全プラットフォームが対象になります。
指定しない場合は全プラットフォームが対象になります。
# 指定できる値
Linux # Linuxインスタンスのみ
Windows # Windowsインスタンスのみ
Linux # Linuxインスタンスのみ
Windows # Windowsインスタンスのみ
💡 こんな時に使える!実践ユースケース
セキュリティエージェント必須化
全EC2にセキュリティ監視エージェントがインストールされていることを確認。
インシデント対応の第一歩として必須!
チェックするアプリ例:
crowdstrike-falcon, amazon-inspector-agent
監視エージェントの導入確認
CloudWatch Agentが全サーバーに入っていないと、
メトリクス収集やログ監視ができない!
チェックするアプリ例:
amazon-cloudwatch-agent:1.300000
Webサーバー構成の統一
本番環境のWebサーバーに必ず特定バージョン以上の
nginx/Apacheが入っていることを保証。
チェックするアプリ例:
nginx:1.24.0, openssl:3.0
運用ツールの標準化
トラブルシューティングに必要なツールが
全インスタンスに入っていることを確認。
チェックするアプリ例:
amazon-ssm-agent, htop, vim
💻 設定例
📄 AWS CLIでルール作成
# Config Ruleの作成
aws configservice put-config-rule --config-rule '{
"ConfigRuleName": "required-apps-check",
"Description": "必須アプリケーションのインストール確認",
"Source": {
"Owner": "AWS",
"SourceIdentifier": "EC2_MANAGEDINSTANCE_APPLICATIONS_REQUIRED"
},
"InputParameters": "{\"applicationNames\":\"amazon-cloudwatch-agent,amazon-ssm-agent\",\"platformType\":\"Linux\"}",
"Scope": {
"ComplianceResourceTypes": [
"AWS::SSM::ManagedInstanceInventory"
]
}
}'
📄 CloudFormationテンプレート
AWSTemplateFormatVersion: '2010-09-09'
Description: '必須アプリチェック Config Rule'
Resources:
RequiredAppsRule:
Type: AWS::Config::ConfigRule
Properties:
ConfigRuleName: ec2-required-applications
Description: "EC2に必須アプリがインストールされているかチェック"
Source:
Owner: AWS
SourceIdentifier: EC2_MANAGEDINSTANCE_APPLICATIONS_REQUIRED
InputParameters:
applicationNames: "amazon-cloudwatch-agent:1.300000,nginx"
platformType: "Linux"
Scope:
ComplianceResourceTypes:
- "AWS::SSM::ManagedInstanceInventory"
🔧 よくあるトラブルと解決法
アプリは入っているのにNON_COMPLIANTになる!
原因:アプリケーション名が完全一致していない可能性が高いです。
対処法:SSM Fleet Managerでインベントリを確認し、正確なアプリ名を使用してください。
対処法:SSM Fleet Managerでインベントリを確認し、正確なアプリ名を使用してください。
💡 確認方法:AWS Console → Systems Manager → Fleet Manager → 対象インスタンス → Inventory タブ
ずっとNOT_APPLICABLEのまま...
原因:前提条件が満たされていません。
チェックポイント:
チェックポイント:
- SSMエージェントは実行中?
- EC2はマネージドインスタンスとして登録されている?
- インベントリ収集のAssociationは作成済み?
ワイルドカード(*)は使える?
残念ながら使えません。
applicationNamesパラメータはワイルドカードをサポートしていないため、 正確なアプリケーション名を指定する必要があります。
applicationNamesパラメータはワイルドカードをサポートしていないため、 正確なアプリケーション名を指定する必要があります。
💡 例:
firefox* は ❌、firefox または firefox-compat のように完全名で ✅
❓ よくある質問
🤔
Q: このルールの評価タイミングは?
A: 設定変更トリガーです。
SSMのマネージドインスタンスインベントリが更新されるタイミングで評価が行われます。 インベントリ収集の頻度はState Manager Associationで設定できます。
SSMのマネージドインスタンスインベントリが更新されるタイミングで評価が行われます。 インベントリ収集の頻度はState Manager Associationで設定できます。
🤔
Q: バージョン指定はどう動作する?
A: 「指定バージョン以上」であれば準拠です。
例えば
例えば
nginx:1.20.0 と指定した場合、1.20.0以上がインストールされていれば
COMPLIANTになります。1.19.xなどは非準拠となります。
🤔
Q: Linuxでのアプリ名の調べ方は?
A: パッケージ名をそのまま使います。
RPM系なら
RPM系なら
rpm -qa | grep アプリ名、
Deb系なら dpkg -l | grep アプリ名 で確認できる名前を使用してください。
ただし、SSMインベントリで表示される名前と一致させることが重要です。
🤔
Q: 非準拠になったら自動で修復できる?
A: はい、自動修復アクションを設定できます!
Config Rulesの修復アクション機能を使い、SSM Run CommandやSSM Automationを トリガーして、必要なソフトウェアを自動インストールすることが可能です。
Config Rulesの修復アクション機能を使い、SSM Run CommandやSSM Automationを トリガーして、必要なソフトウェアを自動インストールすることが可能です。
🎓 まとめ
ec2-managedinstance-applications-required は
「会社のPCに必須ソフトが入っているかIT部門がチェックする」のと同じ!
必須アプリを定義
applicationNamesで指定
SSMで情報収集
インベントリから取得
自動でチェック
Config Ruleで評価
違反を検出
アラートで通知
🔐 セキュリティエージェント、📊 監視ツール、🌐 Webサーバーなど
「全EC2に絶対入っていてほしいアプリ」の管理にぴったり!