基础设施即代码(IaC) 是一种疾速倒退的技术,利用软件开发准则和实际,用软件配置基础设施。与传统的 IT 基础架构相比,IaC 能够更高效地交付软件。自动化还解锁了弹性配置的能力,该性能可在不同的负载下无效地分配资源。

只管 IaC 有很多劣势,但配置不当的 IaC 也会在整个零碎中迅速流传谬误配置。IaC 的自动化配置可能提高效率,也能够放大谬误,而这些谬误通常会对平安产生不利影响。保持 IaC 最佳实际是升高胜利供应链网络攻击和破绽危险的无效办法,思考以下8个 IaC 最佳实际,为企业平安保驾护航。


扫描 IaC 代码,排查谬误配置

IaC 是一个功能强大的工具,但同时也存在肯定平安危险,例如在整个云基础设施中流传小的配置谬误。谬误配置可能的模式有:不平安的默认配置,可公开拜访的 S3 buckets 或未加密的数据库。

SAST 和 SCA 扫描是特色代码的最佳形式,然而很少有企业优先思考用此类形式爱护 IaC。对 IaC 代码进行平安扫描能够无效缩小因为配置谬误导致的裸露和破绽。此外,能够通过扫描新的 commit 以查找对云部署的更改,来检测和更正与其原始模板匹配的根底构造。


将自动化 IaC 平安扫描嵌入开发工作流程

在破绽进入生产环境之前发现并修复比后置的补救伎俩更无效。因而通过将对 IaC 谬误配置的查看嵌入到开发人员工作流中,开发人员可能提前发现并纠正问题。能够采纳pre-commit的模式,以便在开发人员保留其工作时测试代码,也能够应用拉取申请主动执行的分支爱护规定,或者作为在CI中运行的平安构建规定。在开发人员的工作流中运行平安扫描还能够确保开发人员及时取得精确信息,并修复谬误配置,进步修复效率。


辨认并纠正环境偏移

环境偏移检测(不同部署环境的配置与其模板不同步的状况)和修复谬误配置是 IaC 的最佳实际之一。配置中的偏差通常产生在保护期间,并可能导致环境(如测试和生产)变动。随着工夫的推移,这会导致配置偏离平安状态。

环境偏移可能是由大意的谬误引起的,而由此造成的问题修复难度高并且可能导致业务宕机,造成巨大损失。通过将 IaC 与理论生产配置进行比拟来辨认偏移,但手动实现此操作既繁琐又耗时。因而,偏移检测是 IaC 平安扫描工具的不错抉择。


避免硬编码密钥渗透到 IaC 中

IaC 最宽泛认可的最佳实际之一是防止部署蕴含凭证的代码。硬编码密钥能够在特色代码或 IaC 代码中被引入,而进入 IaC 代码的密钥有可能对组织的安全性造成毁灭性的影响。硬编码密钥的存在也使得因为明码破解而导致相干帐户泄露,让歹意攻击者无隙可乘。因而如果硬编码密钥保留在程序中,会导致身份验证措施失败,因为任何有权拜访我的项目的人都能够查看这些硬编码密钥。与扫描 IaC 平安配置谬误十分类似,初始评估应在主分支和版本历史记录中的 IaC 代码中查找硬编码密钥。最好的办法是通过扫描 commit 来避免这些硬编码密钥进入版本控制系统。


缩小代码透露的工夫和影响

无心泄露源代码可能导致知识产权偷盗、硬编码密钥的裸露等等。源代码和 IaC 代码通常位于同一存储库中,裸露 IaC 代码的危险泛滥,其中包含攻击者通过解析代码找到对应的破绽、配置谬误和破解密钥的危险。

建设协定以防止代码透露,同时制订应急打算,以防产生透露。应考察潜在的可疑用户流动,例如应用 IaC 下载、克隆或分叉存储库。强制施行最小特权策略有助于缩小代码透露危险。此外执行定期检查,避免源代码持续公布到公共存储库或代码共享站点,并确保疾速解决任何源代码透露。公开专有 IaC 代码的工夫越长,歹意攻击者就越有可能借此进行发动攻打。因而,设置警报机制,可能尽可能升高代码透露产生的危险。


建设统一的工具管理机制规范

IaC 平安中常常被忽视的一个方面是 DevOps 工具和根底构造自身的平安设置和策略。强化身份验证、确保最小特权准则以及强制施行职责拆散,在建设有利于平安的协定方面都大有裨益。开发者凭证是攻击者和其余歹意行为者的无力工具,但施行治理保护措施有助于避免单个被盗用帐户危及零碎的其余局部或拜访 IaC 工具。

实现策略的统一施行是 IaC的最佳做法之一。Google 的 SLSA 框架(Supply chain Levels for Software Artifacts) 蕴含无关确保源代码完整性的具体指南,此指南旨在缩小代码篡改的机会,并避免歹意流动被忽视。这些要求旨在使对 IaC 的更改可跟踪和审查。建设统一的治理规范,要求软件供应链中的每个零碎都是平安的,用户无奈在没有额定监督的状况下更改零碎。


避免 IaC 代码篡改

如果开发人员的帐户受到入侵,攻击者能够篡改 IaC 代码,从而造成严重后果,例如使数据库可公开拜访。因而,不仅要强化开发人员的帐户,还须要明确 IaC 配置何时产生更改,并验证更改是否通过批准。在 SDLC 的不同阶段之间定期比对,通过辨认源代码不匹配的点,帮忙升高代码篡改危险。同时通过比拟构建生命周期的不同阶段,确保代码完整性,以升高篡改代码的危险。如前所述,IaC 会放大谬误配置,未经受权的更改可能会导致 IaC 模板更改或配置篡改,从而导致代码透露,因而检查和确认正在执行更改的主体非常要害。

要害代码监控是升高 IaC 篡改危险的另一个路径。从实质上讲,要害代码监控是在每次产生更改时的收回警报,对于特色代码,必须审慎应用要害代码监控。但 IaC 代码是为应用程序初始化和部署的根底构造的模板,因而应用要害代码监控再适合不过。因为基础架构通常不会更改,但产生更改时应具备高可见性,以确保更改不是歹意的。


全面理解平安环境

繁冗简单的环境是保障平安的最大妨碍。全面理解平安环境十分重要,因为这能无效缩小修复平安问题所需的响应工夫。通过改善平安环境,保障开发平安,防止代码透露或代码被篡改。此外,能够通过多个事件和工具的环境更无效地确定修复的优先级。这种办法能够产生深度进攻,从而升高产生破绽的危险以及在破绽对企业和组织产生的影响。


参考链接:

Supply chain Levels for Software Artifacts
https://github.com/slsa-frame...