AWS-RunPatchBaselineWithHooks SSM ドキュメントについて - AWS Systems Manager

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

AWS Systems Manager は、AWS Systems Manager の一機能であるパッチマネージャー用の Systems Manager ドキュメント (SSM ドキュメント) である AWS-RunPatchBaselineWithHooks をサポートしています。この SSM ドキュメントでは、セキュリティ関連および他のタイプの更新の両方について、インスタンスにパッチ適用オペレーションを実行します。

AWS-RunPatchBaselineWithHooks は、次の点で AWS-RunPatchBaseline とは異なります。

  • ラッパードキュメントAWS-RunPatchBaselineWithHooks は、AWS-RunPatchBaseline のラッパーであり、そのオペレーションの一部で AWS-RunPatchBaseline に依存しています。

  • Install オペレーションAWS-RunPatchBaselineWithHooks では、インスタンスのパッチ適用中に指定されたポイントで実行されるライフサイクルフックがサポートされます。パッチのインストールにはインスタンスの再起動が必要になる場合があるため、パッチ適用オペレーションは 2 つのイベントに分割され、合計 3 つのフックでカスタム機能をサポートします。最初のフックは Install with NoReboot オペレーションの前です。2 番目のフックは Install with NoReboot オペレーションの後です。3 番目のフックは、インスタンスの再起動後に使用できます。

  • カスタムパッチリストはサポートしませんAWS-RunPatchBaselineWithHooks では、InstallOverrideList パラメータはサポートされません。

  • SSM Agent サポートAWS-RunPatchBaselineWithHooks パッチを適用するには、SSM Agent 3.0.502 以降をインスタンスにインストールする必要があります。

パッチグループが指定されていない場合、ドキュメントを実行すると、オペレーティングシステムタイプの「デフォルト」として現在指定されているパッチベースラインが使用されます。それ以外の場合は、パッチグループに関連付けられているパッチベースラインが使用されます。パッチグループの詳細については、「パッチグループについて」を参照してください。

ドキュメント AWS-RunPatchBaselineWithHooks を使用して、オペレーティングシステムとアプリケーションの両方にパッチを適用することができます。(Windows では、アプリケーションのサポートは、Microsoft がリリースしたアプリケーションの更新に制限されています)。

このドキュメントでは、Linux、macOS、および Windows Server インスタンスをサポートしています。ドキュメントは、プラットフォーム別に適切なアクションを実行します。

Linux

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

  • Amazon Linux、Amazon Linux 2、CentOS、Oracle Linux、および RHEL 7 インスタンスが YUM を使用しています。YUM オペレーションの場合、Patch Manager には Python 2.6 以降が必要です。

  • RHEL 8 インスタンスでは DNF が使用されています。DNF オペレーションの場合、Patch Manager には Python 2 または Python 3 が必要です。(どちらのバージョンも RHEL 8 にはデフォルトでインストールされていません。どちらか一方を手動でインストールする必要があります。)

  • Debian サーバーと Ubuntu Server インスタンスでは APT が使用されています。APT オペレーションの場合、Patch Manager には Python 3 が必要です。

  • SUSE Linux Enterprise Server インスタンスでは Zypper が使用されています。Zypper オペレーションでは、Patch Manager には Python 2.6 以降が必要です。

macOS

macOS インスタンスの場合、AWS-RunPatchBaselineWithHooks ドキュメントは、Python モジュールを呼び出します。これに伴って、インスタンスに適用するパッチベースラインのスナップショットがダウンロードされます。次に、Python サブプロセスがインスタンスで CLI を呼び出し、指定されたパッケージマネージャーのインストールおよび更新情報を取得し、各更新パッケージに適切なパッケージマネージャーを実行します。

Windows

Windows Server インスタンスの場合、AWS-RunPatchBaselineWithHooks ドキュメントは、PowerShell モジュールをダウンロードして呼び出します。これに伴って、インスタンスに適用するパッチベースラインのスナップショットがダウンロードされます。このパッチベースラインスナップショットには、Windows Server Update Services (WSUS) サーバーに対してパッチベースラインを照会することによってコンパイルされる承認済みパッチのリストが含まれています。このリストは、Windows Update API に渡され、ここで承認済みパッチのダウンロードとインストールが適切に制御されます。

