自动清点多个账户和地区的 AWS 资源 - AWS Prescriptive Guidance

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

自动清点多个账户和地区的 AWS 资源

由 Matej Macek 创作 () AWS

摘要

这种模式概述了一种自动化方法,用于维护多个帐户的全面 AWS 资源清单,以及 AWS 区域. 它旨在帮助基础设施和安全工程师改善其资源管理实践。它用于跟踪资源变化,Amazon Athena 用于查询,Amazon 用于 AWS Config 交互式控制面板 QuickSight 。您可以通过部署 AWS CloudFormation 堆栈来实现此解决方案。

此解决方案类似于使用 Amazon Athena QuickSight 和AWS Amazon 可视化 AWS Config 数据(博客文章)中介绍的解决方案。此模式扩展了该解决方案,以满足以下常见要求并提供以下主要好处:

  • 以@@ 合规为中心 — 这种方法可以帮助您满足监管要求 PCIDSS,例如 NISTSP 800-53ISO/IEC27001 HIPAAGDPR、以及其他要求准确资产库存的要求。

  • 自定义框架 — 它为为各种 AWS 资源创建 QuickSight 仪表板提供了基础,因此您可以根据自己的特定要求自定义解决方案。

  • 以用户为导向的增强功能 — 这种方法结合了来自实际用例的反馈,并满足了对更全面解决方案的要求。

在动态、多账户或多区域环境中,基础设施、安全和财务团队经常面临可见性和协作方面的挑战。该解决方案旨在解决这些难题,并显著减少创建和维护资源清单所需的时间和精力。结果是资源集中视图,可帮助您改进资源分配决策,识别和降低风险,优化成本,并提高整体可见性和协作。这种方法弥合了概念性解决方案与实际实施需求之间的差距,以实现安全、合规和运营目的。

先决条件和限制

先决条件

  • 以下处于活动状态 AWS 账户:

    • 管理账户-用于在整个组织内计费、创建账户和控制访问权限的集中账户

    • 审计账户 — 用于安全监控、合规性检查和偏差通知的集中中心

    • 日志存档账户 — 用于存储和分析所收集数据的集中账户

  • 在审计账户中,一种 AWS Config 聚合器,用于收集和汇总来自目标账户和地区的配置数据

  • 在日志存档帐户中,设置以下内容:

    • 亚马逊简单存储服务 (Amazon S3) S ervice 存储桶,用于存储来自聚合器的数据 AWS Config

    • 亚马逊 QuickSight 订阅

    • 与亚马逊 Athena QuickSight 之间的授权连接

    • 通过 Athena 查询访问 Amazon S3 存储桶的@@ 权限

  • AWS Command Line Interface (AWS CLI),已安装配置

  • 部署预置以下资源的 CloudFormation 堆栈的权限:

    • 一个 AWS Lambda 函数

    • 亚马逊 S3 通知配置

    • Athena 数据库、表和视图

    • QuickSight 数据集和数据源

  • 在中运行自动化的权限 AWS Systems Manager

  • 访问权限 QuickSight

限制

  • 解决方案依赖于 AWS Config。 AWS Config 通常会在检测到更改后立即或按您指定的频率记录对资源的配置更改。但是,这是尽力而为,有时可能需要更长的时间。

  • 此解决方案仅跟踪AWS Config 支持的资源类型

  • 该解决方案不跟踪其他云提供商或本地环境中的资源库存。

  • 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅 AWS 文档中的服务终端节点和配额页面,然后选择该服务的链接。

架构

下图显示了收集、组织、分析和可视化组织中多个账户的配置和合规性数据的简化流程。 AWS

收集并可视化整个组织的配置和合规性数据。

