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

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

监控 IAM root 用户活动

由 Mostefa Brougui 创作 () AWS

摘要

每个亚马逊 Web Services (AWS) 账户都有一个根用户。作为 Ident AWS ity and Access Management (IAM) 的安全最佳实践,我们建议您使用根用户来完成只有根用户才能执行的任务。有关完整列表,请参阅《AWS账户管理参考指南》中的需要根用户凭证的任务。由于 root 用户拥有对您的所有AWS资源和账单信息的完全访问权限,因此我们建议您不要使用此账户,也不要监控该账户是否存在任何可能表明根用户凭证遭到盗用的活动。

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

使用IAM根用户凭证时,Amazon CloudWatch 和 Amazon 会分别在日志和跟踪中AWS CloudTrail 记录活动。在分支账户中,Amazon EventBridge 规则将事件发送到中心账户中的中央事件总线。在中心账户中, EventBridge 规则将事件发送到 AWS Lambda 函数。该函数使用亚马逊简单通知服务 (AmazonSNS) 主题来通知您根用户活动。

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

先决条件和限制

先决条件

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

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

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

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

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

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

架构

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

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

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

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

  4. Lambda 函数使用亚马逊SNS主题来通知您根用户活动。

工具

AWS 服务

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

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

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

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

  • AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。

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

  • 亚马逊简单通知服务 (AmazonSNS) 可帮助您协调和管理发布者与客户之间的消息交换,包括网络服务器和电子邮件地址。

其他工具和服务

  • 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. 打开 AWSIAMRoot 用户活动监视器存储库。

  2. 在文件列表上方的 “代码” 选项卡上,选择 “代码”,然后复制HTTPSURL。

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

  4. 输入以下命令:

    git clone <repoURL>
将军 AWS

更新 Terraform 模板。

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

  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 自动配置部署到 Organizations 管理的目标账户所需的权限AWS。

  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 调查结果