Systems Manager パッチマネージャーを使用してパッチ適用してみた

Systems Manager パッチマネージャーを使用してパッチ適用してみた

目次

    はじめに

    AWS Systems Manager Patch Manager は、マネージドノードにパッチを適用するプロセスを自動化できる機能です。
    本記事では実際に使用してパッチ適用できるのか確認していきたいと思います。

    環境

    今回は下図の構成を準備します。

    202409_patch_manager_01

    Patch Manager 以外のリソースに関してはすでに構築済みです。
    EC2 インスタンスは Systems Manager のマネージドノードに表示されるよう、以下の設定をしています。

    • SSM Agent がインストールされている(AL2023 を使用しているためデフォルトでインストール済み)
    • AmazonSSMManagedInstanceCore ポリシーが紐づいた IAM ロールをアタッチ
    • セキュリティグループでHTTPSのアウトバウンド通信を許可

    また、パッチ適用が正しく実行されたかを確認するため、EC2 インスタンスには古いバージョンの Apache をインストールしています。

    202409_patch_manager_02

    パッチ適用され、最新のバージョンになっているかを確認していきます。

    パッチポリシー設定

    パッチポリシーの設定をしていきます。
    パッチポリシーでは、どのインスタンスに、どんな種類のパッチを、いつ適用するか、などを定義していきます。

    1. パッチポリシー作成
      Systems Manager の画面にアクセスし「高速セットアップ」から Patch Manager の「作成」をクリックします。

      202409_patch_manager_03

    2. パッチポリシー名設定
      パッチポリシーの作成画面に遷移するので、設定名に任意のパッチポリシー名を記載します。

      202409_patch_manager_04

    3. スキャンとインストール
      指定したターゲットにスキャンのみ実行するか、スキャンとインストールの両方を実行するか選択します。
      「スキャンとインストール」を選択しスケジュールを Cron 式で設定します。

      202409_patch_manager_05

    4. パッチベースライン、ログ出力
      パッチベースラインとは、どのパッチを承認または拒否するかなどの様々なルールが定義されたものです。
      今回は「推奨される規定値を使用」を選択します。
      パッチ適用を実施したログを指定したS3バケットに出力できる設定がありますが、設定しないで進みます。

      202409_patch_manager_06

    5. ターゲット
      パッチを適用するターゲットを指定します。
      今回のために作成したインスタンスを選択します。

      202409_patch_manager_07

    6. レートの制御、インスタンスプロファイルのオプション
      レートの制御はデフォルトのままにします。
      インスタンスプロファイルのオプションにチェックを入れます。
      チェックを入れることで、もし Systems Manager の操作に必要なすべての許可が含まれていない場合に IAM ポリシーを追加してくれます。

      202409_patch_manager_08

    7. 概要の確認
      設定内容がまとめて表示されるので、問題がなければ「作成」をクリックします。

      202409_patch_manager_09

    8. 作成完了
      正常に作成されたら「Patch Manager」の画面から「コンプライアンスレポート」をクリックし対象のインスタンスのコンプライアンス状況を確認します。
      パッチポリシーを作成したばかりのため、設定したスケジュールでのスキャンとインストールがまだ実行されていません。そのため、コンプライアンス状況に「レポートされていません」と表示されます。

      202409_patch_manager_10

      正常にスキャンとインストールが実行されるとコンプライアンス状況に「準拠」または「非準拠」と表示されます。

    スキャン結果

    今回のパッチポリシーはスキャンを先に実行し、その15分後にインストールを実行するよう設定したので、スキャンの結果から確認していきます。
    確認すると、コンプライアンス状況が「非準拠」となっています。

    202409_patch_manager_11

    「セキュリティの非準拠の数」が「5」となっているためその内容を表示すると、Apache 関連のパッチが「Missing」となっています。
    最初に説明した通り、Apache の古いバージョンを EC2 インスタンスにインストールしたため、それらのパッチが表示されたと考えられます。

    202409_patch_manager_12

    パッチのコンプライアンスが「Missing」の時の意味は、公式のドキュメントに以下のように書かれています。

    このパッチはベースラインで承認されていますが、マネージドノードにインストールされていません。AWS-RunPatchBaseline ドキュメントタスクでスキャン (インストールではなく) するように設定した場合、スキャンで見つかってもインストールされていないパッチがあると、このステータスがレポートされます。

    つまり、現時点ではスキャンのみでパッチがインストールされていないため「Missing」とレポートされたようです。
    なので、インストールが実行されれば「準拠」になり、Apache も最新のバージョンになると思われます。

    インストール結果

    インストール結果をスキャンと同じく確認していきます。
    スキャン時には「非準拠」となっていたのが「準拠」になっています。
    また、「セキュリティの非準拠の数」が「0」になっているので正しくパッチがインストールされたことがわかります。

    202409_patch_manager_13

    Apache のバージョンも確認したところ、最新のバージョンになっていることが確認できます。

    202409_patch_manager_14

    まとめ

    Patch Managerを使用してパッチ適用を実施してみました。
    設定自体はそこまで複雑ではないので興味があれば触ってみてください。
    今回は一つのインスタンスのみを対象としましたが、対象のインスタンスを複数指定できたりパッチベースラインを自分で作成できたりなど参画している案件の要件に沿った設定ができるので、ぜひ参考にしていただけたら幸いです。

    参考

    パッチポリシーの作成

    パッチコンプライアンス状態の値について

    アジアクエスト株式会社では一緒に働いていただける方を募集しています。
    興味のある方は以下のURLを御覧ください。