图表显示了以下工作流:

  1. AWS Config 聚合器定期收集有关目标账户和区域中资源的配置和合规性数据,然后将这些数据传输到日志存档账户中的 Amazon S3 存储桶。

  2. 向 Amazon S3 存储桶添加新 AWS Config 数据会调用一个 AWS Lambda 函数。

  3. Lambda 函数通过为密钥配置与每个快照文件的区域和日期相对应的值来对数据进行分区。这有助于 AWS Glue 有效地查询和处理配置和合规性数据。

  4. Amazon Athena 使用架构 AWS Glue 存储在 Amazon S3 存储桶中的数据SQL运行查询。它利用中的架构元数据 AWS Glue 来理解数据的结构。

  5. Athena 中的@@ 视图定义和提取目标数据集。

  6. Amazon 中的@@ 控制面板可 QuickSight 帮助您可视化和分析数据集。

工具

AWS 服务

  • Amazon Athena 是一项交互式查询服务,可帮助您使用标准直接在 Amazon S3 中分析数据。SQL

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

  • AWS Config提供了您的资源 AWS 账户 及其配置方式的详细视图。它可以帮助您确定资源之间的关联方式,以及它们的配置如何随时间变化。 AWS Config 聚合器从多个 AWS 账户 区域收集 AWS Config 配置和合规性数据。

  • AWS Glue是一项完全托管的提取、转换和加载 (ETL) 服务。它可以帮助您在数据存储和数据流之间对数据进行可靠地分类、清理、扩充和移动。此模式使用 AWS Glue 数据目录架构注册表

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

  • AWS Organizations是一项账户管理服务,可帮助您将多个账户整合 AWS 账户 到一个由您创建和集中管理的组织中。

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

  • Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • AWS Systems Manager 可帮助您管理在 AWS Cloud中运行的应用程序和基础设施。它简化了应用程序和资源管理,缩短了检测和解决操作问题的时间,并帮助您大规模安全地管理 AWS 资源。AWS Systems Manager 自动化简化了许多人的常见维护、部署和补救任务 AWS 服务。

代码存储库

此模式的 AWS CloudFormation 模板可在可AWS Config 视化 GitHub 存储库中找到。此 CloudFormation 模板部署了 AWS Systems Manager 自动运行手册,该操作手册设置 AWS Config 为与 Amazon Athena 配合使用。此自动化 AWS Glue 可以准备连接指定的 Amazon S3 存储桶,在 Amazon Athena 中创建视图,并配置亚马逊 QuickSight 以实现控制面板可视化。

最佳实践

操作说明

任务描述所需技能

下载 CloudFormation 模板。

下载 Config-V isualization QuickSight-A SSM utomation.y CloudFormation aml 模板。

AWS管理员、云管理员、 DevOps 工程师

修改 CloudFormation 模板。

只有当你正在使用AWS Control Tower并 AWS Config 由其管理时,才能完成此步骤 AWS Control Tower。您需要修改 CloudFormation 模板。

  1. 登录 管理账户。

  2. 打开 AWS Organizations 管理控制台

  3. 导航到 Settings (设置) 页面。此页面显示有关该组织的详细信息,包括组织 ID。

  4. 复制组织 ID。

  5. 在你首选的文本编辑器中,打开 Config-Visual ization QuickSight-A SSM utomation.yam l 文件。

  6. 找到以下行:

    return re.match('^AWSLogs/(\d+)/Config/([\w-]+)/(\d+)/(\d+)/(\d+)/ConfigSnapshot/[^\]+$', object_key)
  7. 将此行替换为以下内容,其中<ORGANIZATION_ID>是您之前复制的 ID:

    return re.match('^<ORGANIZATION_ID>/AWSLogs/(\d+)/Config/([\w-]+)/(\d+)/(\d+)/(\d+)/ConfigSnapshot/[^\]+$', object_key)
  8. 保存并关闭 Config-Visu alization QuickSight-A SSM utomation.y aml 文件。

DevOps 工程师、AWS管理员

创建堆 CloudFormation 栈。

按照从 CloudFormation 控制台创建堆栈中的说明进行操作。请注意以下几点:

  1. 选择 “上传模板文件”,然后选择您下载的YAML文件。

  2. 对于堆栈名称,输入 Config-QuickSight-Visualization-SSM-Automation

  3. 选择提交

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

