AWS Systems Manager
ユーザーガイド

SSM ドキュメント AWS-RunPatchBaseline について

AWS Systems Manager は、インスタンスにセキュリティパッチ適用オペレーションを実行するパッチマネージャーの SSM ドキュメント、[AWS-RunPatchBaseline] をサポートします。このドキュメントは、Linux と Windows の両方のインスタンスに対応しているため、どちらのタイプのインスタンスを Systems Manager で管理している場合でも、各インスタンスに対して信頼性の高い方法で適用できます。ドキュメントは、プラットフォーム別に適切なアクションを実行します。

注記

パッチマネージャーは、レガシーの SSM ドキュメント [AWS-ApplyPatchBaseline] もサポートしています。ただし、このドキュメントが対応するのは Windows インスタンスのみです。AWS-RunPatchBaseline を使用するようお勧めします。このドキュメントは、Linux と Windows の両方のインスタンスへのパッチ適用に対応しているためです。[AWS-RunPatchBaseline] ドキュメントを使用するには、バージョン 2.0.834.0 以降の SSM エージェント が必要です。

Windows システムの場合:

Windows インスタンスの場合、AWS-RunPatchBaseline ドキュメントは、PowerShell モジュールをダウンロードして呼び出します。これに伴って、インスタンスに適用するパッチベースラインのスナップショットがダウンロードされます。このパッチベースラインのスナップショットは、Windows Update API に渡され、ここで承認済みパッチのダウンロードとインストールが適切に制御されます。

Linux システムの場合:

Linux インスタンスの場合、AWS-RunPatchBaseline ドキュメントは、Python モジュールを呼び出します。これに伴って、インスタンスに適用するパッチベースラインのスナップショットがダウンロードされます。このパッチベースラインのスナップショットは、定義済みルールと、承認済みパッチおよび拒否済みパッチのリストを使用し、インスタンスタイプ別に適切なパッケージマネージャーを設定します。

  • Amazon Linux、Amazon Linux 2 および RHEL インスタンスは YUM を使用します。YUM オペレーションの場合、パッチマネージャーには Python 2.6 以降が必要です。

  • Ubuntu Server インスタンスは APT を使用します。APT オペレーションの場合、パッチマネージャーには Python 3 が必要です。

  • SUSE Linux Enterprise Server インスタンスは Zypper を使用します。Zypper オペレーションでは、パッチマネージャーには Python 2.6 以降が必要です。

すべての承認済み更新と該当する更新がインストールされ、必要に応じて再起動されると、パッチコンプライアンス情報がインスタンスで生成されて Patch Manager にレポートされます。パッチコンプライアンスデータの表示方法については、「パッチコンプライアンスについて」を参照してください。

AWS-RunPatchBaseline のパラメータ

[AWS-RunPatchBaseline] は 3 つのパラメータをサポートしています。Operation パラメーターが必要です。InstallOverrideList はオプションです。Snapshot-ID は、厳密にはオプションですが、メンテナンスウィンドウ 外で AWS-RunPatchBaseline を実行するときは、このパラメータにカスタム値を指定することをお勧めします。これにより、ドキュメントを メンテナンスウィンドウ オペレーションの一部として実行するときに、この値がパッチマネージャーから自動的に渡されます。

パラメータ名: Operation

使用: 必須。

オプション: Scan | Install

スキャン

Scan オプションを選択すると、[AWS-RunPatchBaseline] はインスタンスのパッチコンプライアンス状態を確認し、この情報をパッチマネージャーに返します。Scan では、更新のインストールや、インスタンスの再起動を求めません。代わりに、承認済み更新でインスタンスに適用可能なものが見つからない個所を示します。

インストール

Install オプションを選択すると、[AWS-RunPatchBaseline] はインスタンスに見つからない承認済み更新と適用可能な更新のインストールを試行します。Install オペレーションの一部として生成されるパッチコンプライアンス情報には、見つからない更新は示されませんが、更新のインストールが何らかの原因で失敗した場合は「失敗」状態になっている更新がレポートされることがあります。更新がインスタンスにインストールされるたびに、インスタンスが再起動され、更新がインストール済みで有効になっていることが確認されます。

パラメータ名: InstallOverrideList

使用: オプション。

