【AWS Systems Manager】パッチマネージャーの パッチベースライン と パッチグループ の概念を勉強する

Systems Manager で使用できる機能の1つである パッチマネージャー について、 パッチベースライン と パッチグループ の考え方に重点を絞って整理しました。

コンバンハ、千葉(幸)です。

先日パッチマネージャーを初めて触ってみたのですが、なかなか初見ではとっつきづらい印象を受けました。肝になるのがパッチベースラインとバッチグループであると感じたので、その概念を調べて整理しました。

目次

結論

イメージは以下です。

パッチベースライン

  • インスタンスにパッチ適用を行う際のルールを定義するものである
  • OSごとに事前定義済みのパッチベースラインが存在する
  • 事前定義済みのパッチベースラインは変更できないが、カスタムベースラインを作成することができる
  • OSごとにデフォルトのベースラインを設定する
  • 1つのパッチベースラインに複数のパッチグループをアタッチすることができる

パッチグループ

  • インスタンスと特定のパッチグループの関連付けを行うためのコンポーネントである
  • 1つのパッチグループには複数のOSのEC2インスタンスを所属させることができる
  • 1つのパッチグループを複数のパッチベースラインにアタッチすることができるが、OSごとに1つまでである
  • パッチグループにEC2インスタンスを所属させない状態も取りうる
  • どのパッチベースラインにも登録しない状態でパッチグループを作成することはできない
  • 1台のインスタンスを複数のパッチグループに所属させることはできない

パッチを適用するインスタンスの選択

  • パッチマネージャーによるスキャン(およびインストール)を実行する際のターゲットの指定の仕方として以下の3種がある
    • インスタンスID指定
    • タグ指定
    • パッチグループ指定
  • パッチグループ指定以外の方法でターゲットを指定し、ターゲットがどのパッチグループにも所属していない場合、使用されるパッチベースラインはOSごとのデフォルトベースラインとなる
  • パッチグループ指定の場合、パッチグループが登録しているパッチベースラインが選択される

マネジメントコンソールからパッチマネージャーを確認してみる

マネジメントコンソールからどのように見えるか確認していきましょう。Systems Managerの画面にいくと、いろいろなサービスが表示されています。

パッチマネージャー を選択すると、初回の場合は以下のような画面が表示されるはずです。ひとまず「事前定義されたパッチベースラインの表示」を選択してみましょう。

構成としては、以下の3つのタブに分かれています。

  • パッチベースライン
  • パッチ
  • パッチグループ

順番に確認していきます。

パッチベースライン

パッチマネージャーのメインです。

OSの種別ごとに、事前定義されたベースラインが表示されています。今回はAmazon Linux2用のベースラインの内訳を見てみましょう。

(事前定義されたベースラインは編集ができませんが、代わりにカスタムベースラインを作成することができます。カスタムベースラインを想定してコメントを入れます。)

パッチベースラインは、基本的には承認ルールの集まりからなるものだと抑えておけばいいでしょう。

承認ルールは、以下のパラメータからなります。

  • Product (製品): 承認ルールが適用されるオペレーティングシステムのバージョン
  • Classification (分類): 承認ルールが適用されるパッチのタイプ
  • Severity (重要度): ルールが適用されるパッチの重要度の値
  • Approve patches after a specified number of days (指定した日数後にパッチを承認): パッチがリリースされてから、自動的に承認されるまで Patch Manager が待機する日数
  • Approve patches released up to a specific date (特定の日付までにリリースされたパッチの承認): Patch Manager がその日付以前にリリースされたすべてのパッチを自動的に適用するパッチのリリース日
  • Compliance reporting (コンプライアンスレポート): ベースラインで承認されたパッチに割り当てる重要度。
    • 承認済みパッチが見つからないとレポートされた場合は「コンプライアンス違反の深刻度」となる
  • Include non-security updates (セキュリティに関連しない更新を含める): セキュリティに関連するパッチに加えて、ソースリポジトリで使用可能なセキュリティに関連しない Linux オペレーティングシステムのパッチをインストールする場合に有効化

詳細は以下をご確認ください。 カスタムパッチベースラインの作成