各スナップショットは、 AWS アカウント 、パッチグループ、オペレーティングシステム、スナップショット ID に固有のものです。スナップショットは、署名付きの Amazon Simple Storage Service (Amazon S3) URL を介して配信されます。この URL は、スナップショットが作成されてから 24 時間後に期限切れになります。ただし、URL の有効期限が切れた後に、同じスナップショットコンテンツを他のインスタンスに適用する場合は、スナップショットを作成してから 3 日以内であれば新しい署名付き Amazon S3 URL を生成できます。これを行うには、get-deployable-patch-snapshot-for-instance コマンドを使用します。

すべての承認済み更新と該当する更新がインストールされ、必要に応じて再起動されると、パッチコンプライアンス情報がインスタンスで生成されて Patch Manager にレポートされます。

注記

RebootOption パラメータが AWS-RunPatchBaselineWithHooks ドキュメントの NoReboot で設定されている場合、パッチマネージャーの実行後にインスタンスは再起動されません。詳細については、「」を参照してくださいパラメータ名: RebootOption

パッチコンプライアンスデータの表示方法については、「パッチコンプライアンスについて」を参照してください。

AWS-RunPatchBaselineWithHooks オペレーションステップ

AWS-RunPatchBaselineWithHooks が実行されると、次の手順が実行されます。

  1. スキャン - Scan を使用した AWS-RunPatchBaseline オペレーションがインスタンスで実行され、コンプライアンスレポートが生成され、アップロードされます。

  2. ローカルパッチ状態の確認 - スクリプトを実行して、選択したオペレーションとステップ 1 の Scan 結果に基づいて実行されるステップを決定します。

    1. 選択したオペレーションが Scan の場合、そのオペレーションは完了としてマークされます。オペレーションは終了します。

    2. 選択したオペレーションが Install の場合、Patch Manager はステップ 1 の Scan 結果を評価し、次に実行するオペレーションを決定します。

      1. パッチの欠落が検出されず、保留中の再起動が必要ない場合は、オペレーションは最後のステップ (ステップ 8) に直接進みます。これには、指定したフックが含まれます。その間のステップはすべてスキップされます。

      2. パッチの欠落が検出されないが、保留中の再起動が必要で、選択した再起動オプションが NoReboot である場合、オペレーションは最後のステップ (ステップ 8) に直接進みます。これには、指定したフックが含まれます。その間のステップはすべてスキップされます。

      3. それ以外の場合、オペレーションは次のステップに進みます。

  3. パッチ適用前のフックオペレーション - 最初のライフサイクルフック用に指定した SSM ドキュメント (PreInstallHookDocName) は、インスタンスで実行されます。

  4. 再起動せずにインストール - Install を使用して NoReboot の再起動オプションを含む AWS-RunPatchBaseline オペレーションがインスタンスで実行され、コンプライアンスレポートが生成され、アップロードされます。

  5. インストール後のフックオペレーション - 2 番目のライフサイクルフック用に指定した SSM ドキュメント (PostInstallHookDocName) は、インスタンスで実行されます。

  6. 再起動の確認 - スクリプトを実行して、インスタンスに再起動が必要かどうか、および実行する手順を判断します。

    1. 選択した再起動オプションが NoReboot の場合、オペレーションは最後のステップ (ステップ 8) に直接進みます。これには、指定したフックが含まれます。その間のステップはすべてスキップされます。

    2. 選択した再起動オプションが RebootIfNeeded の場合、Patch Manager はステップ4で収集されたインベントリから保留中の再起動が必要かどうかをチェックします。

      1. 再起動が必要なパッチが見つからない場合は、インスタンスのパッチ適用オペレーションが完了し、オペレーションは最終ステップ (ステップ 8) に直接進みます。これには、指定したフックが含まれます。その間のステップはすべてスキップされます。

      2. 再起動が必要なパッチが見つかった場合は、次のステップに進みます。

  7. 再起動とレポート - 再起動オプションが RebootIfNeeded であるインストールオペレーションは、AWS-RunPatchBaseline を使用してインスタンスで実行され、コンプライアンスレポートが生成され、アップロードされます。

  8. 再起動後のフックオペレーション - 3 番目のライフサイクルフック用に指定した SSM ドキュメント (OnExitHookDocName) は、インスタンスで実行されます。

Scan オペレーションの場合、ステップ 1 が失敗すると、ドキュメントの実行プロセスは停止し、ステップは失敗として報告されますが、後続のステップは成功として報告されます。

