

AWS Systems Manager Incident Manager 不再向新客户开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [AWS Systems Manager Incident Manager 可用性变更](https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-manager-availability-change.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Incident Manager 教程
<a name="tutorials"></a>

这些 AWS Systems Manager 事件管理器教程可帮助您构建更强大的事件管理系统。这些教程涵盖了在事件或支持事件响应期间发生的常见活动。

**Topics**
+ [教程：将 Systems Manager 自动化运行手册与事件管理器一起使用](tutorials-runbooks.md)
+ [教程：在事件管理器中管理安全事件](tutorials-security.md)

# 教程：将 Systems Manager 自动化运行手册与事件管理器一起使用
<a name="tutorials-runbooks"></a>

您可以使用[AWS Systems Manager 自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html)运行手册来简化 AWS 服务的常见维护、部署和修复任务。在本教程中，您将创建一个自定义运行手册，以便在 Incident Manager 中自动执行事件响应。本教程的场景涉及分配给 Amazon EC2 指标的亚马逊 CloudWatch 警报。当实例进入触发警报的状态时，Incident Manager 会自动执行以下任务：

1. 在 Incident Manager 中创建事件。

1. 启动尝试修复问题的运行手册。

1. 将运行手册结果发布到 Incident Manager 中的事件详细信息页面。

本教程中描述的过程也可以用于 Amazon EventBridge 事件和其他类型的 AWS 资源。通过自动对警报和事件进行修复响应，您可以减少事件对组织及其资源的影响。

本教程介绍如何编辑为事件管理器响应计划分配给 Amazon EC2 实例的 CloudWatch 警报。如果您没有配置警报、实例或响应计划，我们建议您在开始之前配置这些资源。有关更多信息，请参阅以下主题：
+ [使用亚马逊* CloudWatch 用户指南中的亚马逊 CloudWatch *警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)
+ [亚马逊 EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Instances.html) *用户指南中的亚马逊 EC2* 实例
+ [亚马逊 EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Instances.html) *用户指南中的亚马逊 EC2* 实例
+ [在事件管理器中创建和配置响应计划](response-plans.md)

**重要**  
创建 AWS 资源和使用运行手册自动化步骤将产生成本。有关更多信息，请参阅[AWS 定价](https://aws.amazon.com/pricing)。

**Topics**
+ [任务 1：创建运行手册](#tutorials-runbook-create)
+ [任务 2：创建 IAM 角色](#tutorials-runbook-IAM-role)
+ [任务 3：将运行手册与您的响应计划关联起来](#tutorials-runbook-response-plan)
+ [任务 4：为响应计划分配 CloudWatch 警报](#tutorials-runbook-alarm)
+ [任务 5：验证结果](#tutorials-runbook-verify)

## 任务 1：创建运行手册
<a name="tutorials-runbook-create"></a>

使用以下步骤在 Systems Manager 控制台中创建运行手册。当从 Incident Manager 事件中调用时，运行手册会重新启动 Amazon EC2 实例，并使用有关运行手册执行的信息更新事件。在开始之前，请确认您拥有创建运行手册的权限。有关更多信息，请参阅《AWS Systems Manager 用户指南》**中的[设置自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-setup.html)。

**重要**  
查看以下有关创建本教程运行手册的重要详细信息：  
该运行手册适用于由 CloudWatch 警报源创建的事件。如果您将该运行手册用于其他类型的事件，例如手动创建的事件，则无法找到第一个运行手册步骤中的时间轴事件，系统会返回错误信息。
运行手册要求 CloudWatch 警报包含一个名`InstanceId`为的维度。Amazon EC2 实例指标的警报具有该维度。如果您将此运行手册与其他指标（或其他事件源，例如 EventBridge）一起使用，则必须更改`JsonDecode2`步骤以匹配在您的场景中捕获的数据。
运行手册会尝试通过重启 Amazon EC2 实例来修复触发警报的问题。对于真实事件，您可能不想重启实例。使用您希望系统采取的特定修复措施更新运行手册。

有关创建运行手册的更多信息，请参阅《AWS Systems Manager 用户指南》**中的[使用运行手册](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-documents.html)。

**要创建运行手册**

1. 打开 AWS Systems Manager 控制台，网址为[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)。

1. 在导航窗格中，选择**文档**。

1. 选择**自动化**。

1. 对于**名称**，为运行手册输入一个描述性名称，例如 **IncidentResponseRunbook**。

1. 选择**编辑器**选项卡，然后选择**编辑**。

1. 将以下内容粘贴到编辑器中：

   ```
   description: This runbook attempts to restart an Amazon EC2 instance that caused an incident.
   schemaVersion: '0.3'
   parameters:
     IncidentRecordArn:
       type: String
       description: The incident
   mainSteps:
     - name: ListTimelineEvents
       action: 'aws:executeAwsApi'
       outputs:
         - Selector: '$.eventSummaries[0].eventId'
           Name: eventId
           Type: String
       inputs:
         Service: ssm-incidents
         Api: ListTimelineEvents
         incidentRecordArn: '{{IncidentRecordArn}}'
         filters:
           - key: eventType
             condition:
               equals:
                 stringValues:
                   - SSM Incident Trigger
       description: This step retrieves the ID of the first timeline event with the CloudWatch alarm details.
     - name: GetTimelineEvent
       action: 'aws:executeAwsApi'
       inputs:
         Service: ssm-incidents
         Api: GetTimelineEvent
         incidentRecordArn: '{{IncidentRecordArn}}'
         eventId: '{{ListTimelineEvents.eventId}}'
       outputs:
         - Name: eventData
           Selector: $.event.eventData
           Type: String
       description: This step retrieves the timeline event itself.
     - name: JsonDecode
       action: 'aws:executeScript'
       inputs:
         Runtime: python3.8
         Handler: script_handler
         Script: |-
           import json
   
           def script_handler(events, context):
             data = json.loads(events["eventData"])
             return data
         InputPayload:
           eventData: '{{GetTimelineEvent.eventData}}'
       outputs:
         - Name: rawData
           Selector: $.Payload.rawData
           Type: String
       description: This step parses the timeline event data.
     - name: JsonDecode2
       action: 'aws:executeScript'
       inputs:
         Runtime: python3.8
         Handler: script_handler
         Script: |-
           import json
   
           def script_handler(events, context):
             data = json.loads(events["rawData"])
             return data
         InputPayload:
           rawData: '{{JsonDecode.rawData}}'
       outputs:
         - Name: InstanceId
           Selector: '$.Payload.detail.configuration.metrics[0].metricStat.metric.dimensions.InstanceId'
           Type: String
       description: This step parses the CloudWatch event data.
     - name: RestartInstance
       action: 'aws:executeAutomation'
       inputs:
         DocumentName: AWS-RestartEC2Instance
         DocumentVersion: $DEFAULT
         RuntimeParameters:
           InstanceId: '{{JsonDecode2.InstanceId}}'
       description: This step restarts the Amazon EC2 instance
   ```

1. 选择**创建自动化**。

## 任务 2：创建 IAM 角色
<a name="tutorials-runbook-IAM-role"></a>

使用以下教程创建一个 AWS Identity and Access Management (IAM) 角色，该角色向事件管理员授予启动响应计划中指定的 Runbook 的权限。本教程中的运行手册会重新启动 Amazon EC2 实例。当您将运行手册连接到您的响应计划时，您将在下一个任务中指定该 IAM 角色。

**创建一个 IAM 角色，从响应计划启动运行手册**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

1. 确保在**AWS 受信任实体的类型**下选择了**服务**。

1. 在**用例**下的**其他 AWS 服务的用案**字段中，输入 **Incident Manager**。

1. 选择 **Incident Manager**，然后选择**下一步**。

1. 在**添加权限**页面上，选择**创建策略**。权限编辑器将在新的浏览器窗口或选项卡中打开。

1. 在编辑器中，选择 **JSON** 选项卡。

1. 将以下权限策略复制并粘贴到 JSON 编辑器中。将 *account\$1ID* 替换为您的 AWS 账户 ID。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:ssm:*:111122223333:document/IncidentResponseRunbook",
                   "arn:aws:ssm:*::document/AWS-RestartEC2Instance",
                   "arn:aws:ssm:*:111122223333:automation-execution/*"
               ],
               "Action": "ssm:StartAutomationExecution"
           },
           {
               "Effect": "Allow",
               "Resource": "arn:aws:ssm:*:*:automation-execution/*",
               "Action": "ssm:GetAutomationExecution"
           },
           {
               "Effect": "Allow",
               "Resource": "arn:aws:ssm-incidents:*:*:*",
               "Action": "ssm-incidents:*"
           },
           {
               "Effect": "Allow",
               "Resource": "arn:aws:iam::*:role/AWS-SystemsManager-AutomationExecutionRole",
               "Action": "sts:AssumeRole"
           },
           {
               "Effect": "Allow",
               "Resource": "*",
               "Action": [
                   "ec2:StopInstances",
                   "ec2:DescribeInstanceStatus",
                   "ec2:StartInstances"
               ]
           }
       ]
   }
   ```

------

1. 选择**下一步：标签**。

1. （可选）如果需要，在您的策略中添加标签。

1. 选择**下一步：查看**。

1. 在**名称**字段中，输入一个可以帮助您识别本教程使用的角色的名称。

1. （可选）在**描述**字段中，输入描述。

1. 选择**创建策略**。

1. 返回您正在创建的角色的浏览器窗口或选项卡。显示**添加权限**页面。

1. 选择刷新按钮（位于**创建策略**按钮旁边），然后在筛选框中输入您创建的权限策略的名称。

1. 选择您创建的权限策略，然后选择**下一步**。

1. 在**名称、查看和创建**页面的**角色名称**中，输入一个有助于您识别本教程使用的角色的名称。

1. （可选）在**描述**字段中，输入描述。

1. 查看角色详细信息，必要时添加标签，然后选择**创建角色**。

## 任务 3：将运行手册与您的响应计划关联起来
<a name="tutorials-runbook-response-plan"></a>

通过将运行手册连接到您的 Incident Manager 响应计划，可以确保一致、可重复和及时的缓解流程。运行手册还是解决者决定下一步行动的起点。

**要将运行手册分配给响应计划**

1. 打开 [Incident Manager 控制台](https://console.aws.amazon.com/systems-manager/incidents/home)。

1. 选择**响应计划**。

1. 对于**响应计划**，选择现有的响应计划并选择**编辑**。如果您没有现有的响应计划，请选择**创建响应计划**来创建新计划。

   填写以下字段：

   1. 在**运行手册**部分，选择**选择现有运行手册**。

   1. 对于**所有者**，确认已选择**我拥有**。

   1. 对于**运行手册**，选择您在 [任务 1：创建运行手册](#tutorials-runbook-create) 中创建的运行手册。

   1. 对于**版本**，选择**在执行时默认**。

   1. 在**输入**部分中，为**IncidentRecordArn**参数选择**事件 ARN**。

   1. 在**执行权限**部分，选择您在 [任务 2：创建 IAM 角色](#tutorials-runbook-IAM-role) 中创建的 IAM 角色。

1. 保存更改。

## 任务 4：为响应计划分配 CloudWatch 警报
<a name="tutorials-runbook-alarm"></a>

使用以下步骤将 Amazon EC2 实例的 CloudWatch 警报分配给您的响应计划。

**为您的响应计划分配 CloudWatch 警报**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中的**警报**下，选择**所有警报**。

1. 选择适用于您要连接到响应计划的 Amazon EC2 实例的警报。

1. 选择**操作**，然后选择**编辑**。验证该指标是否有一个名为 `InstanceId` 的维度。

1. 选择**下一步**。

1. 对于**配置操作向导**，选择**添加 Systems Manager 操作**。

1. 选择**创建事件**。

1. 选择您在 [任务 3：将运行手册与您的响应计划关联起来](#tutorials-runbook-response-plan) 中创建的响应计划。

1. 选择**更新警报**。

## 任务 5：验证结果
<a name="tutorials-runbook-verify"></a>

要验证 CloudWatch 警报是否创建了事件，然后处理了响应计划中指定的运行手册，您必须触发警报。触发警报且运行手册处理完毕后，您可以使用以下步骤验证运行手册的结果。有关触发警报的信息，请参阅《*AWS CLI 命令参考*》[set-alarm-state](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/set-alarm-state.html)中的。

1. 打开 [Incident Manager 控制台](https://console.aws.amazon.com/systems-manager/incidents/home)。

1. 选择 CloudWatch 警报造成的事件。

1. 选择**运行手册**选项卡。

1. 在**运行手册步骤**部分中查看在您的 Amazon EC2 实例上执行的操作。

   下图演示了如何在控制台中报告您在本教程中创建的 runbook 所执行的步骤。每个步骤都列出了时间戳和状态消息。  
![\[自动化运行手册中的步骤通过时间戳和状态报告（例如 “成功”）进行报告。\]](http://docs.aws.amazon.com/zh_cn/incident-manager/latest/userguide/images/tutorial-runbooks-1.png)

   要查看 CloudWatch 警报中的所有详细信息，请展开 **JsonDecode2** 步骤，然后展开 O **utput**。

**重要**  
您必须清理在本教程中实施的所有不想保留的资源更改。这包括对事件管理器资源（例如资源计划和事件）的更改、 CloudWatch 警报的更改以及您为本教程创建的 IAM 角色。

# 教程：在事件管理器中管理安全事件
<a name="tutorials-security"></a>

您可以同时使用 AWS Security Hub CSPM Amazon EventBridge 和 Incident Manager 来识别和管理 AWS 托管应用程序中的安全事件。本教程将引导你配置一条 EventBridge 规则，该规则基于 Security Hub CSPM 自动发送的调查结果来创建事件。

**注意**  
本教程使用 S EventBridge ecurity Hub CSPM。您可能会因使用这些服务而产生费用。

**先决条件**
+ 设置 Security Hub CSPM。有关更多信息，请参阅[设置 AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-settingup.html)。
+ 在 Security Hub CSPM 中创建或更新调查结果。有关更多信息，请参阅[AWS Security Hub CSPM中的调查发现](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings.html)。
+ 配置响应计划，以便 Incident Manager 在创建安全事件时将其用作模板。有关更多信息，请参阅 [在 Incident Manager 中为事件做准备](incident-response.md)。

在本教程中，我们使用预定义的模式来创建 EventBridge 规则。要使用自定义模式创建规则，请参阅 AWS Security Hub CSPM 用户指南中的[使用自定义模式创建规则](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-cwe-all-findings.html#securityhub-cwe-all-findings-custom-pattern)。

**创建 EventBridge 规则**

1. 打开 Amazon EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)。

1. 在导航窗格中，选择**规则**。

1. 选择**创建规则**。

1. 为规则输入**名称**和**描述**。

   规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

1. 对于**事件总线**，选择**默认**。

1. 对于**规则类型**，选择**具有事件模式的规则**。

1. 选择**下一步**。

1. 对于**事件来源**，选择**AWS 事件或 EventBridge合作伙伴事件**。

1. 对于**事件模式**，选择**事件模式表**。

1. 对于**事件源**，选择**AWS 服务**。

1. 要获得**AWS 服务**，请选择 Sec **urity Hub CSPM**。

1. 对于**事件类型**，选择 Sec **urity Hub CSPM 调查结果-** 已导入。

1. 默认情况下， EventBridge 配置不带任何筛选值的事件模式。对于每个属性，都*attribute name*选择 “**任**意” 选项。更新这些筛选器，以便根据对您的环境影响最大的安全调查发现创建事件。

1. 单击**下一步**。

1. 对于**目标类型**，选择**AWS 服务**。

1. 对于**选择目标**，选择 **Incident Manager 响应计划**。

1. 对于**响应计划**，选择一个响应计划，作为已创建事件的模板。

1. EventBridge 可以创建规则运行所需的 IAM 角色。
   + 要自动创建 IAM 角色，请选择**为此特定资源创建新角色**。
   + 要使用账户中已存在的 IAM 角色，请选择 **使用现有角色**。

1. （可选）为规则输入一个或多个标签。

1. 选择**下一步**。

1. 查看规则详细信息并选择**创建规则**。

既然您已经创建了此 EventBridge 规则，那么与您定义的属性值相匹配的安全发现将在事件管理器中创建事件。您可以对这些事件进行分类、管理、监控并创建事件后分析。