我正在尝试使用EC2 Systems Manager和维护窗口来应用安全补丁。我找不到制作此文件的文件。有没有人已经提出这个并且可以为我提供线索?
我知道AWS为Windows提供 Patch Manager 。
答案 0 :(得分:1)
您可以在此处找到有关在EC2 Systems Manager中进行修补的官方文档:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/systems-manager-patch.html
还有一个演练,其中介绍了可在此处开始使用的完整步骤:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/sysman-patch-walkthrough.html
我已使用AWS CLI和AWS Toolkit for PowerShell添加了与您的问题相关的一些具体示例。当然,您也可以在AWS控制台中执行所有这些操作。
要控制应安装的修补程序,请使用修补程序基准。修补程序基准包含一组规则,这些规则定义应批准哪些修补程序进行部署以及何时应批准这些修补程序以及一组可选的明确批准和拒绝的修补程序。
在您的情况下,要仅应用安全补丁,您可以创建如下补丁基准:
AWS CLI
aws ssm create-patch-baseline --name "Only-Security-Patches"
--approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=CLASSIFICATION,Values=SecurityUpdates}]},ApproveAfterDays=3}]"
--description "Security updates for all versions of Windows"
AWS PowerShell
$rule = New-Object Amazon.SimpleSystemsManagement.Model.PatchRule
$rule.ApproveAfterDays = 3
$ruleFilters = New-Object Amazon.SimpleSystemsManagement.Model.PatchFilterGroup
$classificationFilter = New-Object Amazon.SimpleSystemsManagement.Model.PatchFilter
$classificationFilter.Key = "CLASSIFICATION"
$classificationFilter.Values.Add( "SecurityUpdates" )
$ruleFilters.PatchFilters.Add($classificationFilter)
$rule.PatchFilterGroup = $ruleFilters
New-SSMPatchBaseline
-Name "Only-Security-Patches" `
-Description "Security updates for all versions of Windows" `
-ApprovalRules_PatchRule $rule
您可以通过使用Patch Group
标记标记实例来控制要用于特定EC2实例的修补程序基准,并将标记的值设置为您选择的修补程序组的名称。之后,您可以将修补程序组注册到修补程序基准。为了便于此示例,您还可以将新的修补程序基准定义为默认修补程序基准,以用于未使用Patch Group
标记标记的所有实例:
AWS CLI
aws ssm register-default-patch-baseline --baseline-id <the id of the patch baseline created above>
* AWS PowerShell
Register-SSMDefaultPatchBaseline-BaselineId <the id of the patch baseline created above>
创建和配置所需的修补程序基准后,可以使用AWS-ApplyPatchBaseline
命令文档修补实例。如果您只想测试修补,可以使用Run Command将命令发送到您的实例,但如果您想自动化它,维护Windows可以提供帮助。
维护窗口定义:
使用维护窗口将实例注册为目标是可选的,在下面的示例中,我选择不要求目标注册。
出于本示例的目的,让我们创建一个维护窗口,每周二下午4点运行,持续时间为4小时:
AWS CLI
aws ssm create-maintenance-window
--name "My-Tuesday-Maintenance-Window"
--schedule "cron(0 16 ? * TUE *)"
--duration 4
--cutoff 1
--allow-unassociated-targets
* AWS PowerShell
New-SSMMaintenanceWindow `
-Name "My-Tuesday-Maintenance-Window" `
-Schedule "cron(0 16 ? * TUE *)" `
-Duration 4 `
-Cutoff 1 `
-AllowUnassociatedTarget $true `
创建维护窗口后,您现在可以注册要在其中运行的任务,在这种情况下,我们要运行AWS-ApplyPatchBaseline
命令。
请注意,以下命令假设您已执行了要用于定义IAM角色的步骤(我在此处将此角色命名为 MW-Role )维护Windows如下所述:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/sysman-patch-walkthrough.html
AWS CLI
aws ssm register-task-with-maintenance-window
--window-id <the id of your maintenance window>
--targets "Key=InstanceIds,Values=<comma-separated list of instance ids>"
--task-arn "AWS-ApplyPatchBaseline"
--service-role-arn "arn:aws:iam::<your account id>:role/MW-Role"
--task-type "RUN_COMMAND"
--max-concurrency 2
--max-errors 1
--priority 1
--task-parameters '{\"Operation\":{\"Values\":[\"Install\"]}}'
AWS PowerShell
$parameters = @{}
$parameterValues = new-object Amazon.SimpleSystemsManagement.Model.MaintenanceWindowTaskParameterValueExpression
$parameterValues.Values = @("Install")
$parameters.Add("Operation", $parameterValues)
Register-SSMTaskWithMaintenanceWindow `
-WindowId <the id of your maintenance window> `
-Target @{ Key="InstanceIds";Values="<comma-separated list of instance ids>" } `
-TaskArn "AWS-ApplyPatchBaseline" `
-ServiceRoleArn "arn:aws:iam::<your account id>:role/MW-Role" `
-TaskType "RUN_COMMAND" `
-MaxConcurrency 2 `
-MaxErrors 1 `
-Priority 1 `
-TaskParameter $parameters `
现在已经配置了所有内容,您可以看到维护窗口执行的历史记录以及要修补的实例的修补程序合规性状态。
您可以使用以下命令深入查看维护Windows的执行历史记录:
AWS CLI
AWS PowerShell
修复实例后,您可以获取补丁合规信息。
AWS CLI
AWS PowerShell
我希望这有助于回答您的问题,如果没有,请告诉我。