Patch Manager で EC2 パッチを自動適用する
Session Manager の設定に続いて、Patch Manager を使用して EC2 インスタンスのパッチを自動的に定期スキャン・インストールする方法を解説します。
Session Manager を設定し、SSM Agent が稼働している状態まで来たら、
次は OS パッチの管理を自動化する番です。
それが Patch Manager です。
Patch Manager とは
Patch Manager は AWS Systems Manager の一機能で、
複数の EC2 インスタンスに対して OS やアプリケーションパッチを
一元管理することができます。
主な機能:
- パッチスキャン:利用可能なパッチを検出
- パッチインストール:定期的または手動でパッチを適用
- コンプライアンスレポート:フロート全体のパッチ状況を集約
- 除外ルール:特定パッチをスキップ可能
手動で各サーバに SSH して更新する、
または自分で cron job を書くのと比べて、
Patch Manager の利点は:
- ポリシーの一元管理
- 監査ログとコンプライアンスレポート
- 柔軟なスケジューリング(メンテナンスウィンドウ)
- 失敗時の自動ロールバック
事前準備
Session Manager と同様に、以下が必要です:
- EC2 が Session Manager の設定済み(IAM Role、Agent 稼働)
- EC2 が SSM エンドポイントに到達可能
- IAM Role が Patch Manager 権限を持つこと
IAM Policy の設定
AmazonSSMManagedInstanceCore を既にアタッチしていれば、
Patch Manager 権限は含まれています。
より細かく制御したい場合は、以下のカスタムポリシーを追加できます:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeDocument",
"ssm:GetDocument",
"ssm:DescribeDocumentParameters"
],
"Resource": "arn:aws:ssm:*:*:document/AWS-RunPatchBaseline"
},
{
"Effect": "Allow",
"Action": [
"ssm:GetAutomationExecution",
"ssm:StartAutomationExecution",
"ssm:GetCommandInvocation",
"ssm:ListCommandInvocations",
"ssm:ListCommands"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:aws-patch-manager-*"
}
]
}
通常 Patch Manager は追加の S3 やサービス権限は不要です。
カスタムパッチソースを使わない限りは。
Patch Manager の動作モード
2 つの運用モードがあります:
- Scan Only:スキャンのみ、パッチは適用しない
- Scan and Install:スキャンして自動適用
実務では、まず Scan Only で数週間運用してから、
Scan and Install に切り替えるのが安全です。
パッチスケジューリングの設定
ステップ 1: Patch Baseline を作成
AWS Console で Systems Manager > Patch Manager > Patch Baselines へ。
新しい Baseline を作成:
- 名前:例
linux-standard - OS:Linux または Windows を選択
- Approval rules:
- 特定分類のパッチを自動承認
- 一般的な分類:
Security、Bugfix、Enhancement - リリース後の承認遅延を設定可(例:7 日後に承認)
スキップしたいパッチがあれば、
Patch exceptions に追加します。
ステップ 2: メンテナンスウィンドウを作成
Systems Manager から Maintenance Windows へ。
新しいメンテナンスウィンドウを作成:
- 名前:例
weekly-patch-sunday - スケジュール:Cron 形式、例えば毎週日曜 2 時
1
cron(0 2 ? * SUN *)
- 継続時間:例えば 2 時間(バッファ時間)
- タイムゾーン:運用タイムゾーンを選択
ステップ 3: Patch Task を作成
メンテナンスウィンドウ内にタスクを追加:
- Task type:
Run command - Document:
AWS-RunPatchBaseline - Service role:Patch Manager ロール
- Targets:EC2 インスタンスを選択
- タグ利用(例
Environment: Production) - Instance ID を直接指定
- タグ利用(例
- Parameters:
- Operation:
Install(スキャン + 適用)またはScan(スキャンのみ) - Baseline Override:複数 Baseline がある場合は指定
- Operation:
ステップ 4: スケジュール実行を待機
Patch Manager は指定したメンテナンスウィンドウで実行します。
Patch Manager > Compliance でステータスを確認。
各 EC2 は以下のいずれかを表示:
- Compliant:全パッチ適用済み
- Non-compliant:未適用パッチあり
- Failed:実行失敗
ベストプラクティス
1. Scan Only で始める
いきなり Install しないでください。
数週間 Scan で実行して、パッチリストが妥当かを検証してから
Install に切り替えましょう。
2. 環境ごとに Baseline を分ける
Dev、Staging、Prod で異なる Baseline を作成。
Production はより保守的なルール(2-4 週間遅延)、
Dev は積極的に。
3. Patch Group を使用
EC2 に Patch Group タグをつけて
異なる戦略を適用可能です。
4. 通知を設定
SNS や EventBridge と連携して
パッチ完了通知と監査ログを得ましょう。
基本的に EventBridge は Scan または Install 後の EC2 のステータス変化を捕捉し、
イベントを下流に送信します。
EventBridge + SNS の組み合わせで基本的な通知を配信できます。
ただし、パッチリスト、失敗原因などの詳細情報を含めたい場合は、
Lambda を追加して通知を加工・充実させてから SNS で送信するのが効果的です。
トラブルシューティング
1) メンテナンスウィンドウ後、パッチが実行されない
確認事項:
- EC2 の IAM Role に Patch 権限があるか
- EC2 が Online か(
aws ssm describe-instance-informationで確認) - メンテナンスウィンドウの Target に該当 EC2 が含まれているか
2) パッチ実行が失敗した場合
よくある原因:
- パッチが再起動を必要とするが、自動再起動が off
- パッチがシステムと非互換
- ディスク空き容量不足
Compliance の詳細ログを確認。
3) パッチ適用後、システムが不安定になった
Staging 環境で先にテストして
互換性問題を事前に検出しましょう。
4) 今回のパッチ実行をスキップしたい
メンテナンスウィンドウを一時停止するか、
該当 EC2 を Target から削除。
まとめ
Patch Manager の核となる価値は:
各サーバに SSH して手動更新する必要がなく、
一元的なスケジューリング、レポート、監査ログが得られることです。
推奨ロールアウト:
- Scan で現状把握
- 非本番環境で Install をテスト
- 段階的ポリシー設定(Dev / Staging / Prod)
- Compliance レポートの継続監視
これにより堅牢な自動パッチガバナンスが実現します。
参考資料
- AWS Patch Manager: https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/patch-manager.html
- AWS-RunPatchBaseline Document: https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/documents-ssm-docs-run-command.html
- Patch Baselines: https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/patch-baselines.html
- Maintenance Windows: https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/maintenance-windows.html