如何在有新的软件包可用时自动重建不可变基础设施

48次阅读
没有评论

问题描述

正在使用Terraform自动化部署基础设施,并使用Packer创建由Terraform部署的机器映像。按照不可变基础设施设计原则,他们将通过创建应用了补丁的新映像,然后重新部署基础设施来实现打补丁的操作。

在这种设置下,是否有其他工具可以自动检测基础映像中的软件包或操作系统本身是否需要更新,并触发构建流程?

用户提到了Chef Automate,但它似乎只能扫描运行中的节点以检查合规性,而不能分析映像清单本身。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

采用多种方法来实现自动检测和触发构建流程,以确保不可变基础设施的更新。

方法1:使用安全信息和事件管理(SIEM)工具

SIEM工具可以接收操作系统的输出,包括频繁检查更新的结果。这些工具可以帮助快速自动地获取有关需要打补丁的信息,并根据这些信息决定何时将其应用到构建流程中。一些常用的SIEM工具包括LogRhythm Security Intelligence Platform和ElasticStack。

方法2:使用漏洞管理系统

漏洞管理系统专注于系统中的漏洞,可以捕捉到软件部署到系统中的库的问题,这些库可能存在漏洞,但操作系统本身并不管理这些库。这种方法可以帮助发现那些尚未修补的漏洞。

方法3:使用依赖检查工具

在构建流程中使用依赖检查工具,可以配置工具在检查代码提交时,如果发现漏洞,则构建失败。这种方法还可以在工具中添加新的漏洞检查规则,以便在上次检查之后添加新的漏洞时也能发现。

方案2

使用AWS Inspector进行漏洞扫描,查找CVE漏洞。Inspector有一个CloudWatch指标,可以在发现漏洞时触发操作。确定需要更新哪些软件包可能会有些棘手,但你可以选择更新所有软件包。你不一定要使用Inspector,任何可以与之集成的漏洞扫描工具都可以使用。漏洞扫描是一种通用的最佳实践。

另一个想法是设置一个cron job,执行apt-get update && apt-get upgrade --dry-run > stuff-that-should-be-updated.txt命令,并解析文本文件以获取需要更新的软件包列表,然后将其反馈到构建流程中。

方案3

这种方法使用Chef audit来解决你的问题,但它也有一些问题。自Chef 14起,官方已经弃用了audit模式,推荐使用audit cookbook和inspec。inspec提供了多个CIS配置文件供使用。

如果你想使用合规策略(例如CIS、HIPPA等),可以创建一个作业,在运行的软件包映像上运行审计解析器,并在发现不合规状态时通知更新任务。可以免费获取CIS和HIPPA等策略的OVAL解析器和OVAL定义。对于自定义的审计策略,可以编写自己的解析器并对映像进行审计。

请注意,上述解决方案可能需要根据你的具体情况进行调整和定制。

正文完