使用 AWS Config 监控 EC2 实例密钥对 - AWS Prescriptive Guidance

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

使用 AWS Config 监控 EC2 实例密钥对

环境:生产

技术:安全性、标识性、合规性

Amazon Web Services:Amazon SNS、AWS Config、AWS Lambda

Summary

在 Amazon Web Services (AWS) 云上启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例时,最佳实践是创建或使用现有密钥对来连接到该实例。密钥对由存储在实例中的公钥和提供给用户的私钥组成,允许通过 Secure Shell (SSH) 安全访问实例并避免使用密码。但是,用户有时可能会在不附加密钥对的情况下无意中启动实例。由于密钥对只能在实例启动期间分配,因此快速识别并标记未启动的任何没有密钥对的实例都不合规非常重要。当在要求使用密钥对进行实例访问的帐户或环境中工作时,这尤其有用。

此模式介绍如何在 AWS Config 中创建自定义规则以监控 EC2 实例密钥对。当实例被确定为不合规时,将使用通过亚马逊事件启动的亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 通知发送警报。 EventBridge

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • 为要监控的 Amazon Web Services Region 启用 AWS Config,并配置为记录所有 AWS 资源

限制

  • 此解决方案是特定于区域的。所有资源均应在同一 Amazon Web Services Region 中创建。

架构

目标技术堆栈

  • AWS Config

  • Amazon EventBridge

  • AWS Lambda

  • Amazon SNS

目标架构

  1. AWS Config 启动规则。

  2. 该规则调用 Lambda 函数来评估 EC2 实例的合规性。

  3. Lambda 函数将更新的合规性状态发送到 AWS Config。

  4. AWS Config 向发送事件 EventBridge。

  5. EventBridge 向 SNS 主题发布合规性变更通知。

  6. Amazon SNS 通过电子邮件发送警报。

自动化和扩展

该解决方案可以监控一个区域内任意数量的 EC2 实例。

工具

工具

  • AWS Config - AWS Config 是一项可让您评测、审计和评价 AWS 资源配置的服务。AWS Config 可以持续监控和记录您的 AWS 资源配置,并让您能依据配置需求自动评估记录的配置。

  • Ama zon EventBridge — Amazon EventBridge 是一项无服务器事件总线服务,用于将您的应用程序与来自各种来源的数据连接起来。

  • AWS Lambda – AWS Lambda 是一种无服务器计算服务,支持在不预置或管理服务器的情况下运行代码、创建工作负载感知型集群扩展逻辑、维护事件集成或管理运行时。

  • 亚马逊 SNS — 亚马逊简单通知服务 (Amazon SNS) Simple Notification 是一项完全托管的消息服务,用于 (A2A) application-to-application 和 (A2P) 通信。 application-to-person

代码

Lambda 函数的代码已附加。 

操作说明

任务描述所需技能
为 Lambda 创建 AWS Identity and Access Management(IAM)角色。

在 Amazon Web Services Management Console上,选择 IAM,然后创建角色,使用 Lambda 作为可信实体并添加 AmazonEventBridgeFullAccessAWSConfigRulesExecutionRole权限。有关更多信息,请参阅 AWS 文档

DevOps
创建并部署 Lambda 函数。
  1. 在 Lambda 控制台上,使用 Author 从头开始创建一个函数,将 Python 3.6 作为运行时系统和之前创建的 IAM 角色。记下 Amazon 资源名称(ARN)。

  2. 代码选项卡上,选择 lambda_function.py,然后粘贴附加到此模式的代码。 

  3. 要保存更改,请选择部署。 

DevOps
任务描述所需技能
添加自定义 AWS Config 规则。

在 AWS Config 控制台上,使用以下设置添加自定义规则:

  • ARN – 之前创建的 Lambda 函数的 ARN

  • 触发器类型 – 配置变更

  • 变更范围 – 资源

  • 资源类型 – Amazon EC2 实例

有关更多信息,请参阅 AWS 文档

DevOps
任务描述所需技能
创建 SNS 主题和订阅。

在 Amazon SNS 控制台上,使用标准作为类型创建主题,然后使用电子邮件作为协议创建订阅。

收到确认电子邮件时,请选择链接以确认订阅。

有关更多信息,请参阅 AWS 文档

DevOps
创建用于启动 Amazon SNS 通知的 EventBridge 规则。

在 EventBridge 控制台上,使用以下设置创建规则:

  • 服务名称 – AWS Config

  • 事件类型 – 配置规则合规性变更

  • 消息类型-特定的消息类型, ComplianceChangeNotification

  • 特定规则名称 – 您之前创建的 AWS Config 规则的名称

  • Target – SNS 主题,您之前创建的主题

有关更多信息,请参阅 AWS 文档

DevOps
任务描述所需技能
创建 EC2 实例。

创建两个任意类型的 EC2 实例并附加一个密钥对,然后创建一个不带密钥对的 EC2 实例。

DevOps
验证规则。
  1. 在 AWS Config 控制台的 规则 页面上,选择您的规则。

  2. 要查看合规和不合规的 EC2 实例,请将范围中的资源更改为全部。验证两个实例是否被列为合规,一个实例是否被列为不合规。 

  3. 等待收到有关 EC2 实例合规性状态的 Amazon SNS 电子邮件通知。 

DevOps

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip