当前位置: 首页 > 科技观察

如何保护您的CI-CD管道

时间:2023-03-15 18:42:20 科技观察

在CircleCI漏洞之后,对于任何依赖CI/CD基础设施的团队来说,现在是审查其管道安全性的好时机,因为他们可以采取一些积极的措施。最近,我们了解到CircleCI遭到入侵。他们向所有客户强烈建议:立即轮换存储在CircleCI中的所有秘密。从2022年12月21日到2023年1月4日,或者您在CircleCI中轮换秘密的任何日期,检查他们系统的内部日志以了解未经授权的访问。CircleCI团队还使所有ProjectAPI令牌失效,并通知用户他们需要更换。这一刻可以作为任何依赖CI/CD基础设施的团队的转折点,作为审查其管道安全性的机会。虽然CircleCI团队制定的步骤是可靠的,但它们是对事件的反应。DevOps团队可以采取一些步骤来变得更加主动。CI/CD中的身份管理和访问控制如果您是这个主题的新手,持续集成/持续交付,即CI/CD管道,是一种通过一致的自动化流程交付应用程序的方法。开发人员将他们的代码推送到GitHub、GitLab、AzureDevOps或BitBucket等存储库主机,这将启动构建应用程序、测试它并最终将该代码部署到生产环境的自动化过程。虽然CI/CD管道允许团队更快地工作并减少手动错误的可能性,但它们也为恶意行为者提供了新的攻击面。确保攻击者无法利用您的CD/CD管道的最佳方法之一是锁定有权访问哪些工具和资源的人员。如果未明确授予某人访问权限,则不应授予他们访问权限。这可以包括密码、访问密钥和其他访问控制机制,并且应该尽可能细化地执行。虽然将访问权限授予DevOps团队的所有成员、开发人员和工程师可能很方便;这是一个非常糟糕的主意,因为它大大增加了单个受感染帐户允许攻击者完全访问所有相关系统的机会。我们鼓励每个人尽可能实施单点登录(SSO)或使用基于角色的访问控制(RBAC)。这些可以帮助您严格限制访问权限,以便只有合适的人才能访问相关系统。保护非人为访问我们已经讨论了人为访问,但正确识别和管理对第三方服务和工具的访问也很重要。在部署CI/CD管道的任何元素时,您应该确切地知道哪些系统和服务将发送请求以及这些响应将发送到何处。如果恶意代码确实进入了您的管道,请确保它无法打电话回家或与未经授权的用户通信。当依赖基于容器的系统时,请确保使用身份验证器对机器进行身份验证。验证器验证容器的属性,只有在批准的情况下才授予范围内的访问级别。关于非人类访问的最后一点说明:您应该尽快消除任何未使用的资产。这意味着一旦不再需要容器和虚拟机就销毁它们,并在第三方工具未被积极使用时阻止对它们的访问。不要暴露CI/CD管道中的秘密攻击者在任何系统中寻找的第一件事就是获得进一步访问的方法,即硬编码凭证,也称为秘密。虽然您不应该以明文形式存储机密似乎很明显,但这种情况发生的频率比您预期的要高。鉴于CI/CD管道的复杂性和它们发展的速度,它通常是开发人员在时间紧迫之前求助的最简单、最快捷的解决方案。也很容易忽视秘密在您的管道日志中的显示方式,如果编辑不当,它们可能最终会出现在哪里。幸运的是,大多数CI/CD提供商都提供内置解决方案,允许您存储凭据,然后在需要时以编程方式调用它们。或者,大多数解决方案都提供了一种将密钥管理器(例如HashicorpVault)集成到您的管道中的方法。将明文凭据排除在管道之外的一个关键步骤是及早实施隐蔽检测。最好的情况是开发人员在提交之前捕获硬编码的秘密,他们可以在本地机器上使用预提交挂钩或预推送挂钩、预接收挂钩或在CI环境中进行。自动秘密轮换秘密管理的另一个重要元素是控制每个凭证的生命周期。秘密保持有效的时间越长,攻击者发现和使用它的可能性就越大。许多凭据长期存在的最大原因之一是手动轮换密钥的痛苦以及对破坏生产系统的恐惧。这是自动密钥轮换节省时间的地方。大多数平台提供商(如AWS、GoogleCloud和AzureDevOps)都提供或提供一种直接的方法来编写自动密钥轮换脚本。这可以手动或按固定时间表完成。自动密钥轮换可以帮助每个人在紧急情况下安心,因为它允许在事件之外测试故障和替换过程。自动创建机密时,请记住将这些凭证正确地限定在它们的任务范围内。始终遵循最小特权原则并限制对完成手头工作所需的数据和系统的访问。主动监控可疑行为在事件发生后寻找可疑活动可以帮助您确定哪里出了问题,或者谁在攻击期间访问了哪些系统。但是您无需等待坏事发生就可以利用您的日志。当大多数人考虑主动推动CI/CD时,目的是观察资源消耗或可用性。但是,您也可以为可疑活动配置警报,例如意外添加特权角色或尝试连接到未经授权的服务。保护CI/CD管道的另一种方法是设置陷阱,入侵者可以在整个环境中触发这些陷阱。这些通常被称为蜂蜜代币。Honeytokens是看起来像真正的秘密但对任何服务都无效的凭据,但在使用时它们会触发警报并报告用户地址。一致部署honeytokens的一种方法是使它们成为自动化环境构建的一部分,利用Terraform和我们的开源项目ggcanary等工具。可以在CI/CD管道以及代码存储库或项目管理系统中创建和部署Canary令牌。您的CI/CD安全是一项共同责任用户对他们的服务提供商的期望之一是他们将确保他们的平台安全。事实上,恶意行为者将继续渗透和利用任何和所有目标,包括CI/CD提供商。最终保护您的管道是所有相关人员的共同努力,包括您的团队。虽然不幸的是CircleCI遭到破坏并且许多客户受到影响,但我们还想呼吁任何依赖CI/CD管道的人采取行动来审查他们的安全实践。本文仅列出了几种保护CI/CD管道的方法。有关CI/CD安全的更多信息,我们建议查看OWASP十大CI/CD安全风险。