找到你的 QuickSight 用户名。

  1. 打开 QuickSight 管理控制台

  2. 打开个人资料菜单。

  3. 记下用户名。您稍后会需要此值。

AWS管理员、云管理员、 DevOps 工程师

找到传送渠道名称和 Amazon S3 存储桶名称。

  1. 在中 AWS CLI,输入以下命令:

    aws configservice describe-delivery-channels
  2. 记下 Amazon S3 存储桶的名称和您的AWS Config 交付渠道的名称。你稍后需要这些值。

AWS管理员、云管理员、 DevOps 工程师

在 Systems Manager 中运行自动化。

  1. 打开 AWS Systems Manager 管理控制台

  2. 在导航窗格中,选择文档

  3. 选择我拥有的

  4. 选择 Config-QuickSight-可视化

  5. 选择执行自动化

  6. 输入参数部分,输入以下参数的值:

    • ConfigDeliveryChannelName— 输入您的 AWS Config 配送渠道的名称。此参数为必需参数。

    • ConfigS3BucketLocation— 输入用于存储 AWS Config 配置数据的 Amazon S3 存储桶的名称。此参数为必需参数。

    • QuickSightUserName— 输入具有管理权限的用户名 QuickSight。此参数为必需参数。

    • AutomationAssumeRole— () 角色的亚马逊资源名称 (ARN), AWS Identity and Access Management 允许 Systems Manager Automation 代表你执行操作。IAM此参数为可选的。将此参数留空。

    • DeleteConfigVisualization— 选择false

  7. 选择执行

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

刷新数据。

要根据您的特定要求安排数据集刷新,请按照刷新SPICE数据中的说明进行操作。

AWS管理员、 DevOps 工程师、云管理员

创建 分析。

要在中创建可帮助您 QuickSight 可视化资源的控制面板,请按照在 Amazon 中开始分析中的说明进行操作 QuickSight。

QuickSight 管理员

创建控制面板。

  1. 修改完 QuickSight 分析后,按照发布仪表板中的说明创建仪表板。仪表板是您可以与其他 QuickSight 用户共享的分析。

  2. 按照授予控制面板访问权限中的说明与目标 QuickSight 用户共享控制面板。

QuickSight 管理员
任务描述所需技能

删除 Systems Manager 自动化创建的资源。

  1. 打开 AWS Systems Manager 管理控制台

  2. 在导航窗格中,选择文档

  3. 选择我拥有的

  4. 选择 Config-QuickSight-可视化

  5. 选择执行自动化

  6. 输入参数部分中,为DeleteConfigVisualization参数输入true

  7. 选择执行

AWS管理员、云管理员、 DevOps 工程师

删除 CloudFormation 堆栈。

要删除Config-QuickSight-Visualization-SSM-Automation堆栈中的资源,请按照从 CloudFormation 控制台删除堆栈中的说明进行操作。

AWS管理员、云管理员、 DevOps 工程师

故障排除

事务解决方案

Amazon QuickSight 正在尝试连接 us-east-1 AWS 区域,但不允许在该地区创建资源。

一项服务控制政策限制您在该 QuickSight 地区订阅 Amazon。在服务控制策略中,手动指定目标 AWS 区域。<REGION_ID>替换为相应的区域标识符:

https://<REGION_ID>.quicksight.aws.amazon.com/sn/start/dashboards

以下是示例:

https://eu-central-1.quicksight.aws.amazon.com/sn/start/dashboards

在亚马逊 Athena 中,您会看到以下消息:

Before you run your first query, you need to set up a query result location in Amazon S3.

确保您已准备好一个 Amazon S3 存储桶,用于存储来自亚马逊 Athena 的查询结果。然后,按照使用 Amazon Athena 控制台指定查询结果位置中的说明进行操作。

相关资源

AWS 文档

AWS 博客文章

其他资源