【小ネタ】AWS CLI を利用して RHEL のパッチコンプライアンス結果を確認する方法

2024.02.12

はじめに

テクニカルサポートの 片方 です。
事前にパッチの Scan のみ実行し、コンプライアンスレポートにどのパッチを更新する予定があるか、パッケージのアップデート予定があるかを確認する方法があります。
こちらについて、マネジメントコンソールを利用せず AWS CLI のみで RHEL のパッチコンプライアンス結果を確認するコマンド例を紹介します。

AWS CLI コマンド例

コマンド例 1

aws ssm list-compliance-items \
--resource-ids <インスタンスID> \
--resource-types "ManagedInstance" \
--filters "Key=ExecutionTime,Values=2024-01-10T00:00:00Z,Type=GREATER_THAN" \
"Key=AWS:ComplianceItem.PatchSeverity,Values=[\"CRITICAL\",\"Important\"],Type=EQUAL" \
"Key=AWS:ComplianceItem.Classification,Values=[\"Security\",\"Bugfix\"],Type=EQUAL"

コマンド例 2

aws ssm list-compliance-items \
--resource-ids <インスタンスID> \
--resource-types "ManagedInstance" \
--filters "Key=ExecutionTime,Values=2024-01-10T00:00:00Z,Type=GREATER_THAN" \
"Key=AWS:ComplianceItem.PatchSeverity,Values=[\"CRITICAL\",\"Important\"],Type=EQUAL" \
"Key=AWS:ComplianceItem.Classification,Values=[\"Security\",\"Bugfix\"],Type=EQUAL" \
"Key=AWS:ComplianceItem.Status,Values=[\"NON_COMPLIANT\"],Type=EQUAL"

コマンドの説明

"aws ssm list-compliance-items --resource-ids <インスタンスID>" を使用することで、パッチコンプライアンス結果を確認可能です。
上記の AWS CLI コマンドでは全量が出てしまうため、出力項目について "--filters" を用いて絞り込みしました。

  • "Key=ExecutionTime,Values=2024-01-10T00:00:00Z,Type=GREATER_THAN"
    特定の日時以降のコンプライアンス項目を出力させています。

  • "Key=AWS:ComplianceItem.PatchSeverity,Values=[\"CRITICAL\",\"Important\"],Type=EQUAL"
    特定の重要度("CRITICAL","Important")のみを出力させています。

  • "Key=AWS:ComplianceItem.Classification,Values=[\"Security\",\"Bugfix\"],Type=EQUAL"
    特定の分野("Security","Bugfix")のみを出力させています。

  • "Key=AWS:ComplianceItem.Status,Values=[\"NON_COMPLIANT\"],Type=EQUAL"
    準拠項目のステータスが 非準拠("NON_COMPLIANT")のみを出力させています。

コマンド出力結果

参考までに AWS CLI コマンド例 2 の出力結果は以下でした。

$ aws ssm list-compliance-items \
>     --resource-ids i-12345678901234567 \
>     --resource-types "ManagedInstance" \    
    --fi>     --filters "Key=ExecutionTime,Values=2024-01-10T00:00:00Z,Type=GREATER_THAN" \