InstallOverrideList を使用すると、インストールするパッチのリストに対する https URL または Amazon Simple Storage Service (Amazon S3) パス形式の URL を指定できます。このパッチインストールリストは、YAML 形式で管理され、デフォルトのパッチベースラインで指定されたパッチを上書きします。これにより、どのインスタンスにどのパッチがインストールされているかを、より詳細にコントロールできます。

コンプライアンスレポートは、パッチの InstallOverrideList リストで指定するものではなく、パッチのベースラインで指定されているものに従ってパッチの状態が反映されることに注意してください。つまり、スキャンオペレーションは InstallOverrideList パラメータを無視します。これは、コンプライアンスレポートが、特定のパッチ適用オペレーションで承認されたものではなく、ポリシーに従ってパッチ状態を一貫して反映することを保証するためです。

有効な URL 形式

  • https URL 形式:

    https://s3.amazonaws.com/my-patch-approval-lists-bucket/my-windows-override-list.yaml
  • Amazon S3 パス形式の URL:

    s3://my-patch-approval-lists-bucket/my-windows-override-list.yaml

有効な YAML コンテンツ形式

リストにパッチを指定するために使用する書式は、インスタンスのオペレーティングシステムによって異なります。ただし、一般的な形式は次のとおりです。

patches: - id: '{patch-d}' title: '{patch-title}' {additional-fields}:{values}

YAML ファイルにフィールドを追加することはできますが、パッチオペレーション中は無視されます。

さらに、S3 バケットのリストを追加または更新する前に、YAML ファイルのフォーマットが有効であることを確認することをお勧めします。YAML 形式の詳細については、yaml.org を参照してください。検証ツールのオプションについては、ウェブで「yaml 形式の検証」を検索します。

  • Microsoft Windows

    id

    id フィールドは必須です。Microsoft Knowledge Base ID (KB2736693 など) および Microsoft Security Bulletin ID (MS17-023 など) を使用してパッチを指定する場合に使用します。

    Windows 用のパッチリストで提供する他のフィールドはオプションであり、情報提供のみを目的としています。特定のパッチに関する詳細情報を提供するために、titleclassificationseverity などの追加フィールドを使用することができます。

  • Linux

    id

    id フィールドは必須です。これにより、パッケージ名とアーキテクチャーを使用してパッチを指定します。例: 'dhclient.x86_64'。ID にワイルドカードを使用すると、複数のパッケージを指定できます。例: 'dhcp*' および 'dhcp*1.*'

    タイトル

    title フィールドはオプションですが、Linux システムでは追加のフィルタリング機能を提供します。title を使用する場合は、次のいずれかの形式でパッケージのバージョン情報を含める必要があります。

    YUM/SUSE Linux Enterprise Server (SLES):

    {name}.{architecture}:{epoch}:{version}-{release}

    APT

    {name}.{architecture}:{version}

    Linux のパッチタイトルでは、任意の位置に 1 つ以上のワイルドカードを使用して一致するパッケージの数を拡張することができます。例: '*32:9.8.2-0.*.rc1.57.amzn1'

    例:

    • apt パッケージのバージョン 1.2.25 が現在インスタンスにインストールされていますが、バージョン 1.2.27 が利用できるようになりました。

    • apt.amd64 バージョン 1.2.27 をパッチリストに追加します。これは apt utils.amd64 バージョン 1.2.27 に依存しますが、apt-utils.amd64 バージョン 1.2.25 がリストで指定されています。

    この場合、apt バージョン 1.2.27 のインストールはブロックされ、「Failed-NonCompliant」として報告されます。

その他のフィールド

Linux 用のパッチリストで提供する他のフィールドはオプションであり、情報提供のみを目的としています。特定のパッチに関する詳細情報を提供するために、classificationseverity などの追加フィールドを使用することができます。

