自动修复:大规模保护大众汽车亚马逊云科技着陆区

作者: 斯蒂芬·特劳布, 佩德罗·加尔瓦奥, 斯蒂芬·特伯博士 |

2019年,大众汽车公司(VW)和亚马逊网络服务(亚马逊云科技)建立了战略合作,共同开发数字生产平台(DPP),旨在将大众的生产和物流效率提高30%,同时将生产成本降低同等幅度。

随着DPP基础设施的扩展,维护其安全性成为当务之急。这可以通过集成预防、侦测和响应机制的综合方法来实现,这有助于确保在动态云环境中提供强有力的保护。由于每个季度的账户数量快速增长,DPP着陆区越来越多地面临这一挑战。在 180 多个项目中,由于亚马逊云科技账户用户错误配置亚马逊云科技资源而导致的漏洞数量迅速增加,增加了公司的潜在风险。这些错误配置的示例包括可公开访问的亚马逊简单存储服务 (Amazon S3) 存储桶或暴露在互联网上的亚马逊关系数据库服务 (Amazon RDS) 表。

在本博客中,我们将讨论通过重新配置亚马逊云科技来帮助 VW亚马逊云科技账户安全团队修复亚马逊云科技着陆区漏洞的自动化流程。这是由大众汽车的DPP安全团队控制的,以帮助最大限度地减少对项目的运营影响,同时帮助管理风险敞口。

“自动补救改变了大众汽车的安全态势。它帮助我们实现了更高的公司层面的合规态度,降低了风险,提高了开发人员的工作效率,同时显著缩短了我们的响应时间。” 大众汽车发展计划署安全官Stephan Teuber博士说。

例如,自动修复计划将大众修复的安全问题的总体水平从关键漏洞的95%提高到99.9%,将高严重漏洞的总体水平从85%提高到98%。我们部署了超过 15 个补救模块,涵盖了 Amazon Security Hub 和合作伙伴工具的发现。在运行的第一年,该系统执行了超过 100,000 次修复(每月约 8,300 次操作),目前在 1,200 个亚马逊云科技账户中以每月 3,500 次补救措施的稳定状态运行。

作为亚马逊云科技和 VW 的团队成员,我们合作开发了一种自动修复漏洞的创新方法。在亚马逊云科技的支持下,大众定义了以下要求,以帮助以与DPP平台相同的速度进行扩展,同时尽可能降低和控制对大众的潜在运营影响:

  • 补救措施被定义为更正亚马逊云科技服务的易受攻击的配置。需要进行此更正以帮助缓解亚马逊云科技账户所有者引入的服务配置中存在的潜在安全漏洞。这些漏洞由 Amazon Security Hub 检测并提供。
  • 新补救措施的明确决策流程:为了决定自动修复哪个漏洞,该团队进行了数据收集和分析,以评估对大众所有亚马逊云科技账户的潜在负面影响和影响。
  • 与用户进行沟通,引入新的补救措施:为帮助确保着陆区的每位用户都了解情况并做好准备,必须在发布前 3 周向非生产客户传达新的补救措施,并提前 3 个月告知生产客户。
  • 可控的修复速度:为了控制对缓解的资源配置造成意外负面影响的风险,修复操作的数量不得超过指定的阈值。必须根据修复的复杂性和受影响资源的数量来评估每次运行的操作阈值。这提高了补救措施的控制和速度,以免出现节流或资源消耗问题。
  • 每个账户的补救措施:必须按账户对补救措施进行分组,以便在中央日志空间中保持清晰的日志记录,记录所采取的操作和潜在错误。这将简化修复操作失败时的故障排除和错误处理过程。如果出现错误,单个日志记录会按时间顺序显示一个特定帐户的所有补救措施。如果账户存在一般问题,例如权限问题或补救之间的负面副作用,它将提供见解。
  • 例外管理:必须建立有时限的例外管理系统,以授权项目团队申请临时豁免。如果团队预计补救措施会产生负面影响,因为他们依赖于漏洞的资源配置,则可能需要这样做。将给予有时限的例外情况,允许他们在 3 周以上的非生产时间或生产工作负载在 3 个月以上的时间内消除依赖关系。

概述