>               "Key=AWS:ComplianceItem.PatchSeverity,Values=[\"CRITICAL\",\"Important\"],Type=EQUAL" \
>               "Key=AWS:ComplianceItem.Classification,Values=[\"Security\",\"Bugfix\"],Type=EQUAL" \
>               "Key=AWS:ComplianceItem.Status,Values=[\"NON_COMPLIANT\"],Type=EQUAL"
{
    "ComplianceItems": [
        {
            "ComplianceType": "Patch",
            "ResourceType": "ManagedInstance",
            "ResourceId": "i-12345678901234567",
            "Id": "kernel.x86_64",
            "Title": "kernel.x86_64:0:4.18.0-513.11.1.el8_9",
            "Status": "NON_COMPLIANT",
            "Severity": "CRITICAL",
            "ExecutionSummary": {
                "ExecutionTime": "2024-01-31T15:39:12+09:00",
                "ExecutionId": "dc2763c8-6ea1-4204-a44c-b7c182a3668b",
                "ExecutionType": "Command"
            },
            "Details": {
                "Classification": "Security",
                "InstalledTime": "2024-01-31T06:41:31Z",
                "PatchBaselineId": "pb-0ac0d9fc55ce1a10e",
                "PatchGroup": "pb-NonPRD-M-Lin",
                "PatchSeverity": "Important",
                "PatchState": "InstalledPendingReboot"
            }
        },
        {
            "ComplianceType": "Patch",
            "ResourceType": "ManagedInstance",
            "ResourceId": "i-12345678901234567",
            "Id": "kernel-core.x86_64",
            "Title": "kernel-core.x86_64:0:4.18.0-513.11.1.el8_9",
            "Status": "NON_COMPLIANT",
            "Severity": "CRITICAL",
            "ExecutionSummary": {
                "ExecutionTime": "2024-01-31T15:39:12+09:00",
                "ExecutionId": "dc2763c8-6ea1-4204-a44c-b7c182a3668b",
                "ExecutionType": "Command"
            },
            "Details": {
                "Classification": "Security",
                "InstalledTime": "2024-01-31T06:41:21Z",
                "PatchBaselineId": "pb-0ac0d9fc55ce1a10e",
                "PatchGroup": "pb-NonPRD-M-Lin",
                "PatchSeverity": "Important",
                "PatchState": "InstalledPendingReboot"
            }
        },
        {
            "ComplianceType": "Patch",
            "ResourceType": "ManagedInstance",
            "ResourceId": "i-12345678901234567",
            "Id": "kernel-modules.x86_64",
            "Title": "kernel-modules.x86_64:0:4.18.0-513.11.1.el8_9",
            "Status": "NON_COMPLIANT",
            "Severity": "CRITICAL",
            "ExecutionSummary": {
                "ExecutionTime": "2024-01-31T15:39:12+09:00",
                "ExecutionId": "dc2763c8-6ea1-4204-a44c-b7c182a3668b",
                "ExecutionType": "Command"
            },
            "Details": {
                "Classification": "Security",
                "InstalledTime": "2024-01-31T06:41:25Z",
                "PatchBaselineId": "pb-0ac0d9fc55ce1a10e",
                "PatchGroup": "pb-NonPRD-M-Lin",
                "PatchSeverity": "Important",
                "PatchState": "InstalledPendingReboot"
            }
        },
        {
            "ComplianceType": "Patch",
            "ResourceType": "ManagedInstance",
            "ResourceId": "i-12345678901234567",
            "Id": "kernel-tools.x86_64",
            "Title": "kernel-tools.x86_64:0:4.18.0-513.11.1.el8_9",
            "Status": "NON_COMPLIANT",
            "Severity": "CRITICAL",
            "ExecutionSummary": {
                "ExecutionTime": "2024-01-31T15:39:12+09:00",
                "ExecutionId": "dc2763c8-6ea1-4204-a44c-b7c182a3668b",
                "ExecutionType": "Command"
            },
            "Details": {
                "Classification": "Security",
                "InstalledTime": "2024-01-31T06:43:38Z",
                "PatchBaselineId": "pb-0ac0d9fc55ce1a10e",
                "PatchGroup": "pb-NonPRD-M-Lin",
                "PatchSeverity": "Important",
                "PatchState": "InstalledPendingReboot"
            }
        },
        {
            "ComplianceType": "Patch",
            "ResourceType": "ManagedInstance",
            "ResourceId": "i-12345678901234567",
            "Id": "kernel-tools-libs.x86_64",
            "Title": "kernel-tools-libs.x86_64:0:4.18.0-513.11.1.el8_9",
            "Status": "NON_COMPLIANT",
            "Severity": "CRITICAL",
            "ExecutionSummary": {
                "ExecutionTime": "2024-01-31T15:39:12+09:00",
                "ExecutionId": "dc2763c8-6ea1-4204-a44c-b7c182a3668b",
                "ExecutionType": "Command"
            },
            "Details": {
                "Classification": "Security",
                "InstalledTime": "2024-01-31T06:43:38Z",
                "PatchBaselineId": "pb-0ac0d9fc55ce1a10e",
                "PatchGroup": "pb-NonPRD-M-Lin",
                "PatchSeverity": "Important",
                "PatchState": "InstalledPendingReboot"
            }
        },
        {
            "ComplianceType": "Patch",
            "ResourceType": "ManagedInstance",
            "ResourceId": "i-12345678901234567",
            "Id": "python3-perf.x86_64",
            "Title": "python3-perf.x86_64:0:4.18.0-513.11.1.el8_9",
            "Status": "NON_COMPLIANT",
            "Severity": "CRITICAL",
            "ExecutionSummary": {
                "ExecutionTime": "2024-01-31T15:39:12+09:00",
                "ExecutionId": "dc2763c8-6ea1-4204-a44c-b7c182a3668b",
                "ExecutionType": "Command"
            },
            "Details": {
                "Classification": "Security",
                "InstalledTime": "2024-01-31T06:43:54Z",
                "PatchBaselineId": "pb-0ac0d9fc55ce1a10e",
                "PatchGroup": "pb-NonPRD-M-Lin",
                "PatchSeverity": "Important",
                "PatchState": "InstalledPendingReboot"
            }
        }
    ]
}
(END)

まとめ

以下ドキュメントなども含め、出力される項目をご確認いただき、条件に合わせて適宜修正して絞り込みを行ってください。
本ブログが誰かの参考となれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。