使用 Amazon Quick Sight 可视化所有 AWS 账户的 IAM 凭证报告 - AWS 规范指引

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

使用 Amazon Quick Sight 可视化所有 AWS 账户的 IAM 凭证报告

Parag Nagwekar 和 Arun Chandapillai,Amazon Web Services

Summary

警告:IAM 用户具有长期凭证,这会带来安全风险。为帮助减轻这种风险,我们建议仅向这些用户提供执行任务所需的权限,并在不再需要这些用户时将其移除。

您可以使用 AWS Identity and Access Management(IAM)凭证报告,帮助您满足贵组织的安全、审计和合规要求。凭证报告提供您 AWS 账户中所有用户的列表,并显示他们的凭证状态,如密码、访问密钥和多重身份验证(MFA)设备。您可以为由 AWS Organizations 管理的多个 AWS 账户使用凭证报告。

此模式包括步骤和代码,可帮助您使用 Amazon Quick Sight 控制面板为组织中的所有 AWS 账户创建和共享 IAM 证书报告。您可以与组织中的利益相关者共享控制面板。这些报告可帮助您的组织实现以下目标业务成果:

  • 识别与 IAM 用户相关的安全事件

  • 追踪 IAM 用户向单点登录(SSO)身份验证的实时迁移

  • 追踪 IAM 用户访问的 AWS 区域

  • 保持合规

  • 与其他利益相关者共享信息

先决条件和限制

先决条件

架构

技术堆栈

  • Amazon Athena

  • Amazon EventBridge

  • Amazon Quick Sight

  • Amazon Simple Storage Service(Amazon S3)

  • AWS Glue

  • AWS Identity and Access Management(IAM)

  • AWS Lambda

  • AWS Organizations

目标架构

下图显示了用于设置从多个 AWS 账户捕获 IAM 凭证报告数据的工作流架构。

下面的屏幕截图阐明了架构图
  1. EventBridge 每天调用 Lambda 函数。

  2. Lambda 函数在整个组织的每个 AWS 账户中扮演 IAM 角色。然后,该函数创建 IAM 凭证报告,并将报告数据存储在集中式 S3 存储桶中。必须在 S3 存储桶上启用加密,并停用公共访问。

  3. AWS Glue 爬网程序每天都会爬取 S3 存储桶,并相应地更新 Athena 表。

  4. Quick Sight 导入和分析证书报告中的数据,并构建一个可由利益相关者可视化并与其共享的仪表板。

工具

Amazon Web Services

  • Amazon Athena 是一种交互式查询服务,方便使用标准 SQL 分析 Amazon S3 的数据。

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

  • Amazon Quick Sight 是一种云级商业智能(BI)服务,可用于在单独的控制面板中可视化、分析和报告数据。Quick Sight 是 Amazon Quick Suite 中的核心组件,提供交互式数据可视化、SPICE 内存分析、嵌入式分析和仪表板共享。

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

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

代码

此模式的代码可在 GitHub getiamcredsreport-allaccounts-org存储库中找到。您可以使用此存储库中的代码在 Organizations 的 AWS 账户中创建 IAM 凭证报告,并将其存储至中心位置。

操作说明

Task说明所需技能

设置 Amazon Quick Suite 企业版。

  1. 在您的 AWS 账户中激活 Amazon Quick Suite 企业版。有关更多信息,请参阅 Quick Suite 文档中的在 Amazon Quick Suite 中管理用户访问权限

  2. 要授予控制面板权限,请获取 Quick Sight 用户的亚马逊资源名称 (ARN)。

AWS 管理员、AWS DevOps、云管理员、云架构师

将 Amazon Quick Sight 与亚马逊 S3 和 Athena 集成。

在部署 AWS 堆栈之前,您必须授权 Quick Sight 使用 Amazon S3 和 Athena。 CloudFormation

AWS 管理员、AWS DevOps、云管理员、云架构师
Task说明所需技能

克隆 GitHub 存储库。

  1. 通过运行以下命令将 GitHub getiamcredsreport-allaccounts-org存储库克隆到本地计算机:git clone https://github.com/aws-samples/getiamcredsreport-allaccounts-org

AWS 管理员