Install オペレーションの場合、オペレーション中にいずれかの aws:runDocument ステップが失敗すると、そのようなステップは失敗として報告され、オペレーションは直接最終ステップ (ステップ 8) に進みます。これには、指定したフックが含まれます。その間のステップはすべてスキップされます。このステップは失敗として報告され、最後のステップはそのオペレーション結果のステータスを報告し、その間にあるすべてのステップは成功として報告されます。

AWS-RunPatchBaselineWithHooks 個のパラメータ

AWS-RunPatchBaselineWithHooks では 6 つのパラメータがサポートされています。

Operation パラメータは必須です。

RebootOptionPreInstallHookDocNamePostInstallHookDocName および OnExitHookDocName パラメータはオプションです。

Snapshot-ID は技術的にはオプションですが、AWS-RunPatchBaselineWithHooks をメンテナンスウィンドウ以外で実行する場合は、カスタム値を指定することをお勧めします。ドキュメントがメンテナンスウィンドウオペレーションの一部として実行されるときに、Patch Manager に値を自動的に指定させられます。

パラメータ名: Operation

使用: 必須。

オプション: Scan | Install

スキャン

Scan オプションを選択すると、システムは AWS-RunPatchBaseline ドキュメントを使用してインスタンスのパッチコンプライアンス状態を判断し、その情報をパッチマネージャーにレポートします。Scan では、更新のインストールやインスタンスの再起動は行われません。代わりに、承認済み更新でインスタンスに適用可能なものが見つからない個所を示します。

インストール

Install オプションを選択すると、AWS-RunPatchBaselineWithHooks はインスタンスに見つからない承認済み更新と適用可能な更新のインストールを試行します。Install オペレーションの一部として生成されるパッチコンプライアンス情報には、見つからない更新は示されませんが、更新のインストールが何らかの原因で失敗した場合は「失敗」状態になっている更新がレポートされることがあります。更新がインスタンスにインストールされるたびに、インスタンスが再起動され、更新がインストール済みで有効になっていることが確認されます。(例外: RebootOption パラメータが AWS-RunPatchBaselineWithHooks ドキュメントの NoReboot で設定されている場合、パッチマネージャーの実行後にインスタンスは再起動されません。詳細については、「 パラメータ名: RebootOption 」を参照してください。)

注記

Patch Manager がインスタンスを更新するに、ベースラインルールで指定されたパッチがインストールされている場合、システムが予期したとおりに再起動しない可能性があります。この可能性があるのは、パッチがユーザーによって手動でインストールされたか、Ubuntu Server の unattended-upgrades パッケージなどの別のプログラムによって自動的にインストールされた場合です。

パラメータ名: Snapshot ID

使用: オプション。

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

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

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

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

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

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

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

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

パラメータ名: RebootOption

使用: オプション。

オプション: RebootIfNeeded | NoReboot

RebootIfNeeded

RebootIfNeeded オプションを選択すると、Patch Manager が新しいパッチをインストールした場合に、INSTALLED_PENDING_REBOOT オペレーション中にステータスが Install になっているパッチを検出すると、インスタンスは再起動されます。INSTALLED_PENDING_REBOOT ステータスは、NoReboot オペレーションを最後に実行したときに Install オプションが選択されていたことを意味します。(パッチマネージャーの外部にインストールされたパッチは、ステータスが INSTALLED_PENDING_REBOOT になることはありません。)

注記

RebootIfNeeded オプションを選択した場合、パッチマネージャーはパッチに伴って再起動が必要かどうかを評価しません。再起動が必要なパッケージが見つからない場合やステータスが INSTALLED_PENDING_REBOOT になっているパッケージがある場合は、必ず再起動されます。

NoReboot

NoReboot オプションを選択すると、パッチマネージャーが Install オペレーション中にパッチをインストールした場合でも、インスタンスは再起動されません。このオプションは、パッチ適用後にインスタンスを再起動する必要がないことがわかっている場合や、パッチ適用操作の再起動によって中断されないアプリケーションまたはプロセスがインスタンスで実行されている場合に便利です。また、メンテナンスウィンドウを使用するなど、インスタンスの再起動のタイミングをより詳細に制御する場合にも役立ちます。

注記

パッチがインストールされている場合に NoReboot オプションを選択すると、ステータス InstalledPendingReboot がパッチに割り当てられます。ただし、インスタンス自体は Non-Compliant としてマークされます。再起動が発生し、Scan 操作が実行されると、インスタンスのステータスは Compliant に更新されます。

