理解配置漂移:原因、影响与预防措施
配置漂移是基础设施即代码(IaC)开发人员必须关注的核心议题。本文深入探讨配置漂移的管理,分析其重要性、发生原因以及可能的解决方案。
什么是配置漂移?
为了持续优化用户体验,无论是内部还是外部客户,应用程序所有者需要不断更新应用程序及其底层基础设施。 这些更新和更改会引发应用程序和基础设施配置的变动。 这类修改,既有可能是积极的改进,也可能降低系统的安全性。 配置漂移正是描述这种现象的术语。
配置漂移如何产生?
随着软件生产和交付系统的复杂度日益提升,配置漂移的可能性也随之增加。 通常,代码从开发人员的工作站流转至共享的开发环境、测试与质量保证(QA)环境,最终到达预发布(Staging)和生产环境。
漂移的影响程度,会随着代码在流水线中传递的距离而加剧。 例如,即使开发人员笔记本电脑上安装的软件包版本与测试服务器上的版本存在细微差异,都可能延误问题的调试。 理想情况下,只有预发布和生产环境应保持完全一致。 企业每天都会多次部署新代码,这无疑增加了压力。
配置漂移的常见成因
沟通不足
有时,上游团队的变更未能及时向下游合作伙伴传达,导致整个下游系统出现故障。
补丁修复
补丁修复是为了解决那些无法等到计划更新才解决的关键问题而对代码进行的修改。 有时,负责解决问题的工程师可能没有在管道中的其他环境中同步更新或记录这些修复,从而导致漂移。 重新引入最初的问题往往可以解决这种漂移。
关键软件包更新
关键软件包更新与补丁修复类似,执行速度很快。 但主要区别在于,关键软件包更新是为了预防未来可能发生的问题。 因此,这类更新也可能像补丁修复一样导致漂移。
缺乏自动化
自动化并不能完全消除配置漂移,但它可以显著降低其发生的概率。
临时性变更
有时开发人员进行的变更只是临时的。 例如,开发人员为了测试某个功能而在测试服务器上安装了新软件包,但忘记将其恢复到原始状态,就会发生漂移。
为什么配置管理如此重要?
配置漂移之所以具有破坏性,是因为它可能在不被察觉的情况下逐渐侵蚀基础设施的根基,就像墙后的小漏水一样。 当配置漂移被发现时,往往需要耗费大量时间才能找到导致它的根本原因,尤其是在紧急情况下,时间是非常宝贵的资源。
在软件开发中,漂移是导致发布周期缓慢的主要原因。 它会导致不必要的工作,并降低开发人员的工作效率。
降低成本
当您对IT基础设施有全面的了解时,可以通过识别重复或过度配置来减少所需的资源总量。
提高生产力
具有稳定和已知配置的集群可以实现批量管理和基础设施构建。 此外,通过减少独特的(或雪花)服务器,可以降低手动管理单个设置的需求。
加速调试
一致的配置使调试团队能够排除配置错误。 团队可以专注于其他潜在原因,更快地解决问题,因为他们不必寻找服务器、服务器集群或环境之间的配置差异。
配置漂移带来的问题
安全风险
不安全的配置是安全漏洞最常见的原因之一。 即使您最初的配置是安全的,配置漂移也可能使其他攻击和网络入侵更有可能发生。
服务中断
配置错误可能导致严重的服务中断,攻击者可能利用拒绝服务(DoS)漏洞或危及关键服务器。 这还不是全部。 如果您修改了网络设备的配置从而影响性能,并且您想恢复到“黄金配置”,如果该配置存在缺陷,恢复服务将需要更长的时间。
不符合规章
严格的安全控制对于遵守诸如ISO 27001、PCI-DSS和HIPAA等法规至关重要。如果不阻止配置漂移,您可能会违反合规性要求。
性能下降
当配置处于预期状态时,它通常处于最佳性能状态。 临时修改可能会通过导致瓶颈和冲突来阻碍网络优化工作。
浪费时间
对您不太熟悉或与网络文档不匹配的网络进行故障排除可能会非常耗时。 这意味着配置偏差可能会导致IT故障排除问题,如果网络处于预期状态,这些问题可能不存在或更容易解决,此外还会导致用户停机。
监控配置漂移时应避免的常见错误
在理想情况下,开发、测试、预发布和生产环境中的所有服务器都应具有相同的配置。 然而,在实际的商业环境中,当软件引入新功能时,应用程序所有者经常会修改基础设施。 监控配置漂移对于确保软件环境尽可能一致至关重要。 配置管理可以降低成本、提高生产力、缩短调试时间,并改善用户体验。
为了尽可能成功地进行监控,组织必须避免一些常见错误,即使他们已经实施了配置管理并监控其配置漂移。
常见的错误包括:
不维护配置管理数据库(CMDB)
保持配置管理数据库(CMDB)的更新是配置管理的重要组成部分。 CMDB提供了一个中心位置,用于检查网络硬件和软件安装的信息。 通过收集每个资产或配置项的数据,可以提高工作场所的可见性和透明度。
未能维护CMDB会使企业面临无法完全理解一个项目的配置如何影响另一个项目的风险。组织可能在不了解后果的情况下破坏其基础设施和安全性。
CMDB可能难以管理,尤其是在资产数量不断增加的情况下,但有效的数据库组织和管理对于成功跟踪配置漂移和理解基础设施至关重要。
没有配置漂移监控计划
组织通常拥有庞大而复杂的基础设施,需要进行监控。 确定最需要监控的组件至关重要。 否则,配置管理可能很快变得难以管理和混乱。
组织必须明确哪些资产对于公司监控和特定业务部门至关重要。 重点应放在最关键的系统上,这些系统会因单位和行业而异。
不进行自动化监控
组织可以通过多种方式监控配置漂移。 然而,有些方法比其他方法更精确和成功。
手动监控配置漂移既昂贵又耗时,而且容易出现人为错误。除非公司的基础设施规模很小,否则手动监控并非最佳技术。
自动化监控是将配置保持在所需状态的最先进和最有效的方法。 专门的配置监控系统可以即时检测漂移,并且通常可以提供包括快速修复在内的解决方案。 这保证了业务的基础设施尽可能快地恢复到所需状态,并将影响降至最低。
如何监控配置漂移?
一旦您意识到配置漂移可能造成的损害,就很容易理解为什么检测配置漂移应该成为首要任务。 理解哪些内容需要保留以及如何将其转换为产生漂移的更改是第一步。
明确监控目标
您可以通过识别对整个组织至关重要的组件以及对每个业务部门至关重要的组件来对您的组织进行分类。
这将因单位而异,在高度监管的行业中可能范围广泛,或者仅关注于狭窄的关键系统文件/应用程序。 系统的重要性将决定监控的频率和严格程度。
设置基准
由于各种设置的不同,生产环境和测试阶段之间总是存在差异。 通过定义每个步骤应是什么样子以及允许的偏差类型,可以为检查漂移创建基准。
早期测试阶段可能比用户验收测试设置或零漂移生产阶段更适合更高的漂移容限。
监控系统
所需的监控级别将根据组织的成熟度、当前系统、工具、需要检查的配置总数以及所需的审查级别而有所不同。 根据要求和合规性,组织内每个部门的监控可能会有所不同。
如何防止配置漂移?
在定义了配置基准和允许的差异之后,监控必须确保基础设施保持在正确的配置中。 如果没有监控策略,构建配置计划和文档就会浪费时间。
可以采用各种方法来监控配置漂移,许多企业会根据其成熟度和合规性要求将多种方法和工具组合起来。
持续手动监控
可以手动检查单个计算机的配置,并将其与已知配置文件进行比较。由于人为因素,该过程仍然容易出错,并且在员工工时方面成本很高。 这种方法只适合小规模、特定服务器集群或基础设施规模适中的公司。
审计
作为配置审计的一部分,一个团队手动检查服务器配置,并将其与指定的模型进行比较。 这些审计可能非常昂贵,因为它们需要专业知识来确定如何构建系统,然后对任何未记录的修改进行彻底调查,以决定是否应该保留它们。
审核小组还会对下次审核期间将应用的配置文件进行必要的调整。 出于时间和成本考虑,审计通常会保留给高价值或合规性高的集群,并且定期执行,通常一年多次。
审计可以确保按照预定的时间表进行一致且可重复的服务器配置。
但是,在下一次审核之前,配置仍会逐渐漂移并保持不变。
实时自动化监控
实时自动化监控是将配置保持在所需状态的最复杂方法。为此,必须创建服务器或服务器组,并说明如何使用专用服务器设置工具对其进行配置。
这些程序将使用轻量级代理来监视组中服务器的配置,并将其与其定义进行比较。
此自动化过程会立即对漂移发出警告,并且通常会提供多种修复服务器漂移的选项。
总结
计算机或设备之间不一致的配置项(CI)是配置漂移的根本原因。在数据中心环境中,配置漂移是自然发生的,尤其是在软件和硬件的修改是在没有彻底记录或跟踪的情况下动态完成的。
许多高可用性和灾难恢复系统的故障都归因于配置漂移。 管理员应仔细记录硬件设备的网络地址,以及安装在设备上的软件版本和进行的升级,以最大限度地减少配置漂移。