Systems Manager Patch Manager ハンズオン

OS パッチをメンテナンスウィンドウで自動適用し、コンプライアンスを確認する

AWS Systems Manager Patch Manager メンテナンスウィンドウ Amazon EC2 マネコン操作 中級 所要時間 60〜75 分 v1.0

📋 概要

このハンズオンでは、AWS Systems Manager の Patch Manager を使い、EC2 インスタンスの OS パッチ適用を自動化します。パッチベースライン(適用ルール)を定義し、メンテナンスウィンドウ(適用スケジュール)で定期実行し、パッチコンプライアンス(適用状況)をレポートで確認します。手作業の SSH パッチ適用から脱却する運用自動化を学びます。

項目内容
所要時間60〜75 分
難易度中級
主要サービスSystems Manager(Patch Manager、メンテナンスウィンドウ)、EC2
前提リソースSSM 管理下の EC2 インスタンス(Session Manager ハンズオンの構成を流用可)
課金目安Patch Manager 自体は無料。EC2 の稼働料金のみ
ℹ️ Patch Manager の主要コンポーネント
用語説明
パッチベースラインどのパッチを承認/拒否するかのルール(OS 種別ごと)
パッチグループタグでグループ化したインスタンス群。グループ単位でベースラインを割り当て
メンテナンスウィンドウパッチ適用を実行する時間枠(スケジュール)
コンプライアンス各インスタンスのパッチ適用状況(準拠/非準拠)

🏗️ 構成図

🏷️ EC2(タグ: Patch Group = handson-patch-group)
↓ パッチグループで関連付け
📋 パッチベースライン(承認ルール: Critical/Important を自動承認)
↓ スケジュール実行
🕐 メンテナンスウィンドウ(毎週日曜 AM 3:00 など)
タスク: AWS-RunPatchBaseline(Scan または Install)
↓ 適用結果
パッチコンプライアンスレポート(準拠/非準拠を可視化)

✅ 前提条件

ℹ️ Session Manager ハンズオンとの連携

Session Manager ハンズオンで IAM ロール(handson-ec2-ssm-role)をアタッチ済みの EC2 があれば、そのまま利用できます。SSM 管理下にあることが前提条件です。

🔧 ステップ 1: EC2 へのパッチグループタグ付け

パッチ対象のインスタンスを「Patch Group」タグでグループ化します。

手順
  1. EC2 コンソール → インスタンス → 対象インスタンスを選択
  2. 「タグ」タブ → 「タグを管理」
  3. タグを追加:
キー
Patch Group
handson-patch-group
  1. 「保存」
⚠️ タグキーは「Patch Group」(スペースあり)

Patch Manager が認識するタグキーは Patch Group(P と G が大文字、間にスペース)です。PatchGrouppatch-group では認識されません。正確に入力してください。

🔧 ステップ 2: パッチベースラインの作成

どのパッチを自動承認するかのルールを定義します。

2-1. ベースラインの作成

手順
  1. Systems Manager コンソール → 左メニュー「ノード管理」→「Patch Manager」
  2. 初回は「パッチングを設定する」、または右上「設定」→「パッチベースライン」タブ → 「パッチベースラインの作成」
設定値
名前
handson-patch-baseline
説明
Hands-on baseline for Amazon Linux
オペレーティングシステム
Amazon Linux 2023(対象 EC2 に合わせる)

2-2. 承認ルールの設定

設定値(承認ルール)
製品
All
分類
Security, Bugfix
重要度
Critical, Important
自動承認
パッチリリースから 7 日後に自動承認

「パッチベースラインの作成」をクリックします。

ℹ️ 自動承認の待機日数(Auto-approval delay)

「7 日後に自動承認」は、パッチがリリースされてから 7 日間の様子見期間を設けて、問題のあるパッチを除外する仕組みです。検証目的ですぐに適用したい場合は 0 日に設定することもできます。

🔧 ステップ 3: ベースラインへのパッチグループ割り当て

作成したベースラインに、ステップ 1 でタグ付けしたパッチグループを関連付けます。

手順
  1. Patch Manager → 「設定」→「パッチベースライン」タブ
  2. handson-patch-baseline を選択 → 「アクション」→「パッチグループの変更」
  3. パッチグループ: handson-patch-group を入力 → 「追加」
  4. 「閉じる」
✅ 確認

パッチベースライン一覧で handson-patch-baseline の「パッチグループ」列に handson-patch-group が表示されれば関連付け完了です。これでタグの付いた EC2 はこのベースラインのルールが適用されます。

🔧 ステップ 4: オンデマンドでパッチスキャン

メンテナンスウィンドウを待たずに、今すぐパッチ状況をスキャンして確認します。

4-1. 「今すぐパッチ」を実行

手順
  1. Patch Manager → 「今すぐパッチ適用」(Patch now)をクリック
  2. パッチ適用オペレーション: 「スキャン」(Scan only。Install ではなく、まず状況確認)
  3. インスタンスを選択: 「パッチグループを選択」→ handson-patch-group、またはタグ/手動選択
  4. 「パッチ適用」をクリック
