AWS Systems Manager の Patch Manager を使って Windows Update を自動化した話

最近、AWS マネジメントコンソールのUIが変更され、未だに慣れきれていない筆者でございます。

AWS マネジメントコンソールのビジュアルアップデートのお知らせ (プレビュー)
https://aws.amazon.com/jp/blogs/news/announcing-a-visual-update-to-the-aws-management-console-preview/

UIが変わるのは一長一短で、自分は基本好きなんですが、
この紹介記事においては微妙かもしれないです・・・。

と、前置きが長くなりましたが、最初に注意点です。

本記事でご紹介したWebページは、予告なく変更される可能性がございます。
設定の際には、最新の情報をご参照ください。

ことのはじまり

EC2 にて Windows Server を稼働させることがありますが、セキュリティ向上のため、
Windows Update を定期的に実行する必要があります。

1,2台ぐらいなら手動でも対応ができますが、片手以上の台数になってくると
人力での対応が辛くなってくると思います。

そこで、AWSの機能を使って、このWindows Updateを自動で実行しよう!
というが今回のお話となります。

目次

ことのはじまり
今回使った技術
今回の環境
Patch Manager の設定
まとめ


今回使った技術

今回は、AWS Systems Manager にある、Quick Setup という機能の更に中にある、
Patch Manager という機能を利用していきます。

AWS Systems Manager Quick Setup
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-quick-setup.html

Quick Setup では、下記を提供しております。

Quick Setup は一般的なタスクまたは推奨されるタスクを自動化することで、Systems Manager を含むサービスのセットアップを簡素化します。これらのタスクには、例えば、必須の AWS Identity and Access Management (IAM) インスタンスプロファイルロールの作成、定期的なパッチスキャンやインベントリ収集などの運用上のベストプラクティスの設定が含まれます。

ここに記載のある「定期的なパッチスキャン」が、今回のものになります。

ちなみにその他にも

  • 「リソースの定期的な停止」
  • 「SSM Agent や CloudWatch Agent 等のアップデート」

なども、このQuick Setupで設定が可能なものになっています。

今回の環境

タイトルにある通り、今回は Windows 環境で実施します。
EC2 にて Windows Server 2019 を用意しておきます。

Patch Manager の設定

では今回の本題である Patch Manager を設定していきます。

SystemsManager > 高速セットアップ (※日本語の場合。) (英語だと Quick Setup) とアクセスします。

(2024-12 の記事執筆時点では、QuickSetupの画面はここから全て英語になります)

アクセス後、 Library > Patch manager > Create とアクセスします。
アクセスすると、設定画面が出てきます。

ここに必要事項を入力していきます。

Patch policy name

全体の設定名を入力します。任意の名前でOKです。

Scanning and installation

