跳到内容

基础设施即代码安全速查表

简介

基础设施即代码 (IaC),也称为软件定义基础设施,允许将基础设施组件定义为代码,从而能够更快、更一致地进行配置和部署,并实现在不同环境中重复部署。

安全最佳实践

以下是一些可以轻松集成到软件开发生命周期中的IaC安全最佳实践

开发与分发

  • IDE 插件 - 在集成开发环境 (IDE) 中利用标准安全插件,这有助于早期检测潜在风险,并大幅减少开发周期后期解决问题所需的时间。TFLint、Checkov、Docker Linter、docker-vulnerability-extension、Security Scan、Contrast Security 等插件有助于进行IaC的安全评估。
  • 威胁建模 - 在开发周期早期构建威胁建模视图,以确保对代码的高风险、高流量方面有足够的可见性,并灵活地将安全措施贯穿始终,以确保资产得到安全管理。
  • 秘密管理 - 秘密是指用于身份验证的应用程序令牌、密码和SSH(安全外壳)密钥等机密数据和信息。问题不在于秘密本身,而在于您存储它们的位置。如果您使用简单的文本文件或Git等SCM,那么秘密很容易被暴露。truffleHog、git-secrets、GitGuardian 等开源工具可用于检测此类脆弱的秘密管理。有关更多信息,请参阅秘密管理速查表
  • 版本控制 - 版本控制是跟踪和管理软件代码变更的做法。确保所有IaC变更都使用正确的信息集进行跟踪,这有助于任何回滚操作。重要的一点是,您应该将这些变更与它们支持的功能一起签入,而不是单独签入。一个功能的(基础设施)要求应该是该功能分支或合并请求的一部分。Git通常用作源代码版本控制系统。
  • 最小权限原则 - 根据最小权限原则定义访问管理策略,并考虑以下优先事项

    • 定义谁有权或无权创建/更新/运行/删除脚本和清单。
    • 将授权IaC用户的权限限制在执行其任务所必需的范围内。IaC脚本应确保其创建的各种资源的权限限制在它们执行工作所需的范围内。
  • 静态分析 - 独立分析代码,识别仅与IaC本身相关的风险、错误配置和合规性缺陷。kubescan、Snyk、Coverity 等工具可用于IaC的静态分析。

  • 开源依赖检查 - 分析操作系统包、库等开源依赖项,以识别潜在风险。BlackDuck、Snyk、WhiteSource Bolt for GitHub 等工具可用于IaC的开源依赖分析。
  • 容器镜像扫描 - 镜像扫描是指分析容器镜像内容和构建过程,以检测安全问题、漏洞或潜在风险的过程。Dagda、Clair、Trivy、Anchore 等开源工具可用于容器镜像分析。CI/CD 流水线与合并报告 - 在CI/CD流水线中启用安全检查,可以分析每个代码变更,排除手动干预的需要,并能够维护合规性历史。结合合并报告,这些集成提高了安全IaC代码库的开发速度。Jenkins 等开源工具可用于构建CI/CD流水线,而DefectDojo和OWASP Glue则有助于将各项检查结合起来,并在单个仪表板中可视化检查结果。
  • 制品签名 - 在构建时对制品进行数字签名并在使用前验证签名数据,可以保护制品在构建和运行时之间不被篡改,从而确保制品的完整性和来源可靠性。TUF 等开源工具有助于对制品进行数字签名。

部署

  • 资产清单管理
    • 投入使用 - 每当资源被部署时,确保该资源被标记、跟踪并作为资产清单管理的一部分进行日志记录。
    • 退役 - 每当启动资源删除时,确保底层配置被擦除,数据被安全删除,并且资源从运行时和资产清单管理中完全移除。
    • 标签化 - 正确地标记云资产至关重要。在IaC操作期间,未标记的资产很可能导致幽灵资源,这使得在云环境中难以检测、可视化和获得可观察性,并可能影响姿态,导致偏差。这些幽灵资源会增加计费成本,使维护变得困难,并影响可靠性。唯一的解决方案是仔细进行标签化并监控未标记的资源。
  • 动态分析 - 动态分析有助于评估将与之互操作或在其上运行的任何现有环境和服务。这有助于发现由于互操作性而带来的潜在风险。ZAP、Burp、GVM 等开源工具可用于动态分析。

运行时

  • 基础设施不可变性 - 不可变基础设施背后的理念是按照精确的规范集构建基础设施组件。不容许偏差,不容许更改。如果需要更改规范,则会根据更新的要求配置全新的基础设施,并将旧的基础设施作为过时版本淘汰。
  • 日志记录 - 记录是监控风险的关键方面。在配置基础设施时,应启用日志记录——包括安全日志和审计日志——因为它们有助于评估与敏感资产相关的安全风险。它们还有助于分析事件的根本原因和识别潜在威胁。ELK 等开源工具可用于日志分析。
  • 监控 - 持续监控有助于发现任何安全和合规性违规行为,有助于识别攻击,并在发生此类事件时提供警报。某些解决方案还结合了人工智能等新技术,以早期识别潜在威胁。Prometheus、Grafana 等开源工具可用于云基础设施的监控。
  • 运行时威胁检测:实施运行时威胁检测解决方案有助于识别异常应用程序行为并在运行时发出威胁警报。Falco 等开源工具可用于运行时威胁检测。某些应用程序(如 Contrast (Contrast Community Edition))还可以在运行时检测应用程序上的OWASP Top 10攻击,并帮助阻止它们,从而保护和确保应用程序的安全。

参考资料