サンプルパッチリスト

  • Windows

    patches: - id: 'KB4284819' title: '2018-06 Cumulative Update for Windows Server 2016 (1709) for x64-based Systems (KB4284819)' - id: 'KB4284833' - id: 'KB4284835' title: '2018-06 Cumulative Update for Windows Server 2016 (1803) for x64-based Systems (KB4284835)' - id: 'KB4284880' - id: 'KB4338814'
  • APT

    patches: - id: 'apparmor.amd64' title: '2.10.95-0ubuntu2.9' - id: 'cryptsetup.amd64' title: '*2:1.6.6-5ubuntu2.1' - id: 'cryptsetup-bin.*' title: '*2:1.6.6-5ubuntu2.1' - id: 'apt.amd64' title: '*1.2.27' - id: 'apt-utils.amd64' title: '*1.2.25'
  • Amazon Linux

    patches: - id: 'kernel.x86_64' - id: 'bind*.x86_64' title: '32:9.8.2-0.62.rc1.57.amzn1' - id: 'glibc*' - id: 'dhclient*' title: '*12:4.1.1-53.P1.28.amzn1' - id: 'dhcp*' title: '*10:3.1.1-50.P1.26.amzn1'
  • Red Hat Enterprise Linux (RHEL)

    patches: - id: 'NetworkManager.x86_64' title: '*1:1.10.2-14.el7_5' - id: 'NetworkManager-*.x86_64' title: '*1:1.10.2-14.el7_5' - id: 'audit.x86_64' title: '*0:2.8.1-3.el7' - id: 'dhclient.x86_64' title: '*.el7_5.1' - id: 'dhcp*.x86_64' title: '*12:5.2.5-68.el7'
  • SUSE Linux Enterprise Server (SLES)

    patches: - id: 'amazon-ssm-agent.x86_64' - id: 'binutils' title: '*0:2.26.1-9.12.1' - id: 'glibc*.x86_64' title: '*2.19*' - id: 'dhcp*' title: '0:4.3.3-9.1' - id: 'lib*'

パラメータ名: Snapshot ID

使用: オプション。

Snapshot ID は、Patch Manager で使用する一意の ID (GUID) です。この ID により、1 回の操作でインスタンスのセットにパッチを適用した場合に、各インスタンスの承認済みパッチのセットが完全に同じであることを確認します。このパラメータは省略可能ですが、次の表に示すように メンテナンスウィンドウ で [AWS-RunPatchBaseline] を実行しているかどうかに応じて使用され、推奨されるベストプラクティスが異なります。

AWS-RunPatchBaseline のベストプラクティス

モード ベストプラクティス 詳細
AWS-RunPatchBaseline を メンテナンスウィンドウ 内で実行 スナップショット ID を指定しません。代わりに Patch Manager から ID が提供されます。

メンテナンスウィンドウ を使用して [AWS-RunPatchBaseline] を実行する場合は、独自に生成したスナップショット ID を指定しません。このシナリオでは、Systems Manager から メンテナンスウィンドウ 実行 ID に基づく GUID 値が提供されます。これにより、その メンテナンスウィンドウ では、[AWS-RunPatchBaseline] のすべての呼び出しで正しい ID が使用されます。

このシナリオで値を指定しないと、パッチベースラインのスナップショットは 24 時間以内に有効期限が切れる場合があります。スナップショットの有効期限が切れると、同じ ID を指定しても、別のスナップショットが生成されます。

AWS-RunPatchBaseline を メンテナンスウィンドウ 外で実行 スナップショット ID のカスタム GUID 値を生成および指定します。¹

メンテナンスウィンドウ を使用しないで [AWS-RunPatchBaseline] を実行する場合は、パッチベースラインごとに一意のスナップショット ID を生成し指定することをお勧めします (特に、同一のオペレーションで [AWS-RunPatchBaseline] ドキュメントを複数のインスタンスで実行する場合)。このシナリオで ID を指定しないと、コマンドの送信先のインスタンスごとに異なるスナップショット ID が Systems Manager で生成されます。これにより、インスタンス間で異なるパッチセットが指定される場合があります。

たとえば、Run Command 経由で [AWS-RunPatchBaseline] ドキュメントを直接実行し、50 個のインスタンスのグループをターゲットにしているとします。カスタムスナップショット ID を指定すると、1 つのベースラインスナップショットが作成され、これがすべてのインスタンスの評価とパッチ適用に使用されるため、すべてのインスタンスの状態が一致します。

¹ スナップショット ID パラメータの値を生成するには、GUID を生成できる任意のツールを使用できます。たとえば、PowerShell では、New-Guid cmdlet を使用して 12345699-9405-4f69-bc5e-9315aEXAMPLE という形式の GUID を生成できます。

このページの内容: