监控 IAM 根用户活动 - AWS Prescriptive Guidance

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

监控 IAM 根用户活动

由 Mostefa Brougui (AWS) 创建

代码存储库:aws-iam-root-user-活动监视器

环境:PoC 或试点

技术:安全性、标识性、合规性;管理与治理

工作负载:所有其他工作负载

AWS 服务:亚马逊 EventBridge;AWS Lambda;亚马逊 SNS;AWS Identity and Access Management

Summary

每个 Amazon Web Services (AWS) 账户都有一个根用户。作为 AWS Identity and Access Management (IAM) 的安全最佳实践,我们建议您使用根用户来完成只有根用户才能执行的任务。有关完整列表,请参阅《Amazon Web Services account 管理参考指南》中的需要根用户凭证的任务。由于根用户对您的所有 AWS 资源和账单信息具有完全访问权限,因此我们建议您不要使用此账户并监控其是否有任何活动,这可能表明根用户凭证已泄露。

使用此模式,您可以设置一个事件驱动的架构来监控 IAM 根用户。这种模式建立了一个 hub-and-spoke 解决方案,该解决方案可以监控多个 AWS 账户、分账户,并将管理和报告集中到一个账户(中心账户)中。

使用 IAM 根用户证书时,Amazon CloudWatch 和 AWS 会分别在日志和跟踪中 CloudTrail 记录活动。在分支账户中,Amazon EventBridge 规则将事件发送到中心账户中的中央事件总线。在中心账户中, EventBridge 规则将事件发送到 AWS Lambda 函数。该函数使用 Amazon Simple Notification Service (Amazon SNS) 主题来通知您根用户活动。

在此模式中,您可以使用 AWS CloudFormation 模板在分支账户中部署监控和事件处理服务。您可以使用 T HashiCorp erraform 模板在中心账户中部署事件管理和通知服务。

先决条件和限制

先决条件

  1. 在您的 AWS 环境中部署 AWS 资源的权限。

  2. 部署 CloudFormation 堆栈集的权限。有关更多信息,请参阅堆栈集操作的先决条件(CloudFormation 文档)。

  3. Terraform 已安装并可供使用。有关更多信息,请参阅入门 – AWS(Terraform 文档)。

  4. 每个分支账户中的现有跟踪。有关更多信息,请参阅 AWS 入门 CloudTrail(CloudTrail 文档)。

  5. 该跟踪配置为向 CloudWatch 日志发送事件。有关更多信息,请参阅向 CloudWatch 日志发送事件(CloudTrail 文档)。

  6. 您的中心和分支账户必须由 AWS Organizations 管理。

架构

下图说明了实现的构建基块。

分支账户中的事件,在中心账户中创建电子邮件通知
  1. 使用 IAM 根用户证书时, CloudWatch 分别在日志和跟踪中 CloudTrail 记录活动。

  2. 在分支账户中, EventBridge 规则将事件发送到中心账户中的中央事件总线

  3. 在中心账户中, EventBridge 规则将事件发送到 Lambda 函数。

  4. Lambda 函数使用一个 Amazon SNS 主题来通知您根用户活动。

工具

Amazon Web Services

  • AWS CloudFormation 可帮助您设置 AWS 资源,快速一致地配置这些资源,并在 AWS 账户和区域的整个生命周期中对其进行管理。

  • AWS CloudTrail 可帮助您审计 AWS 账户的治理、合规和运营风险。

  • Amazon CloudWatch Lo gs 可帮助您集中管理来自所有系统、应用程序和 AWS 服务的日志,以便您可以监控它们并安全地将其存档。

  • Amazon EventBridge 是一项无服务器事件总线服务,可帮助您将应用程序与来自各种来源的实时数据连接起来。例如,AWS Lambda 函数、使用 API 目标的 HTTP 调用端点或其他 Amazon Web Services account 中的事件总线。

  • AWS Identity and Access Management (AWS IAM) 通过控制验证和授权使用您 AWS 资源的用户,帮助您安全地管理对您 AWS 资源的访问。

  • AWS Lambda 是一项计算服务,可帮助您运行代码,而无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。

  • Amazon Simple Notification Service (Amazon SNS) 可帮助您协调和管理发布者与客户端(包括 Web 服务器和电子邮件地址)之间的消息交换。

其他工具和服务

  • Terraform 是一个 CLI 应用程序,用于使用配置文件形式的代码来配置和管理云基础架构和资源。

