使用 BaselineOverride 參數 - AWS Systems Manager

使用 BaselineOverride 參數

使用 Patch Manager 中的基準覆寫功能 (AWS Systems Manager 功能),您可以在執行時間定義修補偏好設定。透過指定 Amazon Simple Storage Service (Amazon S3) 儲存貯體完成此操作,其中包含具有修補基準清單的 JSON 物件。修補操作使用符合主機作業系統之 JSON 物件中所提供的基準,而不是從預設修補基準套用規則。

注意

使用 BaselineOverride 參數不會覆寫參數中所提供之基準的修補程式合規。輸出結果記錄在 Run Command (AWS Systems Manager 功能) 的 Stdout 日誌中。結果只會列印標示為 NON_COMPLIANT 的套件。這意味著該套件會標記為 MissingFailedInstalledRejectedInstalledPendingReboot

使用修補基準覆寫 Snapshot Id 或 Install Override List 參數

在兩種情況下,修補基準覆寫具有值得注意的行為。

同時使用基準線覆寫和 Snapshot Id

Snapshot Id 可確保特定修補命令中的所有執行個體都套用相同的項目。例如,如果您一次修補 1,000 個執行個體,則修補程式將會相同。

同時使用 Snapshot Id 和修補基準覆寫時,Snapshot Id 的優先順序高於修補基準覆寫。仍會使用基準線覆寫規則,但只會評估一次。在先前的範例中,1,000 個執行個體的修補程式仍會永遠相同。如果在修補操作中間,您將參考之 S3 儲存貯體中的 JSON 檔案變更為不同的內容,則套用的修補程式仍然相同。這是因為已提供 Snapshot Id。

同時使用基準覆寫和 Install Override List

您無法同時使用這兩個參數。如果提供這兩個參數,則修補文件就會失敗,而且不會在執行個體上執行任何掃描或安裝。

程式碼範例

下列 Python 程式碼範例顯示如何產生修補基準覆寫。

import boto3 import json ssm = boto3.client('ssm') s3 = boto3.resource('s3') s3_bucket_name = 'my-baseline-override-bucket' s3_file_name = 'MyBaselineOverride.json' baseline_ids_to_export = ['pb-0000000000000000', 'pb-0000000000000001'] baseline_overrides = [] for baseline_id in baseline_ids_to_export: baseline_overrides.append(ssm.get_patch_baseline( BaselineId=baseline_id )) json_content = json.dumps(baseline_overrides, indent=4, sort_keys=True, default=str) s3.Object(bucket_name=s3_bucket_name, key=s3_file_name).put(Body=json_content)

這會產生修補基準覆寫,如以下所示。

[ { "ApprovalRules": { "PatchRules": [ { "ApproveAfterDays": 0, "ComplianceLevel": "UNSPECIFIED", "EnableNonSecurity": false, "PatchFilterGroup": { "PatchFilters": [ { "Key": "PRODUCT", "Values": [ "*" ] }, { "Key": "CLASSIFICATION", "Values": [ "*" ] }, { "Key": "SEVERITY", "Values": [ "*" ] } ] } } ] }, "ApprovedPatches": [], "ApprovedPatchesComplianceLevel": "UNSPECIFIED", "ApprovedPatchesEnableNonSecurity": false, "GlobalFilters": { "PatchFilters": [] }, "OperatingSystem": "AMAZON_LINUX_2", "RejectedPatches": [], "RejectedPatchesAction": "ALLOW_AS_DEPENDENCY", "Sources": [] }, { "ApprovalRules": { "PatchRules": [ { "ApproveUntilDate": "2021-01-06", "ComplianceLevel": "UNSPECIFIED", "EnableNonSecurity": true, "PatchFilterGroup": { "PatchFilters": [ { "Key": "PRODUCT", "Values": [ "*" ] }, { "Key": "CLASSIFICATION", "Values": [ "*" ] }, { "Key": "SEVERITY", "Values": [ "*" ] } ] } } ] }, "ApprovedPatches": [ "open-ssl*" ], "ApprovedPatchesComplianceLevel": "UNSPECIFIED", "ApprovedPatchesEnableNonSecurity": false, "GlobalFilters": { "PatchFilters": [] }, "OperatingSystem": "CENTOS", "RejectedPatches": [ "python*" ], "RejectedPatchesAction": "ALLOW_AS_DEPENDENCY", "Sources": [] } ]