AWS Systems Manager Patch Manager の「承認済みパッチ」を使ってみよう

記事タイトルとURLをコピーする

はじめに

サメ映画をこよなく愛する梅木です。最近のお気に入りは陸に潜むタイプのサメです。

前回は「特定のパッチを拒否する(拒否リスト)」機能を検証しましたが、今回はその逆、「特定のパッチを明示的に許可する(承認済みパッチ)」 機能について検証します。

blog.serverworks.co.jp

パッチ運用において、特定の分類・重要度に該当するパッチを適用対象とするように基準を設けることが有りますが(例:分類Security(セキュリティ)、重要度「Critical(重大)」など)、 「基準には該当しないけれど、このバグ修正パッチだけはどうしても適用したい」という例外的なケースが発生します。

今回はそんな「例外的なパッチ適用」を実現する 「承認済みパッチ(Approved patches)」 の動きを検証したいと思います。

Patch Manager とは

EC2 OS へのパッチ適用を自動化するマネージドサービスです。詳しくは以下記事をご覧ください。

blog.serverworks.co.jp

「承認済みパッチ」とは

「承認済みパッチ」とは、パッチベースラインの承認ルールに該当しない、特定のパッケージを個別に指定して適用対象とする機能 です。

「承認されたパッチ」と表現される場合もあります。

やってみよう!

それでは、実際に検証してみましょう。

前提条件:

  • SSM Agent がインストールされ、マネージドインスタンスとして認識されている Amazon Linux 2023 の EC2 インスタンス があること(未適用パッチを検出するため少し古いAMIを利用しています)
  • カスタムパッチベースライン を作成していること(AWS提供のデフォルトベースラインでは「承認済みパッチ」を編集できないため)
  • 対象のカスタムパッチベースラインが Amazon Linux 2023 OSのデフォルトとして設定されていること(「今すぐパッチ適用」からスキャンを行うため)

  • 現状のパッチベースライン:

    • 承認ルール:分類「Security」かつ重要度「Critical、Important」パッチのみを自動承認する設定(=適用対象とする設定)
    • パッチの例外「承認済みパッチ」:設定なし

パッチベースラインの承認ルール

手順1. ターゲットの確認(Before)

まずは、今回の検証ターゲットとなるパッチを探します。 OS上で dnf updateinfo list コマンドを実行し、「重要度が低く、承認ルールで無視されてしまうパッチ」 を見つけます。

sh-5.2$ dnf updateinfo list | grep Low
ALAS2023-2026-1360 Low/Sec.       libxml2-2.10.4-1.amzn2023.0.15.x86_64
ALAS2023-2026-1397 Low/Sec.       libxml2-2.10.4-1.amzn2023.0.17.x86_64
ALAS2023-2025-1152 Low/Sec.       nginx-1:1.28.0-1.amzn2023.0.2.x86_64
ALAS2023-2025-1152 Low/Sec.       nginx-core-1:1.28.0-1.amzn2023.0.2.x86_64
ALAS2023-2025-1152 Low/Sec.       nginx-filesystem-1:1.28.0-1.amzn2023.0.2.noarch
ALAS2023-2025-1293 Low/Sec.       python3-3.9.25-1.amzn2023.0.1.x86_64
ALAS2023-2025-1293 Low/Sec.       python3-libs-3.9.25-1.amzn2023.0.1.x86_64
ALAS2023-2026-1422 Low/Sec.       unzip-6.0-68.amzn2023.0.1.x86_64

今回は「重要度は低いが、どうしても適用したい」という想定で一番下の unzip をターゲットにします。

念のため、Patch Manager のスキャン結果でもターゲットが適用対象(Missing)として検出されないことを確認してみます。

  1. AWSマネジメントコンソールで Systems Manager > Patch Manager を開きます
  2. 「今すぐパッチ適用 (Patch now)」をクリックします
  3. 「スキャンのみ (Scan only)」 を選択し、対象のインスタンスを選んで実行し、ステータスが 成功(Success) と表示されるまでしばらく待ちます
    パッチマネージャー「スキャンのみを選択」
  4. 実行完了後「パッチマネージャー」から「コンプラインスレポート」をクリックします。
  5. 対象インスタンスを選択し「詳細」をクリックします。

unzip がMissingとして検出されていないことを確認します。

Missing(非準拠)一覧

unzip は Missing として検出されていませんでした。

unzip を検索してみると…

ターゲット(unzip)の検索結果

準拠として表示されました。

手順2. 「承認済みパッチ」への追加

そのままでは Missingとして検出されないパッチを「承認済みパッチ」へ登録します。

  1. Systems Manager > Patch Manager > パッチベースライン を開きます。
  2. 適用中の「カスタムパッチベースライン」を選択し、「編集」をクリックします。
  3. 「承認済みパッチ (Approved patches)」 セクションへ移動します。
  4. ターゲット(unzip)を追記します。
    承認済みパッチ
  5. 変更を保存します。

※記載方法の詳細は公式ドキュメントをご確認ください。

手順3. Patch Manager でパッチスキャン

「承認済みパッチ」の設定が想定通りに動作するか、パッチスキャンを実行して確かめます。 (手順は 手順2 と同一です)

手順4. 結果確認(After)

処理が完了したら、unzip がMissingとして検出されているか確認します。

  1. 「パッチマネージャー」から「コンプラインスレポート」をクリックします。
  2. 対象インスタンスを選択し「詳細」をクリックします。

unzip の状態を確認すると…

Missingとして表示されている

unzip がMissingとして検出されていました。

パッチベースラインの承認ルールで定義された全体ルールは守りつつ、必要なパッチをピンポイントで適用対象として検出できました!

まとめ

今回は Patch Manager の「承認済みパッチ」機能を Amazon Linux 2023 で検証しました。

パッチ運用では、「安定性のために余計な更新は入れたくない」けど「このパッチだけはインストールしたい」というケースがあります。 「自動化はしたいけど、例外も認めたい」というケースに応える便利な機能を、ぜひご活用ください。

それでは、また次回の記事でお会いしましょう!

梅木美香(記事一覧)

EC部SA課所属

2025 Japan All AWS Certifications Engineers

岩手県盛岡市出身。ソウルフードは、もちろん盛岡じゃじゃめんです