パッチのインストール追跡ファイル: パッチ (特にシステムの最後の再起動以降にインストールされたパッチ) のインストールを追跡するために、Systems Manager は、マネージドインスタンスのファイルを管理します。

重要

追跡ファイルを削除または変更しないでください。このファイルを削除または破損すると、インスタンスのパッチコンプライアンスレポートが不正確になります。ファイルを削除または破損した場合は、インスタンスを再起動し、パッチのスキャンオペレーションを実行してファイルを復元します。

この追跡ファイルは、マネージドインスタンスの以下の場所に保存されます。

  • Linux オペレーティングシステム:

    • /var/log/amazon/ssm/patch-configuration/patch-states-configuration.json

    • /var/log/amazon/ssm/patch-configuration/patch-inventory-from-last-operation.json

  • Windows Server オペレーティングシステム:

    • C:\ProgramData\Amazon\PatchBaselineOperations\State\PatchStatesConfiguration.json

    • C:\ProgramData\Amazon\PatchBaselineOperations\State\PatchInventoryFromLastOperation.json

パラメータ名: PreInstallHookDocName

使用: オプション。

デフォルト: AWS-Noop

PreInstallHookDocName パラメータに指定する値は、選択した SSM ドキュメントの名前または Amazon リソースネーム (ARN) です。AWS マネージドドキュメントの名前や、作成したか共有されたカスタム SSM ドキュメントの名前または ARN を指定できます。(別の AWS アカウント から共有されている SSM ドキュメントの場合は、aws:arn:ssm:us-east-2:123456789012:document/MySharedDocument などの完全なリソース ARN を指定する必要があります)。

指定した SSM ドキュメントは、Install オペレーションの前に実行され、インスタンスでパッチ適用が実行される前にアプリケーションのヘルスチェックを行うシェルスクリプトなど、SSM エージェントがサポートするアクションを実行します。(アクションの一覧については、「Systems Manager コマンドドキュメントプラグインリファレンス」を参照してください)。デフォルトの SSM ドキュメント名は AWS-Noop で、インスタンスに対するオペレーションは実行されません。

カスタム SSM ドキュメントの作成方法については、「SSM ドキュメントの作成」を参照してください。

パラメータ名: PostInstallHookDocName

使用: オプション。

デフォルト: AWS-Noop

PostInstallHookDocName パラメータに指定する値は、選択した SSM ドキュメントの名前または Amazon リソースネーム (ARN) です。AWS マネージドドキュメントの名前や、作成したか共有されたカスタム SSM ドキュメントの名前または ARN を指定できます。(別の AWS アカウント から共有されている SSM ドキュメントの場合は、aws:arn:ssm:us-east-2:123456789012:document/MySharedDocument などの完全なリソース ARN を指定する必要があります)。

指定した SSM ドキュメントは、Install with NoReboot オペレーション後に実行され、再起動前にサードパーティ製の更新プログラムをインストールするためのシェルスクリプトなど、SSM エージェントがサポートするアクションを実行します。(アクションの一覧については、「Systems Manager コマンドドキュメントプラグインリファレンス」を参照してください)。デフォルトの SSM ドキュメント名は AWS-Noop で、インスタンスに対するオペレーションは実行されません。

カスタム SSM ドキュメントの作成方法については、「SSM ドキュメントの作成」を参照してください。

パラメータ名: OnExitHookDocName

使用: オプション。

デフォルト: AWS-Noop

OnExitHookDocName パラメータに指定する値は、選択した SSM ドキュメントの名前または Amazon リソースネーム (ARN) です。AWS マネージドドキュメントの名前や、作成したか共有されたカスタム SSM ドキュメントの名前または ARN を指定できます。(別の AWS アカウント から共有されている SSM ドキュメントの場合は、aws:arn:ssm:us-east-2:123456789012:document/MySharedDocument などの完全なリソース ARN を指定する必要があります)。

指定した SSM ドキュメントは、インスタンスの再起動オペレーションの後に実行され、パッチ適用オペレーションの完了後にインスタンスの状態を確認するシェルスクリプトなど、SSM Agent がサポートするアクションを実行します。(アクションの一覧については、「Systems Manager コマンドドキュメントプラグインリファレンス」を参照してください)。デフォルトの SSM ドキュメント名は AWS-Noop で、インスタンスに対するオペレーションは実行されません。

カスタム SSM ドキュメントの作成方法については、「SSM ドキュメントの作成」を参照してください。