ℹ️ Scan と Install の違い
オペレーション動作再起動
Scan不足パッチを検出するだけ(適用しない)なし
Install承認済みパッチを実際に適用必要に応じて再起動

4-2. スキャン結果の確認

手順
  1. 実行が完了するまで数分待つ(「実行履歴」で進捗確認)
  2. Patch Manager → 「ダッシュボード」または「コンプライアンスレポート」を確認
  3. 各インスタンスの「準拠していないパッチ数」が表示される
⚠️ Install 時の再起動に注意

本番環境で Install を実行するとパッチによっては OS が再起動します。サービス停止を避けるため、メンテナンスウィンドウ(次のステップ)で業務時間外に実行するのが定石です。再起動を抑制したい場合は RebootOptionNoReboot に設定できます。

🔧 ステップ 5: メンテナンスウィンドウで定期適用

パッチ適用を定期スケジュールで自動実行するメンテナンスウィンドウを作成します。

5-1. メンテナンスウィンドウの作成

手順
  1. Systems Manager → 「変更管理」→「メンテナンスウィンドウ」→「メンテナンスウィンドウの作成」
設定値
名前
handson-patch-window
スケジュール
Cron/Rate 式 → cron(0 3 ? * SUN *)(毎週日曜 3:00)
タイムゾーン
Asia/Tokyo
期間
2 時間
タスクの開始を停止
1 時間(終了 1 時間前から新規タスクを開始しない)

「メンテナンスウィンドウの作成」をクリックします。

5-2. ターゲットの登録

手順
  1. 作成したウィンドウ → 「ターゲット」タブ → 「ターゲットの登録」
  2. ターゲット名: handson-patch-targets
  3. ターゲットの選択: 「タグの指定」
  4. タグキー: Patch Group / タグ値: handson-patch-group
  5. 「ターゲットを登録する」

5-3. タスクの登録

手順
  1. 「タスク」タブ → 「タスクの登録」→「Run command タスクの登録」
  2. コマンドドキュメント: AWS-RunPatchBaseline を選択
  3. ターゲット: 「登録済みターゲットグループの選択」→ handson-patch-targets
  4. パラメータ → Operation: Install(または Scan で検証)
  5. IAM サービスロール: 「メンテナンスウィンドウに代わって〜(サービスにリンクされたロールを使用)」を選択
  6. 同時実行数 / エラーしきい値: 1 / 1(検証用)
  7. 「Run command タスクの登録」
ℹ️ すぐにテストしたい場合

毎週日曜まで待たずに動作確認したい場合は、スケジュールを「現在時刻の 10 分後」の cron 式に一時的に変更するか、ステップ 4 の「今すぐパッチ適用」で Install を実行してください。

🔧 ステップ 6: パッチコンプライアンスの確認

6-1. コンプライアンスレポートの確認

手順
  1. Patch Manager → 「ダッシュボード」タブ
  2. 「コンプライアンスの概要」で準拠/非準拠のインスタンス数が円グラフで表示される
  3. 「ノードを表示」または「コンプライアンスレポート」で各インスタンスの詳細を確認

6-2. インスタンス単位の詳細確認

手順
  1. Systems Manager → 「ノード管理」→「コンプライアンス」
  2. 対象インスタンスをクリック
  3. 適用済み/不足/失敗のパッチ一覧(KB 番号・重要度・状態)が確認できる
コンプライアンス状態意味
Compliant(準拠)ベースラインで承認されたパッチがすべて適用済み
Non-compliant(非準拠)承認済みだが未適用のパッチがある
Installed適用済みのパッチ
Missing承認済みだが未適用
Failed適用に失敗したパッチ
✅ 確認

Install 実行後にコンプライアンスが「準拠(Compliant)」になっていれば、パッチ適用の自動化が成功しています。非準拠のインスタンスは詳細から不足パッチを特定できます。

🧹 クリーンアップ

Patch Manager 自体は無料ですが、検証用リソースを片付けます。

削除手順

  1. メンテナンスウィンドウの削除
    Systems Manager → メンテナンスウィンドウ → handson-patch-window → 「削除」
    (タスク・ターゲットもウィンドウ削除で一緒に消えます)
  2. パッチベースラインの削除
    Patch Manager → 設定 → パッチベースライン → handson-patch-baseline → パッチグループの関連付けを解除 → 「削除」
  3. EC2 タグの削除(任意)
    EC2 → 対象インスタンス → タグ → 「Patch Group」タグを削除
ℹ️ 本番運用での推奨

パッチ管理はセキュリティの基本です。本番環境ではメンテナンスウィンドウとベースラインを残し、定期的な自動パッチ適用とコンプライアンス監視を継続することが推奨されます。EventBridge でコンプライアンス変化を検知して通知する仕組みと組み合わせるとさらに堅牢になります。