適用するパッチのスキャンとインストールのタイミングを設定できます。
今回はスキャンとインストールの両方を実施したいので、下記の通り設定しました。

  • Patch operation
    • Scan and Install
  • Scanning schedule
    • Use recommended defaults
    • ※ デフォルトの場合、毎日 10:00 JST にスキャンされます。
  • Installation schedule
    • Custom install schedule
    • cron(0 10 ? * SUN#4 *)
      • ※ その月の4回目の日曜日 20:00 JST にアップデートを実行
      • ※詳細は後述
    • "Reboot if needed" にチェックを入れる

Patch baseline

今回はAWSがデフォルトで用意しているベースパッチラインを使います。
選択肢としては、"Use recommended defaults" を選択します。

Windowsの場合は "AWS-DefaultPatchBaseline" です。

詳細は、下記サイトに記載がありますのでご確認ください。

事前定義されたパッチベースラインおよびカスタムパッチベースライン
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/patch-manager-predefined-and-custom-patch-baselines.html

適用されるパッチに関して

上記参考記載のとおりです

分類が「CriticalUpdates」または「SecurityUpdates」で、MSRC 重要度が「非常事態」または「重要」のすべての Windows Server オペレーティングシステムパッチ

適用タイミングに関して

こちらが少々注意が必要です。

ベースパッチラインの場合、 パッチがリリース後、7日経過後に自動承認される。 というものがあります。
これはパッチリリース直後に見つかったバグ等を適用しないための、
セーフティー的な措置ではないかと推測しています。
要は、すぐに適用せずにちょっと落ち着いたら適用しよう。というものです。

このベースパッチラインを使って「月に1回、Windows Updateを適用したい」という場合は、
Windows Updateのパッチリリース日
(日本では、時差の関係上、毎月第 2 火曜日の翌日 (第 2 水曜または第 3 水曜) の公開 [※1] )
の7日後に実行されるように、cron式を仕込む必要があります。

[※1] : https://msrc.microsoft.com/blog/2023/11/securityupdatereleaseschedule2024/

そのため、今回の検証では「4回目の日曜日」というタイミングでcron式を仕込んでいます。
(※ちなみに、日付指定でのcron式指定はうまく行かなかったのでこのようにしています)

Patching log storage

パッチのログをS3に保存するかを選びます。
こちらも必要があれば、任意のバケットを指定します。

Targets と Target Nodes

Patch Manager の対象となるリージョンとインスタンスを選べます。
今回は東京リージョンにある、特定のインスタンスを指定するため、次の通り選択しています。

  • Targets
    • Current Region
    • (※東京リージョンにてPatch Managerを構築している場合)
  • Target Nodes
    • Manual
    • 出てきたリストより対象のインスタンスを選択

Rate controle

同時並行数とエラー閾値の調整ができます。
今回はデフォルトのままで行きます。

Instance profile options

IAMロールなどのアタッチを自動でやってもらうかを選べます。
今回はチェックを入れて、自動でポリシーの割り当てをお願いします。

本番運用時は、既存ポリシーに影響を及ぼす可能性があるので、
事前に検証したうえで設定をおすすめします。

それ以下の設定

基本的にはデフォルトの設定を変更せずに設定します。

利用するIAMロールの名前やタグを付ける場合は、個別に設定を実施すればOKです。


ここまで設定すれば、確認をして「Create」をクリックすれば、
Quick Setup での Patch Manager 設定は完了です。

設定後

Quick Setup の "Configuration managers" に、作成したPatch Managerが新規で作成されています。

この項目を選択して、"View details" をクリックすると、この様な画面が出てきます

後は、一番下にある Configurations details 内の status が、すべてsuccessになれば、Windows Updateの適用が成功します!

補足情報

Quick Setup時にIAMロールをEC2に自動で割り当てる。という設定をしたことで、
今回はEC2インスタンスに対しては特段設定を加えずに利用可能になりました。

この記事を執筆するのに利用したアカウントでは、既に同様の方法でIAMロールが新規作成されており、
今回の記事執筆時に、新規でQuick Setupを実施した際には、このIAMロールが自動で割り当てられています。

そのため、検証時にいくつか手を加えたポリシーがありますので、一応ここにメモとして残しておきます。
うまく動作しないときは、このIAMポリシーを、EC2に適用されているロールに付与してみてください。

  • AmazonSSMManagedInstanceCore
  • AmazonSSMPatchAssociation
  • AWSQuickSetupPatchPolicyBaselineAccess
  • (カスタムポリシー) : S3上のログ保存バケットに対する全権限

まとめ

今回は初期設定のみを記事にしてお届けしました!
この他に、実際のパッチ適用の確認やポリシーの変更など、設定可能な箇所はいくつかあります。
このあたりは是非実際に触ってみてください。

投稿者プロフィール

n_fukuda
16年5月からアルバイトとして入社。
様々な新しい発見や個人的に興味を持ったことを
わかりやすくお伝えできればと思います。

ABOUTこの記事をかいた人

16年5月からアルバイトとして入社。 様々な新しい発見や個人的に興味を持ったことを わかりやすくお伝えできればと思います。