こんにちは。虎の穴ラボ株式会社のかなざわです。
今回は、AWS SystemManager の機能の一つである、PatchManagerについての記事となります。PatchManagerは以前にも触れたことのあるサービスだったのですが、
そのタイミングには無かった構築を手助けする QuickSetup が増えていたこともあり改めて触れてみました。
PatchManagerとは
PatchManagerは「サーバインスタンスのパッチ情報を管理および適用してくれるサービス」です。このサービスを利用することで、EC2インスタンスのパッチ情報を管理し自動的に適用することができます。
サポートされているOSはLinuxの各種ディストリビューションをはじめ、macOSやWindows Serverも対応範囲に入っています。詳細はAWSドキュメントを参照してください。
PatchManagerの動作概要
PatchManagerは単独で動作するわけではなく、SystemManagerの他の機能と連携して動作します。以下にその主要な動作の流れを示します。
- パッチスキャンの実行タイミングの設定: 以下2つの方法のうちどちらかで設定する
- SystemManagerのステートマネージャー機能を利用して、パッチをスキャンおよびインストールするタイミングの調整を行います。
- ステートマネージャー機能以外にSystemManagerのメンテナンスウィンドウ機能を利用しても、同様の設定が可能です。
- パッチの適用基準設定:PatchManagerでどのパッチをベースライン(≒対象)として適用するかを定義します。
各機能や設定について下記で簡単に紹介いたします。
ステートマネージャー機能
SystemManagerのステートマネージャー機能はEC2インスタンスの状態を自動的に管理および維持するための機能です。すでに定義されているの各種タスクに、実行するEC2インスタンスや実行タイミングを設定してインスタンスの自動管理を進める機能です。
メンテナンスウインドウ機能
メンテナンスウインドウ機能は、計画的なメンテナンス作業をスケジュールおよび実行するための機能です。メンテナンスウインドウ開始と終了のそれぞれの時刻枠を定義し、その定義設定を各種タスクに紐づけることで機能します。
ベースライン機能
PatchManagerのベースラインは、どのパッチを適用対象とするのかどうかを決定する設定です。ベースラインを定義し、そのベースラインに該当するパッチの処理方法を決める必要があります。
| 項目 | 説明 |
|---|---|
| 分類 | Security/Bugfix/Enhancementなど |
| 重要度 | Critical/Important/Mediumなど |
| 自動承認日数 | 問題ないと判断されたパッチが適用可能になる日数 |
| 例外 | 明示的に承認または拒否するパッチ |
| パッチのソース | パッチのリポジトリ |
デフォルトで用意されているベースラインを利用することもできますが、カスタマイズが必要な場合は自身で新たに作成できます。
QuickSetup
以前私が触れたタイミングでは、PatchMangerを構成する際にステートマネージャー機能やメンテナンスウインドウ機能についても構築する必要があったためなのか、意外と内容の把握に時間を要した覚えがあります。PatchManagerと各設定のメニューがそれぞれで存在しており関連性を抑えるのに時間がかかったことも影響していそうです。

特に両機能は設定できる内容が似通っていることもあり、どちらを使用するか迷うシチュエーションはありそうな気もします。AWSドキュメントにも、要件や適用したいシチュエーションに応じての選択を案内する記述がありました。
AWS Systems Manager の機能である State Manager と Maintenance Windows では、マネージドノードで同様の種類の更新を実行できます。どちらを選択するかは、システムコンプライアンスを自動化する必要があるか、指定した期間中に優先度の高い、時間的制約のあるタスクを実行するかによって異なります。
QuickSetupでは、PatchManagerの設定として必要な設定内容がQuickSetupを通して設定できるようなかたちとなっており、"今後、パッチマネジメントを行っていくためにまずはサービスに触れて感触を掴みたい"といったユーザに親和性が高いものになっていると感じました。なお、AWSドキュメントにも記載があるとおり、AWSが推奨するベストプラクティスを取り入れたかたちで設定されます。
AWS Systems Manager の一機能である Quick Setup を使用し、推奨されるベストプラクティスを取り入れて頻繁に使用する Amazon Web Services のサービスと機能をすばやく設定します。
QuickSetupを利用して設定する画面をもとに内容をご紹介します。
スキャンおよびインストール
パッチオペレーション方法として、必要なパッチデータを収集するのみか実際にインストール行うかどうかを選択します。その動作を行うスケジュールも設定します。CRON式も使用できます。
特にスケジュールの設定ではPatchManagerの設定画面から直接設定できるようになり、より一元的な設定が可能となりました。

パッチベースライン
対象となるパッチのベースラインを定義します。各OS毎にすでに基本となるベースラインが作成されており、推奨される既定値を使用とするとそのベースラインが使用されます。カスタムパッチベースラインを選択し、基本のベースラインをカスタムした設定を選択することもできます。

ターゲットノード
PatchManagerの設定を適用するEC2インスタンスを選択します。数台であれば手動での管理も可能ですが、大規模な場合は別途EC2インスタンスのタグを使用した管理が必要になると思われます。

インスタンスプロファイル
SystemManager(PatchManager)をEC2インスタンスが利用するには、EC2インスタンスに専用のIAMロールの付与が必要です。この項目ではその設定を行います。

各種設定を行い「作成」をクリックすると、PatchManagerの新規設定が作成されます。

まとめ
PatchManagerはAWS EC2インスタンスのパッチ管理を簡略化するためのツールです。PatchManagerの構築にはQuickSetupが用意されており、今回実際に使用することでPatchManagerの設定がより直感的に行えることを実感することができました。
今回はPatchManagerの設定作業についてフォーカスしましたが、
- 実際のEC2インスタンスにおけるパッチ適用オペレーションの設計
- 内部インスタンスへの適用
- カスタムパッチリポジトリの適用
といった実運用に関する内容についても知見を深めていこうと思います。
採用情報
虎の穴では一緒に働く仲間を募集中です!
この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧下さい。
カジュアル面談やエンジニア向けイベントも随時開催中です。ぜひチェックしてみてください。 toranoana-lab.co.jp