部署基础设施。

  1. 登录 AWS 管理控制台并打开CloudFormation 控制台

  2. 在导航窗格中,选择创建堆栈,然后选择使用新资源(标准)

  3. 标识资源页面上,选择下一步

  4. 指定模板页面,对于模板来源选择上传模板文件

  5. 选择 “选择文件”,从克隆的 GitHub 存储库中选择Cloudformation-createcredrepo.yaml文件,然后选择 “下一步”。

  6. 参数中,使用您的 IAM 角色更新 IAMRoleName 这应该就是您希望 Lambda 在组织的每个账户中代入的 IAM 角色。此角色创建凭证报告。注意:在创建堆栈时,该角色不必出现在所有账户中。

  7. 参数中,将 S3BucketName 更新为 Lambda 存储所有账户凭证的 S3 存储桶名称。

  8. 堆栈名称中,输入堆栈名称。

  9. 选择提交

  10. 记下 Lambda 函数角色名称。

AWS 管理员

创建 IAM 权限策略。

使用以下权限,为组织中的每个 AWS 账户创建 IAM 策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GenerateCredentialReport", "iam:GetCredentialReport" ], "Resource": "*" } ] }
AWS DevOps、云管理员、云架构师、数据工程师

创建带有信任策略的 IAM 角色。

  1. 为 AWS 账户创建 IAM 角色,并附加在上一步中创建的权限策略。

  2. 将如下信任策略附加到 IAM 角色:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":[ "arn:aws:iam::<MasterAccountID>:role/<LambdaRole>" ] }, "Action":"sts:AssumeRole" } ] }
重要

请将 arn:aws:iam::<MasterAccountID>:role/<LambdaRole> 替换为您之前记下的 Lambda 角色的 ARN。

注意

各个组织通常使用自动化技术,为他们的 AWS 账户创建 IAM 角色。建议您使用此自动化技术(如果有)。或者,您可以使用代码存储库中的 CreateRoleforOrg.py 脚本。该脚本需要现有的管理角色,或任何其他有权在每个 AWS 账户中创建 IAM 策略和角色的 IAM 角色。

云管理员、云架构师、AWS 管理员

配置 Amazon Quick Sight 以可视化数据。

  1. 使用您的凭据@@ 登录 Quick Suite

  2. 使用 Athena 创建数据集(使用 iamcredreportdb 数据库和 "cfn_iamcredreport" 表),然后自动刷新数据集

  3. Quick Sight 中创建分析

  4. 创建 Quick Sight 仪表板

AWS DevOps、云管理员、云架构师、数据工程师

附加信息

其他注意事项

请考虑以下事项:

  • 使用 CloudFormation 部署基础设施后,您可以等待在 Amazon S3 中创建并由 Athena 分析的报告,直到 Lambda 和 AWS Glue 按计划运行。或者,您可手动运行 Lambda 在 Amazon S3 中获取报告,然后运行 AWS Glue 爬网程序,以获取根据数据创建的 Athena 表。

  • Quick Suite 是一款功能强大的工具,可根据您的业务需求分析和可视化数据。您可以使用 Quick Suite 中的参数根据您选择的数据字段来控制控件数据。此外,您还可以使用 Quick Suite 分析从数据集中创建参数(例如,账户partition_0partition_1、日期和用户字段,例如、user和),以添加帐户、日期和用户的参数控件。

  • 要构建您自己的 Quick Sight 仪表板,请参阅 AWS Workshop Studio 网站上的快速套件研讨会

  • 要查看 Quick Sight 仪表板示例,请参阅 GitHub getiamcredsreport-allaccounts-org代码存储库。

目标业务成果

您可以使用此模式来实现以下目标业务成果:

  • 识别与 IAM 用户相关的安全事件 — 使用单一控制面板调查组织每个 AWS 账户的每个用户。您可跟踪 IAM 用户最近访问的各个 AWS 区域及其使用的服务的趋势。

  • 跟踪 IAM 用户向 SSO 身份验证的实时迁移 — 通过使用 SSO,用户可使用单个凭证登录一次并访问多个 AWS 账户和应用程序。如果您计划将 IAM 用户迁移至 SSO,此模式可以帮助您过渡到 SSO,并追踪所有 AWS 账户中的所有 IAM 用户凭证使用情况(例如访问 AWS 管理控制台或访问密钥的使用情况)。

  • 追踪 IAM 用户访问的 AWS 区域 — 您可出于各种目的控制 IAM 用户对区域的访问权限,例如数据主权和成本控制。您还可追踪任何 IAM 用户对区域的使用情况。

  • 保持合规 — 遵循最低权限原则,您只能授予执行特定任务所需 IAM 权限。此外,您还可以跟踪对 Amazon Web Services 的访问权限、AWS 管理控制台以及长期凭证的使用情况。

  • 与其他利益相关者共享信息 — 您可以与其他利益相关者共享精心策划的控制面板,无需授予他们访问 IAM 凭证报告或 AWS 账户的权限。