赞
踩
最初发表在Magalix的博客上的客座文章,作者是Andrew Zola
GitOps团队正在将安全问题向左转移。这对任何寻找坚实有效的计划来保护整个生态系统内的应用程序、基础设施和其他流程的人来说都是个好消息。
其主要目的是提高成果,减少花在安全上的时间。GitOps有一大堆开箱即用的好处。这些好处包括改善企业基础设施管理协议,加速开发,以及(当然)提高安全性。
GitOps是一种利用基于Git的代码版本控制的开发方法。它也经常自动化。这意味着Git定义和控制工作流程,并在各系统之间进行同步。这意味着你可以在基于容器的持续集成/持续交付或部署(CI/CD)环境的每一个方面添加版本控制。
Git已经发展成为从事开源和专有软件开发项目的开发人员的标准。遵循GitOps的做法也有很多不同的方式,但在大多数情况下,我们遵循Weaveworks(一家创造了这个术语的初创公司,也是GitOps最有力的倡导者之一)制定的最佳实践。
GitOps之所以受欢迎,是因为Git是开发人员可以互动和协作的唯一界面,而集成和部署过程则完全自动化。这种方法使所有基础设施的模板都可以被审计,实现完整的版本控制,并提高开发人员的速度。
GitOps方法论也包含了持续安全的概念。这种方法确保安全是每个迭代的核心,允许开发人员在应用程序上线之前就消除所有错误和漏洞。
要用 "安全即代码 "来保护GitOps流程,请遵循以下步骤。
每当你在Git上构建应用程序时,当前的开发阶段可以无缝衔接到理想状态。GitOps本质上是一套流程,允许向理想状态收敛。
你可以利用版本控制供应商提供的工具和功能,利用权限管理。如果你以一种有组织的方式设置你的环境,你可以很容易地分配所有权、质量门和启用不同类型的访问。
然而,没有适当的批准,任何修改都不会发生。在这种情况下,你应该定义所有者,并确保团队对具体的修改进行审核。
GitOps迫使团队思考包括在环境即代码中的一切。因此,你会有基础设施即代码(IaC)、配置即代码(CaS)、策略即代码(PaC)、安全即代码(SaC),以及其他任何你能想到的代码。
但是,不要把你的秘密当作代码来存储。
与DevSecOps相比,GitOps在实施方面的规定性更强。它将Git作为整个环境的单一真理来源。
GitOps允许你将更多的部署过程自动化。GitOps的开发者必须编写代码,在本地进行测试,并提交拉动/合并请求。一旦你提交了代码,在为安全扫描提供必要的工具后,就必须继续前进。
在软件开发生命周期(SDLC)中尽可能早地开始安全扫描总是更好。这种方法也允许软件工程师以他们已经习惯的方式提供反馈。
你的VCS和CI管道是一个很好的地方,可以开始嵌入基础设施代码库的安全扫描。
使用PaC在整个SLDC中执行安全和合规性是非常关键的。在这种情况下,最好在将IaC模板提交到Git存储库之前对其进行扫描。这种方法可以确保开发人员获得持续不断的反馈。
只要你有持续和频繁的反馈,你就可以快速修复错误和错误配置。定期的安全扫描还可以确保你执行最新的安全最佳实践,并抓住代码中的潜在问题。
Git中的机密信息是很危险的(还记得Uber的数据泄露事件吗)。这是因为提交到git仓库的代码可以迅速在多个地方传播。因此,对敏感数据进行加密是企业的当务之急。
然而,保持关键业务数据的机密性是一个挑战,而且可用的选项往往很复杂。因此,在GitOps工作流程的每个步骤中,所有的秘密都必须得到保护和控制。
如果你想知道为什么我们仍然选择在GitHub上存储敏感数据,答案很简单。Git允许所有修改的修订历史,备份敏感数据,提供对敏感数据的安全访问,并提供统一的源代码管理方法。
GitOps的最佳实践要求你迅速解决SLDC期间出现的安全问题。这是确保显著速度和敏捷性的最佳方式。如果不主动解决安全问题,你就有可能在GitOps开发团队中产生摩擦。
在嵌入和执行安全协议时,你也应该专注于终端用户或开发人员。这是因为,当安全问题不直观时,开发人员是臭名昭著的,他们会一并规避掉。
产品所有者和项目经理应该自觉地让开发人员容易遵守安全协议。在这种情况下,你应该创建补救和优先级准则与违规的行项目。
在你的存储库中使用托管的IaC模板和版本控制来对你的云环境进行修改。你也可以通过利用相同的模板来执行所有不可变的基础设施和调和循环。
值得注意的是,通过对运行中的资源进行手动修改来解决问题,偶尔会导致云漂移。这使得拥有适当的可见性和监控以实现自动安全扫描变得至关重要。这种方法也将有助于让你的开发团队对云漂移负责任。
每当出现云漂移,你必须立即恢复到以前的状态。另外,你可以在模板中添加对策,并通过管道将其推送到运行环境中。
IaC模板必须与部署的基础设施的图片完全一致。即使你有轻微的差异,当你的代码进入生产时,你也会产生巨大的风险。
当你的所有代码进入生产时,应用程序或基础设施的实施并没有结束。这使得审计对于部署整个应用程序和基础设施至关重要。
我们可以将审计性定义为对记录的检查,以验证其准确性。在这种情况下,这将是一个系统性的评估,以确定一切是否符合先前建立的标准。
你必须分析和比较诸如日志、监控和可追溯性等内容。由于Git已经有了一个审计工具,它存储了所有与单一真理之源的任何变化有关的日志。由于GitOps的审计有多种形式,Git将日志和自定义元数据存储在云端。
当你审计并跟踪进展时,你可以通过快速打补丁来解决现有的错误配置。当你积极从事这项活动时,你应该设定一个基准。通过持续接触安全反馈,你的团队可能会下意识地防止潜在的错误。他们甚至可能会多走几步路,自己去寻找和修复这些错误。
只有在无缝协作的情况下,GitOps才能发挥作用。因此,GitOps工程师在部署基础设施时,不能不把它放在一些合适的安全护栏里(不假设它是完美的)。
确保成功的最好方法是让开发人员和安全团队紧密合作。这种方法将有助于在每次迭代中改进流程。与你的安全团队合作也很关键,以确定哪些可以通过,哪些不能通过。他们也可以与开发人员分享他们的知识和技巧,了解什么是可行的,什么是不可行的。
当所有这些结合在一起时,你将能够加强你的安全态势。当所有利益相关者之间有密切的合作和协议时,实施自动化协议就会更容易。
图。嵌入GitOps工作流程中的安全即代码
在Magalix,我们的业务是通过PaC以编程方式执行安全标准。当GitOps团队将PaC和SaC整合到他们的工作流程中时,它有助于建立以开发人员为中心的安全体验,为云原生应用程序提供持续部署。
在执行PaC时,企业还可以通过一次点击在集群中应用治理标准,在云环境中部署政策检查,并验证基础设施的合规性协议。
这种方法还允许开发团队在整个SLDC中创建和执行集中的游戏手册。这将有助于加速开发,实施最佳实践,并跨迭代自动化安全协议。
GitOps中的SaC也将在促进创新和上市时间方面发挥很大的作用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。