😊

【AWS】 SystemsManagerのパッチマネージャーを利用してOSパッチ適用してみた

2022/07/13に公開

はじめに

SystemsManagerのパッチマネージャーを利用してOSのパッチ適用してみました。
個人的に複雑と感じましたので、その備忘として残します。
以下は今回の構成図です。

構成図

今回の手順の簡単な流れです。

#事前準備

1.インスタンス構築

2.IAMロール作成とアタッチ

#パッチ適用作業

1.SystemsManagerのベースラインの確認

2.ベースラインとパッチグループの紐づけ

3.パッチ適用したい対象インスタンスとパッチグループを紐づける

4.パッチ適用の設定

5.スキャン

6.定期実行の設定(スキャン+インストールを実施する)

7.動作確認

それでは、事前準備から記載していきます。

事前準備

1.インスタンス構築

今回はAmazon Linux 2のAMIを利用します。構成図にある通り、パブリックサブネットに構築しました。インスタンス構築の手順詳細は省略します。

2.IAMロール作成とアタッチ

デフォルトだとEC2インスタンスはSystemsManagerへの権限がないので、IAMで許可します。
AmazonSSMManagedInstanceCore というポリシーがアタッチされたロールを作成して、
対象のインスタンスにアタッチしました。
参考:新ポリシー AmazonSSMManagedInstanceCore がサポートされました

これで事前準備できましたので、次項からSystemsManagerを操作していきます。

パッチ適用作業

1.SystemsManagerのベースラインの確認

1-1. マネージドコンソールから「SystemsManager」を検索

1-2. 左メニューから「パッチマネージャー」を選択

1-3. 「事前定義されたベースラインを表示する」をクリック

1-4. 事前定義されたAmazon Linux 2 向けのデフォルトパッチベースラインを選択

事前準備でAmazon Linux 2のインスタンスを構築しましたので、Amazon Linux 2向けのパッチベースラインを利用します。
ベースライン名は 「AWS-AmazonLinux2DefaultPatchBaseline」というものです。

1-5. ベースラインの設定を確認(本稿では設定はデフォルトのまま進めます)

どのオペレーティングシステムで、どんな承認ルールで承認されているかなど確認できます。
今回は分類が「セキュリティ」かつ重要度レベルがCritical,Importantのパッチを承認するルールになっています。
参考:事前定義されたパッチベースラインおよびカスタムパッチベースラインについて

2.ベースラインとパッチグループの紐づけ

2-1. ベースラインの画面右上のアクションボタンから「パッチグループの変更」を選択

2-2.「パッチグループ」に適当な名前を入力し「追加」をクリックし閉じる


今回は「Test-SSM」という名前を入力し、追加しました。
追加するとキャプチャのように入力したパッチグループ名が表示されます。

3.パッチ適用したい対象インスタンスとパッチグループを紐づける

3-1. EC2の管理画面からパッチ適用したい対象インスタンスを選択し、タグを付与する(複数対象がある場合は繰り返す)


EC2の管理画面から対象インスタンスに対しタグを以下のように付与します。

Key Value
Patch Group Test-SSM(2-2で作成したパッチグループ名)

4.パッチ適用の設定

4-1.パッチマネージャーに戻り、「パッチ適用を設定」をクリック

4-2.パッチ適用するインスタンスを選択。前項で設定したパッチグループを対象にする

今回作成した「Test-SSM」を対象と指定しています。

4-3. スケジュールを設定(今回は即時実行のため「スケジュール作成をスキップしインスタンスへのパッチ適用を直ちに実施する」を選択)

4-4. パッチ適用操作で実施する処理を選択(「スキャンのみ」にします。)

4-5. 追加の設定でベースラインの関連付けを確認

4-6.設定内容を確認して「パッチ適用を設定」ボタンをクリック

5.スキャン

5-1.パッチマネージャの「ダッシュボード」タブをクリック

5-2.バッチオペレーション履歴に前項で設定したスキャンが追加されていることを確認。Scanのリンクをクリック

5-3.処理が終わるのを待ち、スキャン状況を確認し、「ターゲットと出力」から対象のインスタンスIDをクリック

5-4.スキャンの結果を確認する(今回の対象はLinuxなのでステップ2のPatchLinuxに結果が出力される)


Outputを展開すると実施した処理の結果を確認できます。(ダウンロードも可能。)
SystemsManagerの左メニューの「Run Command」から今実施したコマンドIDをクリックして詳細を確認すると、コマンドドキュメント「AWS-RunPatchBaseline」というドキュメントを利用したことが確認できます。
参考:AWS-RunPatchBaseline SSM ドキュメントについて

5-5.フリートマネージャの「パッチ」からスキャン結果を確認

6.定期実行の設定(スキャン+インストールを実施する)

6-1.ダッシュボードから「パッチ適用を設定」をクリック

6-2.パッチ適用する対象を確認(前項で作ったパッチグループを指定)

4-1,4-2と同じ操作です。

6-3.スケジュールとメンテナンスウィンドウを設定


cron式でメンテナンスしたい時間を指定します。

6-4.パッチ適用操作で実施する処理を選択(スキャンとインストールを選択)

6-5.設定を確認して「パッチ設定」をクリック

7.動作確認

7-1.メンテナンスされた形跡をダッシュボードから確認


6-3.で指定した時間にメンテナンスが行われるので、その時間以降に確認します。
パッチオペレーションが「Scan」ではなく「Install」になっています。
5-5.ではScanのみでしたが、今回はInstallまで実施して成功したことが確認できます。

参考

参考:AWS Systems Manager のパッチマネージャーを利用した OS パッケージの更新 (Amazon Linux 2 編)

SystemsManagerは他にもたくさんの機能があるので、調べながらまたZennに投稿したいと思います。
最後までお読みいただきありがとうございました。

Discussion