关注公众号获取更多文章

    

通过修补扫描增强 IaC 安全性??_基础架构

  无论是在云上还是在设置 AIOps 管道,自动化都简化了部署的设置、配置和安装。基础设施即代码(IaC)在基础设施的建立中起着重要作用。使用 IaC 工具,您将能够描述所需的基础结构的配置和状态。流行的 IaC 工具包括  Terraform、Pulumi、AWS CloudFormation 和  Ansible;它们中的每一个都有不同的可能性来自动化云和本地基础设施的部署和管理。

    随着应用程序的日益复杂和软件开发中对安全性的高度关注,SonarQube 和 Mend 工具更加容易受到关注。正如我 在上一篇文章中所解释的,SonarQube 是一种代码分析工具,旨在通过发现多种编程语言的错误和漏洞来帮助开发人员获得高质量的代码。SonarQube 很好地集成到持续集成/持续部署的管道中,在强制执行编码标准的同时产生持续反馈。

Mend 处理软件组合分析 (SCA),帮助组织管理和保护其开源操作系统组件。Mend(前身为 WhiteSource)是一个集成良好的安全解决方案,具有 IaC 工具,用于改善基础设施部署的安全状况。Mend 可自动执行 IaC 代码的漏洞扫描和管理,使其客户能够在开发周期的早期管理孵化的安全问题。

用于基础架构即代码的 Terraform

        Terraform 是 HashiCorp 开发的工具,它使开发人员和运营团队能够使用称为 HashiCorp 配置语言 (HCL) 的声明性语言来定义、配置和管理基础结构。HCL2 是当前版本。Terraform 是一种与提供商无关的工具,它提供了使用单个工具跨多个云平台和服务管理资源的能力。

Terraform 的一些突出功能包括:

  1. 声明性语法:这是一种告诉用户他们想要什么的方式,Terraform 基本上弄清楚了如何创建它。
  2. 规划和应用工作流:Terraform 的 plan 命令显示在实际应用更改之前将进行哪些更改。这降低了意外修改的风险。
  3. 状态管理:Terraform 会跟踪您的当前状态。这将打开增量更改并检测偏移。
  4. 模块化:可重用的模块允许团队在项目之间标准化和共享基础设施元素。

生态系统中的 IaC 工具

    除了 Terraform 之外,许多其他工具还根据用户的需求以及他们使用 IaC 工具的位置提供不同的功能。

  1. AWS CloudFormation:专为 AWS 设计,它提供与 AWS 服务的深度集成,但缺乏多云支持。
  2. Azure 资源管理器 (ARM) 模板:类似于 CloudFormation,但适用于 Azure 资源
  3. Google Cloud Deployment Manager:Google Cloud 的原生 IaC 解决方案
  4. 普鲁米:允许开发人员使用熟悉的编程语言( 如 Python、TypeScript 和 Go)来定义基础架构
  5. Ansible:虽然 Ansible 主要是一种配置管理工具,但也可用于基础架构配置。
  6. Chef 和 Puppet:可扩展用于基础架构预配的配置管理工具

通过 Mend 增强安全性

    随着 IaC 采用率的增长,对更好的安全管理的需求也在增长。这就是 Mend 为 IaC 代码提供强大的扫描和安全解决方案的地方。Mend 将能够顺利地融入开发过程,并对 Terraform 和其他 IaC 工具进行持续的安全扫描。以下是 Mend 在不影响生产力的情况下增强安全措施的一些方法:

  • 自动扫描:Mend 可以自动扫描您的 IaC 代码,以查找漏洞、错误配置和合规性问题。
  • 早期检测:如果与  CI/CD 管道集成,Mend 将在开发阶段的早期阶段发现安全漏洞,从而减少以后修复它们的成本和工作量。
  • 自定义策略:团队可以开发自定义安全策略,以满足其特定需求和合规性要求。
  • 修正指南:在检测到问题后,Mend 会提供明确的说明,说明应采取哪些步骤来纠正问题,帮助开发人员及时解决安全问题。
  • 合规性映射:根据不同标准或法规的特定要求,通过修补映射发现的问题,以便组织可以保持合规性。
  • 持续监控:即使在部署后,Mend 也会继续监控您的基础架构,以发现新的漏洞或偏离安全配置。
  • 与 DevOps 工具集成:Mend 与著名的版本控制系统、CI/CD 平台和票务系统集成,使其成为现有工作流程的一部分。

    这种主动的安全方法使团队能够快速行动和创新,同时在 IaC 实践中采用 Mend 时显著降低安全漏洞、错误配置和违反合规性的风险。

除了 Terraform,Mend 还支持以下 IaC 环境及其配置文件:

  • 二 头 肌
  • 云形成
  • Kubernetes
  • ARM 模板
  • 无服务器
  • 掌舵

将 Mend 与 GitHub 集成

    Mend 提供了多个集成选项和工具,GitHub 用户可以使用这些选项和工具进一步推动其存储库中的安全性和漏洞管理。

Mend 在 GitHub 上的展示概述
修补 GitHub.com 应用程序

    此 GitHub 应用程序同时具有 SCA 和  SAST 功能。它可以直接从 GitHub Marketplace 安装,以便轻松与您的仓库集成。

修补螺栓

    Mend Bolt 执行存储库扫描,以查找开源组件中的漏洞。它作为 GitHub Marketplace 上的应用程序免费提供,支持 200 多种编程语言,同时支持以下功能:

  • 扫描:每次“推送”后都会自动发生扫描。它检测开源库中的漏洞,并且每个存储库每天有五次扫描限制。
  • 易受攻击的开源库的开放问题
  • 依赖树管理,以及依赖树的可视化
  • 检查建议的漏洞修复程序
  • 与 GitHub Checks 集成可阻止包含新漏洞的拉取请求被合并。
