如何使用 EventBridge 和 Amazon SNS 监控对我的 EC2 Linux 实例上设置的安全组所做的更改?

上次更新日期:2022 年 1 月 6 日

我为我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例设置了一个安全组。如何使用 Amazon EventBridge 和 Amazon Simple Notification Service (Amazon SNS) 监控对我的安全组所做的更改?

简短描述

创建 EventsBridge 规则,以便在进行 API 调用以修改安全组时触发。然后,为与您的规则匹配的事件配置 Amazon SNS 通知。

解决方法

创建并订阅 Amazon SNS 主题

1.    打开 Amazon SNS 控制台

2.    在 SNS 控制面板上,依次选择主题创建主题

3.    输入主题名称(例如,my-topic)。

4.    选择创建主题

5.    记下主题的 Amazon Resource Name (ARN)(例如,arn:aws:sns:us-east-1:123123123123:my-topic)。

6.    选择创建订阅

7.    对于主题 ARN,输入您在步骤 5 中记下的 ARN。

8.    对于协议,选择电子邮件

9.    对于端点,输入用于接收通知的电子邮件地址,然后选择创建订阅

您将收到一封用于确认订阅的电子邮件。确认订阅之后,该电子邮件地址将会在触发 SNS 主题时收到通知。

使用 EventBridge 控制台创建在事件上触发的 EventBridge 规则

1.    打开 EventBridge 控制台

2.    选择创建规则

3.    为规则输入名称。可选择输入描述

4.    在 Define pattern(定义模式)中,选择 Event pattern(事件模式)。

5.    选择 Pre-defined pattern by service(按服务分类的预定义模式)。

6.    对于 Service provider(服务提供商),选择 AWS

7.    对于 Service name(服务名称),选择 EC2

8.    对于 Event Type(事件类型),选择 AWS API Call via CloudTrail(通过 CloudTrail 进行 AWS API 调用)。

9.    选择 Specific Operation(特定操作),然后将以下 API 调用逐一复制并粘贴到文本框中。每次添加后选择 Add(添加)。这些 API 调用用于添加或移除安全组规则。

AuthorizeSecurityGroupIngress
AuthorizeSecurityGroupEgress
RevokeSecurityGroupIngress
RevokeSecurityGroupEgress

这些设置会创建以下事件模式:

{
  "source": [
    "aws.ec2"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "ec2.amazonaws.com"
    ],
    "eventName": [
      "AuthorizeSecurityGroupIngress",
      "AuthorizeSecurityGroupEgress",
      "RevokeSecurityGroupIngress",
      "RevokeSecurityGroupEgress"
    ]
  }
}

10.    在 Select targets(选择目标)中,从 Target(目标)下拉菜单列表中选择 SNS topic(SNS 主题)。

11.    对于 Topic(主题),输入您先前创建的主题。

注意:原定设置下,已在配置输入下选择匹配的事件匹配的事件会将事件的整个 JSON 输出传递至 SNS 主题。如果您不希望传递整个 JSON 输出,请选择输入转换器以筛选事件信息。使用输入转换器自定义事件文本,以创建易于读取的消息,而不是将整个 JSON 输出发送到您的目标。例如,您可以为输入路径使用以下键值对。

{"name":"$.detail.requestParameters.groupId","source":"$.detail.eventName","time":"$.time","value":"$.detail"}

输入模板中,输入您希望在消息中显示的文本和变量:

"A <source> API call was made against the security group <name> on <time> with the below details"
" <value> "

有关使用输入转换器选项的详细信息,请参阅教程:使用输入转换器自定义 EventBridge 传递给事件目标的内容

12.    选择 Create(创建)。