【问题标题】:EC2 Systems Manager - Install security patchesEC2 Systems Manager - 安装安全补丁
【发布时间】:2017-08-08 23:18:53
【问题描述】:

我正在尝试使用带有维护窗口的 EC2 Systems Manager 来应用安全补丁。我找不到制作这个的文件。有没有人已经做过这个并且可以给我一个线索?

我知道 AWS 为 Windows 提供 Patch Manager

【问题讨论】:

    标签: amazon-web-services amazon-ec2 systemmanagement


    【解决方案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 将命令发送到您的实例,但如果您想自动化它,维护窗口可以提供帮助。

    维护时段定义:

    • 哪些实例是维护时段中任务的有效目标
    • 应针对哪些目标执行哪些任务
    • 何时应执行这些任务

    使用维护窗口将实例注册为目标是可选的,在下面的示例中,我选择不需要目标注册。

    创建维护时段

    就本示例而言,让我们创建一个维护时段,该时段在每周二下午 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)此处描述: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 `
    

    其他有趣的功能

    现在一切都已配置完毕,您可以查看维护时段执行的历史记录以及正在修补的实例的补丁合规性状态。

    维护窗口执行

    您可以使用以下命令深入了解维护时段的执行历史记录:

    AWS CLI

    AWS PowerShell

    补丁合规信息

    一旦您的实例被修补,您就可以获得它们的补丁合规性信息。

    AWS CLI

    AWS PowerShell

    我希望这有助于回答您的问题,如果没有,请告诉我。

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多