修补工具包

Mend 维护着一个 GitHub 组织“mend-toolkit”,其中包含托管集成知识库、实现示例和工具的各种存储库。这包括:

  • 修补实现示例
  • 修补 SBOM 导出器 CLI
  • 分析 YAML 文件的脚本
  • 将 SPDX 或 CSV SBOM 的工具导入 Mend
修补示例存储库

在 mend-toolkit 组织下,有一个“mend-examples”存储库,其中包含 Mend 中几种扫描和结果提取技术的示例。这包括:

  • SCM 集成
  • 集成自承载存储库设置
  • 集成 CI/CD
  • 策略检查示例
  • Mend 按语言确定扫描的优先级
  • 术语 Mend SAST 和 Mend SCA 实现

为 GitHub 设置修补程序

在本文中,您将学习如何设置 Mend Bolt。

1. 安装 Mend 应用程序

安装适用于 GitHub 的 Mend Bolt

通过修补扫描增强 IaC 安全性??_数据结构_02

  • 选择存储库后,单击“安装”并完成授权。
2. 完成修补注册
  • 您将被重定向到 Mend 注册页面。
  • 如果您是新 Mend 用户,请完成注册,然后单击提交。

通过修补扫描增强 IaC 安全性??_应用程序_03

修补注册

通过修补扫描增强 IaC 安全性??_安全架构_04

3. 合并配置拉取请求
  • Mend 将在您的存储库中自动创建拉取请求 (PR)。
  • 此 PR 添加了一个配置文件:.whitesource

修补公关

  • 查看 PR 并将其合并以启动您的第一次扫描。

查看并合并 PR

4.自定义扫描设置
  • 打开存储库中的文件。.whitesource
  • 根据需要修改设置。启用 IaC 扫描的关键设置是 。enableIaC: true

JSON的







1



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">{</span></span></span>
  • 1.



2



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  <span style="color:#aa1111">"scanSettings"</span>: {</span></span></span>
  • 1.



3



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"enableIaC"</span>: <span style="color:#221199">true</span>,</span></span></span>
  • 1.



4



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"baseBranches"</span>: [<span style="color:#aa1111">"main"</span>]</span></span></span>
  • 1.



5



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  },</span></span></span>
  • 1.



6



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  <span style="color:#aa1111">"checkRunSettings"</span>: {</span></span></span>
  • 1.



7



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"vulnerableCheckRunConclusionLevel"</span>: <span style="color:#aa1111">"failure"</span>,</span></span></span>
  • 1.



8



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"displayMode"</span>: <span style="color:#aa1111">"diff"</span>,</span></span></span>
  • 1.



9



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"useMendCheckNames"</span>: <span style="color:#221199">true</span></span></span></span>
  • 1.



10



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  },</span></span></span>
  • 1.



11



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  <span style="color:#aa1111">"issueSettings"</span>: {</span></span></span>
  • 1.



12



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"minSeverityLevel"</span>: <span style="color:#aa1111">"LOW"</span>,</span></span></span>
  • 1.



13



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"issueType"</span>: <span style="color:#aa1111">"DEPENDENCY"</span></span></span></span>
  • 1.



14



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  }</span></span></span>
  • 1.



15



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">} </span></span></span>
  • 1.





JSON的







1



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">{</span></span></span>
  • 1.



2



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  <span style="color:#aa1111">"scanSettings"</span>: {</span></span></span>
  • 1.



3



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"enableIaC"</span>: <span style="color:#221199">true</span>,</span></span></span>
  • 1.



4



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"baseBranches"</span>: [<span style="color:#aa1111">"main"</span>]</span></span></span>
  • 1.



5



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  },</span></span></span>
  • 1.



6



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  <span style="color:#aa1111">"checkRunSettings"</span>: {</span></span></span>
  • 1.



7



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"useMendCheckNames"</span>: <span style="color:#221199">true</span>,</span></span></span>
  • 1.



8



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">    <span style="color:#aa1111">"iacCheckRunConclusionLevel"</span>: <span style="color:#aa1111">"failure"</span></span></span></span>
  • 1.



9



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">  }</span></span></span>
  • 1.



10



<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#222635 !important">}</span></span></span>
  • 1.





  • 提交更改以更新扫描配置。
5. 监控和审查结果
  • Mend 现在将在每次推送时扫描您的存储库(Mend Bolt 的每个存储库每天最多扫描 5 次)。

修补扫描报告

  • 检查 GitHub 存储库中的“问题”选项卡以获取漏洞报告。
  • 查看 Mend 仪表板,全面了解安全状态。
6. 修复问题

通过修补扫描增强 IaC 安全性??_基础架构_05

  • 根据 Mend 的建议创建拉取请求以更新易受攻击的依赖项。
7. 持续监控
  • 定期查看修补扫描结果和 GitHub 问题。
  • 随着安全需求的发展,保持配置文件的更新。.whitesource

  您已成功将 Mend 与 GitHub 集成,从而为您的存储库启用自动安全扫描和漏洞管理。除了 GitHub、Mend 支持、Git Enterprise、 GitLab、BitBucket 等,您可以在  Mend 文档中找到支持的平台。

  Terraform 等 IaC 工具的强大功能与 Mend 等强大的安全解决方案相结合,将任何基础架构管理基础建立在非常坚实的基础之上。这些技术和最佳实践有助于确保组织安全,同时确保现代快速发展的数字环境的适应性和可扩展性。事实上,随着我们继续提高基础设施自动化的标准,在基础设施的整个生命周期中集成安全性的重要性怎么强调都不为过。还有其他最佳做法,例如版本控制、模块化、使用权限访问权限、审核代码的合规性等,为 IaC 代码提供额外的安全性。