我们在 Amazon CodeBuild 中以项目形式根据给定要求实现了核心功能,该服务用于构建和测试自动扩展的代码。Amazon CodeBuild 项目反过来由亚马逊云科技EventBridge 中的预定规则启动,该解决方案用于在亚马逊云科技、现有系统或 SaaS 应用上大规模构建事件驱动的应用程序。补救逻辑定义为 Amazon CodeBuild 项目中的 Python 代码。

大众汽车的 DPP 安全团队之所以选择 Amazon CodeBuild,是因为它成本低廉,运行时间长达 8 小时。系统总成本约为每月 20 美元,涵盖 1,200 个亚马逊云科技账户。定期方法使我们能够控制补救措施的运行时间,并在需要时停止操作。

自动修复框架图 1 自动修复框架

自动修复功能的实现由多个组件组成,如上图 1 所示:

  1. 数据收集器:此功能从 Amazon Security Hub 收集账户信息和所有相应发现,该服务旨在帮助客户自动执行亚马逊云科技安全检查和集中安全警报。
  2. 补救基础:该框架组件为补救提供基本的集成功能,例如在 Amazon Identity and Access Management (Amazon IAM) 中假设账户操作会话,该服务旨在安全地管理身份以及对亚马逊云科技服务和资源的访问,以及与 Amazon Security Hub 收集的结果进行交互。它还汇总每个账户的调查结果,提供每个账户的补救运行周期,而不是使用逐项调查的方法。这意味着账户所有者的操作更具可预测性,同时也减少了开销——例如,在单个补救会话中多次担任 Amazon IAM 角色时。补救基地还将负责补救模块的记录和监控。
  3. 修复模块:此组件包含更改资源配置的功能,该功能将在账户中运行以解决已确定的安全问题。所做的配置更改是专门针对他们修复的控制措施量身定制的。定义的框架内可以有多个模块。

解决方案

大众采用的模块化方法有助于更快、更轻松地创建新的补救措施。新的修复模块是用 Python 编写的。该模块仅包含用于筛选发现结果的查找标题和修复资源易受攻击配置的更改。补救基础框架可以处理其他所有事情,包括设置账户会话和从 Amazon Security Hub 收集安全发现。该模块仅使用提供此基本功能的框架,并取消重复操作以提供所需的数据。这缩短了开发新补救措施的时间。

Python 中的示例模块结构:

"""Module for an example remediation."""
from lib.remediation_base import AutoRemediationBase # Import the remediation base framework

class Name(AutoRemediationBase):
    """Remediate some resource."""

    MODULE_NAME = "ExampleModuleName"
   # Define the finding to filter for
    FINDING_TITLE = "1.2 Example finding title in Amazon Security Hub"

    def __init__(self) -> None:
        # Initializing the base/super class AutoRemediationBase
        super().__init__(module_name=self.MODULE_NAME, finding_title=self.FINDING_TITLE)
        # Generates the basic framework and collect all finding for the given title
        # The functions will be provided by the inherited AutoRemediationBase class
        self.logger = self.create_logger() # Logging framework
        self.findings = self.load_findings() # Amazon Security Hub finings filtered by the FINDING_TITLE

    def run_fix(self) -> None:
        """Start the remediation with the given findings."""
	# Add here the code/remediation you want to run on the findings.
	# the self.findings provides all Amazon Security Hub finding details and the Amazon IAM session which can be assumed to access the affected亚马逊云科技account. 
        self.logger.info(f"Found {len(findings)} with {self.FINDING_TITLE} in the Amazon Security Hub")

该解决方案最终包含修复基础框架和一个或多个修复模块。所有补救模块均按顺序运行,以降低亚马逊云科技服务 API 可能出现副作用或限制问题的风险。这种方法还有助于在补救过程中出现错误或意外行为时更好地控制和可追溯性,因为这些操作也是按顺序记录的。

自动修复架构图 2 自动修复架构

