使用基准覆盖参数
您可以在运行时使用 Patch Manager ( Amazon Systems Manager 的一个功能)中的基准覆盖功能来定义修补首选项。通过指定包含一个带有补丁基准列表的 JSON 对象的 Amazon Simple Storage Service (Amazon S3) 存储桶来实施。该修补操作使用与主机操作系统匹配的 JSON 对象中提供的基准,而不是应用默认补丁基准中的规则。
重要
BaselineOverride
文件名不能包含以下字符:反引号 (`)、单引号 (')、双引号 (") 和美元符号 ($)。
除非补丁操作使用补丁策略,否则使用 BaselineOverride
参数不会覆盖参数中提供的基准的补丁合规性。输出结果记录在来自 Run Command ( Amazon Systems Manager 的一个功能)的标准输出日志中。结果仅打印标记为 NON_COMPLIANT
的软件包。这意味着软件包被标记为 Missing
、 Failed
、 InstalledRejected
或者 InstalledPendingReboot
。
但是,当补丁操作使用补丁策略时,系统会传递关联的 S3 存储桶中的覆盖参数,并更新托管式节点的合规性值。有关补丁策略的更多信息,请参阅 Quick Setup 中的补丁策略配置。
使用快照 ID 的补丁基准覆盖,或者安装覆盖列表参数
在两种情况下,补丁基准覆盖具有值得注意的行为。
同时使用基准覆盖和快照 ID
快照 ID 可确保特定修补命令中的所有托管式节点都应用相同的内容。例如,如果您一次修补 1000 个节点,则补丁相同。
当同时使用快照 ID 和补丁基准覆盖时,快照 ID 优先于补丁基准覆盖。仍将使用基准覆盖规则,但只会对其进行评估一次。在前面的示例中,1000 个托管式节点中的补丁仍始终相同。如果在修补操作的中程,您将引用的 S3 存储桶中的 JSON 文件更改为不同的内容,应用的补丁仍将保持不变。这是因为提供了快照 ID。
同时使用基准覆盖和安装覆盖列表
您不能同时使用这两个参数。如果提供了两个参数,则修补文档将失败,并且不会在托管式节点上执行任何扫描或安装。
代码示例
以下 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": [] } ]