パッチベースラインの画面でのパッチグループの作成

パッチベースラインの画面からパッチグループを作成することができます。「アクション」から「パッチグループの変更」を押下します。

パッチグループの名称を入力し、「追加」を押下することでパッチグループが作成されます。今回はTestという名称のパッチグループを作成します。

このパッチグループに所属させたいインスタンスには、以下のタグを付与します。

  • キー:Patch Group
  • 値:Test

キーは固定でPatch Groupで、パッチグループ名が値になります。パッチグループにどのインスタンスが所属しているか、といった管理はパッチマネージャーのコンソールではできないため、EC2インスタンスの管理画面からタグを見て判断することになります。

パッチ

こちらはMicrosoft関連のパッチが確認できます。設定を行うといったことはこの画面ではできません。特定のパッチを選択すれば、画面下部で詳細を確認することができます。

パッチグループ

先ほど作成したパッチグループが確認できます。こちら側の画面で新規作成することはできず、以下の操作のみが可能です。

  • 作成済みのパッチグループの登録先のパッチベースラインを変更する
  • パッチグループを削除する(どのパッチベースラインとも関連付けない)

ここで同一のOSのパッチベースラインを複数選択しようとすると、エラーが発生します。

Patch Group Test already has a baseline registered for OperatingSystem XXXXX.

パッチ適用の設定

最後にパッチ適用の設定時の選択画面を確認しましょう。パッチベースラインの画面から「パッチ適用の設定」を押下すると、パッチ適用設定の作成画面に遷移します。

パッチを適用するインスタンス

以下から選択可能です。

  • インスタンスタグを入力する
  • パッチグループを選択する
  • インスタンスを手動で選択する

パッチ適用スケジュール

スケジュールにより定期的にパッチ適用を実施するか、1回きりの単発で実施するかが選択可能です。

スケジュール実施する場合にはSystems Managerのメンテナンスウインドウというリソースを使用することになり、ここで新規作成するか、既存のものを選択するかを選べます。

「スケジュール作成とパッチインスタンスをスキップする」という日本語は、「Skip scheduling and patch instances now」の誤訳で、「スケジュールをスキップして今すぐインスタンスにパッチ適用する」の意味合いだと思っておけばよいでしょう。

パッチ適用オペレーション

パッチのスキャンおよびインストールを行うか、スキャンのみにするかを選択可能です。デフォルトでは、パッチをインストールした場合に再起動を伴うので注意が必要です。

追加設定

パッチグループを指定していた場合には、ここで適用するパッチベースライン登録を変更することもできます。

また、パッチグループ以外を指定していた場合には以下の注意書きが表示されるため、インスタンスに対してどのパッチベースラインを基にパッチ適用されるかを判断することができます。

選択したインスタンスのいずれかがパッチグループに属している場合、Patch Manager はそのパッチグループの登録済みパッチベースラインを使用して、インスタンスにパッチを適用します。パッチグループを使用するようにインスタンスで設定されていない場合、Patch Manager はインスタンスのオペレーティングシステムタイプに合わせて、デフォルトのパッチベースラインを使用します。

終わりに

パッチマネージャーのパッチベースラインとパッチグループについて整理しました。パッチ適用時にどのパッチベースラインが適用されるかの仕組みについては、きちんと抑えておかないと混乱しそうです。

マネジメントコンソールから操作する際には「パッチベースラインを選択」→「パッチ適用の設定」を押下すればそのパッチベースラインが適用されるのでは、と考えてしまいがちですが、そうではありません。しっかり理解しておきましょう。

実際にパッチ適用を行う際には様々なリソースが関連するのですが、そのあたりについてはまた別の場で取り上げられればと思います。

以上、腹筋がなかなか割れない千葉(幸)がお送りしました。

ちなみに

パッチグループの動作イメージについて、公式ドキュメントではこのように表現されています。

パッチグループについてより。

パッチグループの有無を判別して適用するパッチベースラインを決定する、という図なのですが、初見では理解が追いつきませんでした。 本稿を読んだ方がこの図の読み方を理解できるようになっていれば。。。何よりです。