运行自动修复仅需几个步骤,如图 2 所示:

  1. python 代码部署在包含 Amazon CodePipeline 的 DPP 安全团队的资源账户中,该团队会自动执行持续交付管道以实现快速可靠的更新,然后在安全和审计账户中部署 Amazon CodeBuild 任务。
  2. 部署的 Amazon CodeBuild 任务根据 DPP 安全团队定义的亚马逊云科技EventBridge 预定规则运行。例如,它每天在特定时间运行两次。
  3. 触发的 Amazon CodeBuild 任务启动数据收集过程,以获取必要的目标账户 ID 和账户标签。这些信息可能来自多个地方,例如外部定制工具集、亚马逊云科技组织 API 或存储在亚马逊简单存储服务 (Amazon S3) 中的文件,该对象存储旨在从任何地方检索任意数量的数据。这取决于消失的着陆区管理层来提供这些数据,而不是自动修复解决方案的一部分。例如,大众汽车维护了一个账户发现工具,通过API集中提供这些信息。
  4. 获得账户信息后,自动修复框架使用 API 从 Amazon Security Hub 收集和汇总每个账户的调查结果。get_findings
  5. 然后,修复基础框架在着陆区账户中扮演一个预定义角色,允许更改资源配置,并将具有该角色的 Amazon IAM 会话初始化到受影响的账户。遵循最小权限原则,所承担的角色仅限于对受影响的资源和服务执行补救措施。
  6. 随后,自动修复框架向修复模块提供已启动的 IAM 会话,以便在 CodeBuild 作业中运行修复操作。此外,补救模块获取 Amazon Security Hub 根据受影响账户和查找标题筛选的框架中的查找详情。这些调查详细信息包含受影响的资源信息,该模块将对其进行修复。
  7. 修复模块修复错误配置后,修复基础框架使用自定义元数据字段更新 Amazon Security Hub 调查结果,显示修复发生的时间并标记修复已自动完成。成功修复后,该发现还将标记为已解决,以反映在其他工具和受影响的亚马逊云科技账户的 Amazon Security Hub 控制面板中。

我们使用选择性方法来自动确定将采取哪些补救措施。选择 Amazon Security Hub 调查结果的关键标准包括以下内容:

  • 风险:错误配置的风险和严重程度
  • 数量:着陆区未决发现的数量
  • 客户影响:项目团队解决调查结果所需的时间

结论

大众在亚马逊云科技专业服务(帮助公司通过亚马逊云科技实现预期的业务成果)的支持下,开发了一种更强大、更高效的流程,用于考虑将潜在的新补救措施纳入自动修复模块堆栈。该流程是建筑决策记录(ADR)方法的扩展,便于在经过考虑的候选人中选择符合严格标准的补救措施。ADR 可以由任何安全架构师创建,必须包括关键标识符、潜在风险和伪代码实施的数据点,以支持拟议的补救措施。ADR文件将由DPP安全团队审查和批准,以保持高质量标准,同时识别和最大限度地降低潜在风险。这将有助于防止错误的决定,这些决策可能会影响所有着陆区账户。

这种更加自动化的方法改善了整体安全态势,并有助于降低风险。它还减轻了大众项目团队及其安全团队的运营负担。

有关亚马逊云科技如何帮助您完成自动修复之旅的更多详细信息,请联系您的亚马逊云科技账户代表。亚马逊云科技专业服务可以帮助您实现预期的结果。



斯蒂芬·特劳布

斯蒂芬·特劳布

Stephan 是亚马逊云科技专业服务的安全顾问,在那里他与汽车行业的客户密切合作。Stephan 是一位真正的技术爱好者,他热衷于帮助客户在其云环境中实现稳健的安全态势。他最近在亚马逊云科技re: inForce 2023 上分享了他在安全优秀实践方面的专业知识。当 Stephan 不沉浸在亚马逊云科技工作中时,你可以在排球场上找到他,或者和他的家人一起探索世界。

佩德罗·加尔瓦奥

佩德罗·加尔瓦奥

Pedro 是亚马逊云科技专业服务的首席安全顾问。他最喜欢的任务包括帮助客户在亚马逊云科技上完成出色的安全工程工作。

斯蒂芬·特伯博士

斯蒂芬·特伯博士

斯蒂芬是大众汽车公司的一名安全官员,负责保护该公司的数字生产平台。Stephan 拥有生产和物流信息技术背景,为汽车行业的网络安全带来了实用的见解。他在向公司引入安全自动化、实现传统工作流程现代化方面发挥了作用。在不从事安保工作时,Stephan 喜欢在阿尔卑斯山和德国中部高地徒步旅行。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。