原文发表于Magalix的博客,作者是Andrew Zola
在企业向云计算迁移的推动下,GitOps的采用正在上升。我们可以把它的日益普及归功于它在简化基础设施管理方面的效率。因此,云安全是与之相伴的一个重要组成部分。
虽然GitOps帮助企业加快交付和上市时间,但它也有助于提高持续集成(CI)和持续交付(CD)管道的安全性。它可以作为一个基础,开发人员在整个软件开发生命周期(SDLC)中识别和解决潜在的漏洞。
基础设施即代码(IaC)和GitOps一起实现了CI、CD、版本控制和协作。在这种情况下,DevOps团队将只与Git界面互动。所有的集成和部署都将完全自动化。
当你在集中式存储库中管理应用程序、IaC和状态时,你可以将大量的IT操作自动化。这种方法减轻了开发人员的负担,因为它通过代码管理安全和合规性。
利用CI/CD管道和IaC的企业在实施前使用一系列线性测试和门槛来部署更新。它还补充了敏捷和DevOps协议和最佳实践。
在云环境中,如果应用流量突然增加,你可能会有一些性能问题,(当然)用户体验不佳。为了解决这个问题,你可以快速增加云原生应用程序的资源分配。
你可以定义特定的资源增量,并将这些变化推送到资源库中。无论何时,这些变化都会被其他开发者快速审查和验证,并被批准用于生产和部署。
这些类型的事件会初始化 Git 操作员,并触发 GitOps CI/CD 管道。Git操作者必须比较状态,将新的配置识别为状态变化,并自动协调底层基础设施以匹配所需状态。
然而,你必须监测潜在的故障,这些故障会自动生成并通知。在没有潜在问题的情况下,它将自动修改你的资源分配,以满足新的用户需求。如果它失败了,或者你最终出现了配置错误,你可以简单地回滚到以前的状态并重新开始。
例如,你可以利用GitOps来控制变化,并将其作为一个单一的真相来源来验证。
版本控制可以跟踪已发送的内容,并允许你按需回滚。从提交历史中对评论、审查以及对你的仓库所做的决定进行审计跟踪。
在Git上管理你所有的YAML文件,快速检查你是否符合安全策略。由于访问策略是在配置文件中声明的,你可以快速了解谁有访问权限,访问什么。
作为一个单一的真理源,代码和基础设施变化的标准工作流程与漂移的自动警报提高了可靠性,并减少了人为错误的风险。在这种情况下,权限、安全扫描和测试有助于使你的更改更加安全和高度可靠,避免基础设施漂移。
在先进的GitOps环境中,你还可以对Git存储库进行修改,并通过标签自动应用到实时基础设施,以进行质量保证(QA)测试。
几年前,早期采用GitOps的用户为他们的基础设施代码和应用程序代码维护了两个或更多独立的Git存储库。两个不同的团队经常管理这些。这种方法旨在限制风险半径,但最近,情况开始发生变化。
GitOps把几乎所有东西都视为代码的能力对安全有巨大影响。当所有的安全策略都被编码时,你可以很容易地在版本控制中持有一切。在这种情况下,所有的变化都会被修改并推送到一个自动化的管道中,进而验证、部署并持续监控所有的变化。
GitOps是一个单一的真相来源,确保了不可更改性和开发人员的速度,从而有助于提高云安全。在这种情况下,你不必等到开发周期结束时才考虑安全测试,因为你提前将安全问题转移到了左边。
云原生应用程序的安全测试是每个迭代的一部分。例如,编写策略并在提交时执行这些策略可以提供早期测试,并对可能在管道末端产生安全问题的变化进行反馈。
这意味着你可以在代码进入生产阶段之前就发现并消除错误和漏洞。GitOps的安全方法是对持续集成和CI/CD协议的补充,确保每个人都能在管道中遵循安全的最佳实践。
政策即代码"本质上是一个编纂政策的概念。通过将安全策略提交给代码,你写了一个代码计划来自动化和管理安全策略。
当实施用高级语言创建的代码策略时,你必须利用一个策略执行引擎或平台。这种方法通过在特定集群内或在整个公司内执行某些规则,帮助维持组织内的安全标准。
这些基于代码的规则存在于文本文件中,确保开发团队始终遵循最佳实践。
通过将一切都视为代码,GitOps有助于提高开发管道中几个不同元素的安全性(包括策略和配置)。当所有这些结合在一起时,开发人员可以通过版本控制更快地迭代,启用持续集成、测试自动化和Git的其他功能。
当开发者利用自动化时,他们对基础设施模板有完全的可审计性和版本控制。这种方法有助于提高开发人员的速度,使他们的关注点干净分离。这意味着你不需要访问CI/CD平台或生产环境来推送代码到存储库。
这种分离有助于加强安全协议,并允许团队采用最小特权的做法。这转化为一个小得多的攻击面,只有少数经过验证的用户才能访问。
如果你使用Kubernetes的外部秘密,你也可以将它们安全地存储在你的云原生秘密存储中。这种方法可以自动按需快速轮换任何秘密,而且不受Git的影响。你还可以对每个秘密使用精细的基于角色的访问控制(RBAC)。
在安全方面,GitOps也让开发者负责。它通过在整个SDLC中嵌入安全扫描和护栏,使整个过程更容易。
当你用代码加固你的安全态势时,你会对以下威胁保持警惕。
任何潜在的错误或与设定状态的分歧都会在开发周期的早期被发现。所以,你可以把GitOps作为你的策略,把安全问题进一步向左转移。
如果你面临对管道的改变导致数据泄露的情况,你可以回到GitOps并触发快速响应来解决这些问题。当你把IaC存储在存储库中时,你也可以快速确定其中受影响的代码行。
当有可能快速识别攻击的大小和规模时,你可以更快地做出反应和恢复。这种方法有助于降低风险,减少漏洞发生的可能性。
在Magalix,我们的业务是通过政策即代码(PaC)以编程方式执行安全标准。这种方法有助于通过CI/CD为云原生应用程序建立以开发人员为中心的经验。
在您的组织内执行PaC有助于。
在你的云原生环境中使用正确的游戏手册和GitOps工作流程,你的DevOps团队可以在不影响安全或合规性的情况下更快地进行创新。你还可以为你的团队量身定做