企业如何利用 DMZ 更好的实现依赖源的安全管控

几乎所有的开发组织都需要访问远程公共资源,如 Maven Central、NuGet Gallery、npmjs.org、Docker Hub 等,以下载构建所需的依赖包。使用Artifactory的最大好处之一是它的远程存储库,它可以代理这些远程资源和下载的依赖包。这样,一旦任何开发人员或 CI 服务器第一次请求依赖包时,它就会被缓存并直接从内部网络上的 Artifactory 中的远程存储库中可用,这样就实现了外部依赖源的唯一可信。

但是随着软件供应链攻击的增加,例如前段时间刚发生的 Spring 漏洞等等,有漏洞的依赖包被引入到了研发环境甚至是生产环境。这时,有些组织,如金融机构和军事设施,有更严格的安全要求,在这些组织中,将其业务暴露在互联网上是被禁止的。为了确保组织内部网络的安全,将内部网络与外部网络分离的趋势日益明显。本质上创造了一个与公共互联网隔绝的封闭环境。设置 DMZ 环境并实施也成为 DevSecOps 最佳实践所必须的的一部分。

为了适应这种网络管理场景,我们建议设置至少两个 Artifactory 实例;一个在DMZ区,另一个在内部网络区,这种设置通常被称为 Air gap。Artifactory 针对这种网络拓扑设计的特定的功能,更好的支持制品在不同网络环境和物理服务器之间的制品传输。

1. 单线连接

高度安全的机构虽然要求将互联网与其内部网络分开,但网络策略可以进行管控和相应的调整,以适应部署拓扑,同时满足安全要求。例如配置白名单的单向连接:

  • DMZ Artifactory 服务单项配置连接公网依赖源地址获取公网依赖包,缓存到 DMZ Artifactory;
  • 内部的 Artifactory 实例可以通过代理或安全的、单向的 HTTP 网络连接连接到 DMZ 实例,这种设置为内部实例获取依赖打开了额外的途径;
  • 通过 Artifactory 的 Smart Remote Repository 来实现 DMZ 到 内网的依赖包传输。

2. 制品库设计的最佳实践

DMZ 上的 Artifactory 实例制品库包括:

  • 存放已下载、扫描和批准的白名单工件的本地(Local)类型制品库
  • 一个远程(Remote)类型存储库,它代理需要从其中下载依赖项的远程资源
  • 聚合所有其他存储库的虚拟(Virtual)类型存储库

 

内部研发环境 Artifactory 实例包括:

  • 本地(Local)类型存储库托管本地制品,如构建和其他批准的本地包
  • 远程(Remote)类型存储库 — 实际上是一个 smart remote 存储库,它代理外部 DMZ 实例中的虚拟(Virtual)类型存储库
  • 聚合所有其他存储库的虚拟(Virtual)类型存储库

 

执行流程:

  • 构建工具从内部 Artifactory 实例上的虚拟存储库请求依赖包
  • 如果无法在内部(在任何本地存储库或远程存储库缓存中)找到依赖包,那么 smart remote 存储库将从其外部资源(实际上是 DMZ 实例上的虚拟存储库)请求它
  • 外部实例的虚拟存储库尝试从其聚合的本地存储库或远程存储库缓存提供所请求的依赖项。如果找不到依赖项,则远程存储库从远程资源下载它,然后从远程资源将它供应回请求它的内部实例。

 

以下图为 smart remote 类型制品库,URL地址配置 DMZ Artifactory 虚拟类型制品库访问地址。

注意:额外需要的设置

内部实例上的虚拟存储库必须具有【Artifactory Requests Can Retrieve Remote Artifacts】复选框集。

Air gap 模型的软件安全管理

通过 JFrog Xray 管理 Air gap 架构中的软件安全:

  • 内部和 DMZ 都安装 Xray,不只是 DMZ 区。这将确保对制品进行持续的扫描,保护它们不受任何新的漏洞的影响;
  • 区分在内部和 DMZ 中配置的 policies 和 watches(参考 Xray 产品 policy he  watch 功能);对于 DMZ 上的依赖关系解析,我们可以配置有一个全局策略,但是对于特定的产品/版本,我们需要配置一个内部环境上更严格的策略;
  • 使用 JFrog CLI 更新内部 Xray 最新的漏洞数据;
  • DMZ 应该由 SecOps 管理,以便忽略特定的安全漏洞规则、打补丁、测试和在需要时提升违规策略的依赖关系。

 

通过以下流程示例,完成 Air gap 模型的 DevSecOps

使用此解决方案的好处

  • 提供必要的审核流程
  • 设置组织扩展的基础设施
  • 非常容易将 SecOps 团队合并到 DevOps 建设的过程中
  • 为开发人员提供了轻松的心情,因为这个过程是自动的,并且对他们是隐藏的

 

这个解决方案需要实现强大的自动化,以及一个高度参与的 SecOps 团队来妥善处理审批过程中的 Tickets。

 

3. 总结

越来越多的企业已经意识到软件安全的重要性,纷纷设立 Air gap 网络拓扑模型,通过 Artifactory 和 Xray 的解决方案保护企业的 Air gap 环境,并排除所有在内部开发环境中使用的不合规制品建立外部依赖源和企业内部二方源的统一管控和安全。

 

标签:容器镜像仓库  开源组件漏洞  CICD  开源治理  持续集成