代码存储库

此模式的源代码和模板可在GitHub 存储库中找到。此模式提供两个模板:

  • 一个 Terraform 模板,其中包含您在中心账户中部署的资源

  • 在分支账户中作为堆栈集实例部署的 CloudFormation 模板

该库的总体结构如下。

.  |__README.md  |__spoke-stackset.yaml  |__hub.tf  |__root-activity-monitor-module      |__main.tf  # contains Terraform code to deploy resources in the Hub account      |__iam      # contains IAM policies JSON files          |__ lambda-assume-policy.json          # contains trust policy of the IAM role used by the Lambda function          |__ lambda-policy.json                 # contains the IAM policy attached to the IAM role used by the Lambda function      |__outputs  # contains Lambda function zip code

Epics 部分提供了部署模板的 step-by-step 说明。

操作说明

任务描述所需技能

克隆示例代码存储库。

  1. 打开 AWS IAM 根用户活动监控存储库。

  2. 在代码选项卡上,文件列表上方,选择代码,然后复制 HTTPS URL。

  3. 在命令行界面中,将工作目录更改为要存储示例文件的位置。

  4. 输入以下 命令:

    git clone <repoURL>
常规 AWS

更新 Terraform 模板。

  1. 检索您的组织 ID。有关说明,请参阅从管理账户查看组织的详细信息(AWS Organizations 文档)。

  2. 在克隆的存储库中,打开 hub.tf

  3. 使用适合您的环境的值更新以下内容:

    • OrganizationId – 添加您的组织 ID。

    • SNSTopicName – 添加 Amazon SNS 主题的名称。

    • SNSSubscriptions – 添加应向其发送 Amazon SNS 通知的电子邮件。

    • Region – 添加要在其中部署资源的 AWS 区域代码。例如,eu-west-1

    • Tags – 添加您的标签。有关更多信息,请参阅标记 AWS 资源(AWS 一般参考)。

  4. 保存并关闭 hub.tf文件。

常规 AWS

将资源部署到 AWS 中心账户。

  1. 在 Terraform 命令行界面中,导航到克隆存储库的根文件夹,然后输入以下命令。

    terraform init && terraform plan
  2. 查看输出并确认要创建所述资源。

  3. 输入以下 命令。

    terraform apply
  4. 出现提示时,输入 yes 以确认部署。

常规 AWS
任务描述所需技能

部署 CloudFormation 模板。

  1. 登录 AWS 管理控制台,然后打开CloudFormation 控制台

  2. 从导航窗格中,选择 StackSets

  3. StackSets页面顶部,选择创建 StackSet

  4. 在 “权限” 下,选择服务管理权限CloudFormation 自动配置部署到 AWS Organizations 管理的目标账户所需的权限。

  5. 先决条件 - 准备模板下,选择模板已就绪

  6. 指定模板下,选择上传模板文件

  7. 选择选择文件,然后在克隆的存储库中选择 spoke-stackset.yaml

  8. 选择下一步

  9. 指定 StackSet 详细信息页面上,输入堆栈集的名称。

  10. 参数下,输入中心账户的账户 ID,然后选择下一步。

  11. 配置 StackSet 选项页面的标签下,添加您的标签。

  12. 执行配置下,选择非活动,然后选择下一步。

  13. 设置部署选项页面上,指定要在其中部署堆栈集的组织单位和区域,然后选择下一步

  14. 在查看页面上,选择我确认 AWS CloudFormation 可能会创建 IAM 资源,然后选择提交。 CloudFormation 开始部署您的堆栈集。

有关更多信息和说明,请参阅创建堆栈集(CloudFormation 文档)。

常规 AWS
任务描述所需技能

使用根用户凭证。

  1. 使用根用户凭证登录分支账户或中心账户。

  2. 确认您指定的电子邮件账户已收到 Amazon SNS 通知。

常规 AWS

相关资源

其他信息

Amazon GuardDuty 是一项持续的安全监控服务,可分析和处理日志,以识别您的 AWS 环境中意外和可能未经授权的活动。作为此解决方案的替代方案,如果您已启用 GuardDuty,它可以在使用根用户凭据时提醒您。 GuardDuty 结果为Policy:IAMUser/RootCredentialUsage,默认严重性为 “”。有关更多信息,请参阅管理 Amazon GuardDuty 调查结果