SOA

SSM Patch Managerでカスタムパッチベースラインを作成(Windows)

スポンサーリンク
WindowsインスタンスにSSM Patch Managerを実行する構成 SOA
スポンサーリンク
スポンサーリンク

SSM Patch Managerでカスタムパッチベースラインを作成してWindowsインスタンスにパッチ配信する構成

System Manager(SSM) Patch Managerは、EC2インスタンスへのパッチ適用の自動化する機能です。

今回はWindowsインスタンスを対象とします。デフォルトのAWS-DefaultPatchBaselineに加え、独自のパッチベースライン(カスタムパッチベースライン)を作成し、両者を実行することで、Patch Managerの挙動を確認します。

Linuxインスタンス(Amazon Linux 2)に対するSSM Patch Managerの実行については、以下のページをご確認ください。

構築する環境

AWS認定アソシエイト3資格対策~ソリューションアーキテクト、デベロッパー、SysOpsアドミニストレーター~ | 平山毅, 堀内康弘, 福垣内孝造, 岡智也, 池田大, 原江梨佳, 澤田拓也, 原俊太郎, 仲村勇亮, 上村祐輝, 鳥谷部昭寛 | 工学 | Kindleストア | Amazon
Amazonで平山毅, 堀内康弘, 福垣内孝造, 岡智也, 池田大, 原江梨佳, 澤田拓也, 原俊太郎, 仲村勇亮, 上村祐輝, 鳥谷部昭寛のAWS認定アソシエイト3資格対策~ソリューションアーキテクト、デベロッパー、SysOpsアドミニストレーター~。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、K...
Diagram of SSM Patch Manager on Windows Instance

基本的に使用するリソースはLinux版と同じです。
Windows版では、VPCエンドポイントではなく、NATゲートウェイを配置して、VPC外のリソース(System ManagerとS3)にアクセスするための経路を用意します。

CloudFormationテンプレートファイル

上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートファイルを設置します。

awstut-soa/04/003 at main · awstut-an-r/awstut-soa
Contribute to awstut-an-r/awstut-soa development by creating an account on GitHub.

テンプレートファイルのポイント解説

先述の通り、多くの設定がLinux版と同様です。本ページでは、Windows版の特徴的な点のみ取り上げます。

VPCエンドポイントではなくNATゲートウェイでインターネット向けの経路を用意する

先述の通り、NATゲートウェイとインターネットゲートウェイを使用して、インターネット向けのルートを確保します。これはWindowsインスタンスに対して、SSM Patch Managerを実行する上での要件に起因します。

Windows Server インスタンスは、Windows Update カタログまたは Windows Server Update Services (WSUS) に接続できなくてはなりません。インスタンスがインターネットゲートウェイ、NAT ゲートウェイ、または NAT インスタンスを介して Microsoft Update Catalog に接続されていることを確認します。

Patch Manager の前提条件

Linux版では、SSMおよびS3用のVPCエンドポイントを作成することで、Patch Managerを実行するための要件を満たしていました。ただし上記の通り、Windowsインスタンスの場合は、これに加えて、インターネットにアクセスして、Microsoft Update Catalogに接続できることも要件に加わります。よって今回はNATゲートウェイを配置して、プライベートサブネット内のWindowsインスタンスが、インターネットにアクセスできるようにし、本要件を満たす構成とします。

Windows向けカスタムパッチベースライン作成のポイント

ポイントはWindowsインスタンス向けのカスタムパッチベースラインリソースです。

Resources: MyPatchBaseline: Type: AWS::SSM::PatchBaseline Properties: ApprovalRules: PatchRules: - ApproveAfterDays: 7 ComplianceLevel: UNSPECIFIED EnableNonSecurity: false PatchFilterGroup: PatchFilters: - Key: CLASSIFICATION Values: - CriticalUpdates #- SecurityUpdates - Key: MSRC_SEVERITY Values: - Critical #- Important Description: Test Patch Baseline. Name: !Sub "${Prefix}-MyPatchBaseline" OperatingSystem: WINDOWS PatchGroups: - !Sub "${Prefix}-patch-group"
Code language: YAML (yaml)

全体的にはLinux版と同様ですが、細部が異なります。

まずOperatingSystemプロパティでパッチベースラインの対象OSを指定しますが、今回はWindows向けですので、「WINDOWS」を指定します。次にPatchFiltersプロパティ以下のKeyプロパティですが、程度を示すSeverityが、Windowsの場合は「MSRC_SEVERITY」となります。Linux版の場合は「SEVERITY」ですのでご注意ください。

今回作成するカスタムパッチベースラインですが、デフォルトのAWS-DefaultPatchBaselineの一部を変更して作成します。

AWS-DefaultPatchBaseline

コメントアウトを外すと、AWS-DefaultPatchBaselineと同様の設定となります。

今回の構成でAWS-RunPatchBaseline実行時の挙動を整理します。

  • Instance1:タグ(パッチグループ)設定なし -> デフォルトのAWS-DefaultPatchBaselineが実行される
  • Instance2:タグ(パッチグループ)設定あり -> カスタムパッチグループ(MyPatchBaseline)が実行される

環境構築

CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。

CloudFormationスタックを作成し、スタック内のリソースを確認する

CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。

各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。

  • ログ保存用バケットの名前:soa-04-003
  • Instance1のID:i-0be0847252c5cf00e
  • Instance2のID:i-008140484431d4e33
  • カスタムパッチベースライン名:soa-04-003-MyPatchBaseline
  • カスタムパッチベースラインのID:pb-0cc1eee728bf421b0
  • カスタムパッチベースライン用のパッチグループ:soa-04-003-patch-group

作成されたカスタムパッチベースラインを確認します。

Custom Patch Baseline Details.

Windows Serverを対象として、クリティカルアップデートがクリティカルなパッチのみを承認するルールが作成されています。Patch groupsの項目をみると、本ベースラインの適用対象が「soa-04-003-patch-group」ということもわかります。

次にインスタンスに付与されたタグを確認します。

The tag for the patch group in SSM Patch Manager is not set.
A tag for a patch group in SSM Patch Manager.

Instance2の方にだけ、Patch Groupのタグがあります。このタグの値が先ほど確認したカスタムパッチベースラインのパッチグループと同名ということがわかります。
これでInstance2はパッチグループに所属していることになります。

Patch Manager実行結果を確認する

準備が整いましたので、Patch Managerの実行結果を確認します。
SSM Run Commandのページから確認することができます。

Results of running SSM Patch Manager.

2台のインスタンスに対して、Patch Managerの実行が成功していることがわかります。

次に各インスタンスの実行結果を確認します。まずInstance1を確認します。

Result of running AWS-DefaultPatchBaseline.

デフォルトのAWS-DefaultPatchBaselineが実行され、28のパッチが適用されたことがわかります。

次にInstance2を確認します。

Result of running Custom Patch Baseline.

カスタムパッチベースライン(soa-04-003-MyPatchBaseline)が実行されましたが、1つもパッチが適用されませんでした。今回の条件(クリティカルアップデートがクリティカルなパッチ)を満たすものがなかったようです。

最後に実行ログを確認します。ログは指定したバケットに、インスタンスIDごとに設置されます。

The results of the SSM Patch Manager execution are saved in the S3 bucket.

上の画像はInstance1のログですが、実行ログはstdout.txtとして設置されます。Instance1側の実行ログの中身を確認します。

Preparing to download PatchBaselineOperations PowerShell module from S3. Downloading PatchBaselineOperations PowerShell module from https://s3-ap-northeast-1.amazonaws.com/aws-ssm-ap-northeast-1/patchbaselineoperations/Amazon.PatchBaselineOperations-1.33.zip to C:\ProgramData\Amazon\SSM\InstanceData\i-0be0847252c5cf00e\document\orchestration\a84181fe-a330-4d8d-abf1-fdd49a6f4a61\PatchWindows\Amazon.PatchBaselineOperations-1.33.zip. Extracting PatchBaselineOperations zip file contents to temporary folder. Verifying SHA 256 of the PatchBaselineOperations PowerShell module files. Successfully downloaded and installed the PatchBaselineOperations PowerShell module. Patch Summary for i-0be0847252c5cf00e PatchGroup : BaselineId : pb-04ba050f612fba3a6 Baseline : {"AccountId":"486716784251","BaselineId":"pb-04ba050f612fba3a6","Name":"AWS-DefaultPatchBaseline","GlobalFilters":{"Filters":[{"Key":"PRODUCT","Values":["*"]}]},"ApprovalRules":{"Rules":[{"ApproveAfterDays":7,"FilterGroup":{"Filters":[{"Key":"CLASSIFICATION","Values":["CriticalUpdates","SecurityUpdates"]},{"Key":"MSRC_SEVERITY","Values":["Critical","Important"]}]}}]},"ApprovedPatches":[],"RejectedPatches":[],"RejectedPatchesAction":"ALLOW_AS_DEPENDENCY","CreatedTime":1525327437.876,"ModifiedTime":1525327437.876,"Description":"Default Patch Baseline Provided by AWS."} SnapshotId : 936681b3-6848-40e0-932a-87557809dd23 ExecutionId : a84181fe-a330-4d8d-abf1-fdd49a6f4a61 RebootOption : RebootIfNeeded OwnerInformation : OperationType : Install OperationStartTime : 2022-01-22T11:19:01.0000000Z OperationEndTime : 2022-01-22T11:43:08.5621334Z InstalledCount : 28 InstalledRejectedCount : 0 InstalledPendingRebootCount : 0 InstalledOtherCount : 9 FailedCount : 0 MissingCount : 0 CriticalNonCompliantCount : 0 SecurityNonCompliantCount : 0 OtherNonCompliantCount : 0 NotApplicableCount : 1885 UnreportedNotApplicableCount : 0 EC2AMAZ-JNT8FVJ - PatchBaselineOperations Installation Results - 2022-01-22T11:43:09.077 KbArticleId Installed Message ----------- ----------- ----------- KB5009557 Yes Success KB5009718 Yes Success
Code language: plaintext (plaintext)

パッチ適用の詳細を確認することができます。

まとめ

SSM Patch Managerを使用し、EC2インスタンス(Windows)にパッチ配信できることを確認しました。

デフォルトのAWS-DefaultPatchBaselineに加え、カスタムパッチベースラインを作成して実行することで、パッチ適用結果の確認方法やログ出力状況を確認しました。

タイトルとURLをコピーしました