使用 Amazon 可视化所有AWS账户的IAM凭证报告 QuickSight - AWS Prescriptive Guidance

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

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

由 Parag Nagwekar (AWS) 和 Arun Chandapillai () 创作 AWS

代码存储库:让您的IAM证书报告在全组织范围内可见

环境:生产

技术:分析、建议、管理和治理、安全、身份、合规性

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

AWS服务:亚马逊 Athena;;亚马逊 AWS CloudFormation;Identity and Access Man AWS agement; EventBridge亚马逊 QuickSight

Summary

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

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

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

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

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

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

  • 保持合规

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

先决条件和限制

先决条件

架构

技术堆栈

  • Amazon Athena

  • Amazon EventBridge

  • Amazon QuickSight

  • Amazon Simple Storage Service (Amazon S3)

  • AWSGlue

  • AWSIdentity and Access Management (IAM)

  • AWSLambda

  • AWS组织

目标架构

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

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

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

  3. AWSGlue 爬虫每天都会爬取 S3 存储桶,并相应地更新 Athena 表。

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

工具

AWS服务

  • Amazon Athena 是一项交互式查询服务,可使用标准工具轻松分析 Amazon S3 中的数据。SQL

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

  • Amazon QuickSight 是一项云规模的商业智能 (BI) 服务,可帮助您在单个控制面板中可视化、分析和报告数据。

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

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

代码

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

操作说明

任务描述所需技能

设置亚马逊 QuickSight 企业版。

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

  2. 要授予控制面板权限,请获取 QuickSight 用户的 Amazon 资源名称 (ARN)。

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

将亚马逊 QuickSight 与亚马逊 S3 和 Athena 集成。

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

AWS管理员、AWS DevOps、云管理员、云架构师
任务描述所需技能

克隆 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. 在 “参数” 中,IAMRoleName使用您的IAM角色进行更新。 这应该是您希望 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>替换为您之前ARN记下的 Lambda 角色中的角色。

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

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

将 Amazon 配置 QuickSight 为可视化数据。

  1. 使用您的 QuickSight凭据登录。

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

  3. 在中创建分析 QuickSight

  4. 创建 QuickSight 仪表板

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

其他信息

其他注意事项

请考虑以下事项:

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

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

  • 要创建自己的 QuickSight 仪表板,请参阅 Works QuickSight h op Studio 网站上的AWS研讨会。

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

目标业务成果

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

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

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

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

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

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