23

如何降低DevOps存储库的各项风险

 3 years ago
source link: http://os.51cto.com/art/202009/625441.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【51CTO.com快译】从技术上讲,相比过去那些重量级的虚拟机,Docker为软件开发人员提供了可扩展的数据包和发布代码的容器,为应用程序的灵活性和可移植性需求提供了一种可持续的业务模型。而作为一种基于云的存储库,最终用户既能够在Docker Hub中发布各种Docker镜像,又可以将它们拉出来,用于各种云原生基础架构的部署。由于Docker镜像不但轻巧、可移植,而且能够在系统之间轻松地被移动,因此任何人都可以创建一组标准化的Docker容器镜像,将其存储在存储库中,以便通过Docker Hub在整个组织中共享它们。

Docker镜像的威胁

不过,用户不能盲目地并从Docker Hub中直接提取镜像。仅在2018年,Docker Hub上就被发现了17种恶意Docker镜像(请参见-- https://threatpost.com/malicious-docker-containers-earn-crypto-miners-90000/132816/ ),攻击者已从中牟利90,000美元。由于Docker Hub中帐户和项目是相互联系的,一旦安全漏洞被发现,准确地找到那些可能受到严重影响的资产,会是一项艰巨的任务。同时,这也会减慢从开发到运营、再到部署的整个过程。因此,DevOps团队不得不花费大量的时间,通过跟踪镜像的自动构建与存储,既检查相关帐户和项目中的可疑活动,又需要重设已感染帐户的密码,删除并替换已受攻击的镜像。

Docker许可证的风险

Docker镜像往往是由那些具有不同许可证条款和合规性义务的软件,以及操作系统包所组成。为了在企业中管控容器使用的风险,我们需要了解所有这些依赖关系,以便根据公司的安全准则、以及开源策略进行合规性评估。

在实际操作中,我们可以借用自动化工具来识别镜像,获悉操作系统的所有软件包、已捆绑的应用、以及从属库,进而汇总各个层面上的许可证,以便识别出不合规的软件包,最终降低企业在法律和业务上的风险。例如,由JFrog提供的Xray是一种常见的安全扫描解决方案。它可以通过深入到Docker镜像中,来识别许可证的合规性,并在安全研究人员发现了新的安全漏洞时,及时对其进行标记。

缓解风险

基于安全方面的考虑,Docker Hub在提供服务的同时,采取了如下两个方面的限制:

  • 镜像保留限制

那些使用免费账号(这在开源项目和自动化构建中十分常见)在DockerHub上存储的镜像,会受到六个月的镜像保留政策限制。也就是说:如果这些镜像在六个月后处于非活动状态,那么就会被直接删除掉。

  • 下载节流

Docker对匿名用户引入了“每六小时只允许100次请求”的下载速率限制;而对于免费帐户,则采取了“每六小时只允许200次请求”的下载速率限制。

由此,会有两组人员可能会受到此类限制策略的影响:创建Docker镜像的开源贡献者和使用镜像的DevOps爱好者。具体说来,开源贡献者会碰到丢失那些少用但重要的镜像等问题。而由于DevOps爱好者会将Docker Hub用作存储系统,因此碰到在没有任何警告的情况下,丢失镜像或破坏构建等问题。并且由于请求次数的限制,他们的匿名或免费构建也可能出现失败。

面对此类状况,我们可以选用一种更为高效的替代品--Artifactory。

aMBzyq.jpg!mobile

如上图所示,Artifactory的应对措施包括:

  • 由于Artifactory能够缓存镜像,因此用户不会受到上游镜像被移除的影响。
  • 由于Artifactory能够提供缓存服务,因此每个镜像只需被拉取一次,有效地实现了节流。
  • 整个组织内的所有开发人员和构建主机都只需要一个Docker Hub许可证。
  • Artifactory允许用户为每个实例创建多个Docker注册表。您可以将本地存储库用作私有的Docker注册表,以细粒度的访问控制方式,在整个组织中共享Docker镜像。
  • 您可以存储和检索任何类型的工件(artifact),甚至是由开发团队生成的安全Docker镜像。由于这些工件存储在中央托管位置,因此Artifactory成为了任何软件交付生命周期的重要组成部分。

QNzYruF.png!mobile

JFrog Artifactory的基本特征:

  • 提供2 GB的存储空间和10 GB传输的免费套餐
  • 处于大型组织的商业层

作为一种无缝托管和分发容器镜像的服务,Artifactory能够将所有二进制文件存储到单个位置(如:Docker注册表, https://jfrog.com/integration/docker-registry/ ),以实现对进入某个Docker镜像的内容和信息进行管控。同时,Artifactory也提供了广泛的集成、高可用性、高安全性、大规模的可扩展存储,以及能够通过持续更新,来支持最新的Docker客户端版本和API。

jEbimuU.png!mobile

JFrog容器注册表(JFrog Container Registry,JCR)的基本特征:

  • 自托管:提供免费且无限制的容器注册表
  • Cloud SaaS:2 GB的存储空间和10 GB传输的免费套餐
  • 云端BYOL(Bring Your Own License,自带许可):在用户自己的基础架构上是免费的

JFrog容器注册表能够与Docker完全兼容,用户可以使用各种工具按需进行“原生”操作,从而实现对Docker镜像的管理(请参见-- https://www.jfrog.com/confluence/display/JCR/Docker+Registry )。

JCR可以被作为我们管理所有Docker镜像的单一节点。通过集成到已构建的生态系统中,用户可以安全、可靠、一致、高效的方式,访问到远程的Docker容器注册表。

服务管理员可以按需使用细粒度的权限控制,来维护任意数量的公共和私有Docker注册表。同时,它还为用户的容器存储了丰富的元数据,以提供容器内各个层面上的唯一且全面的视图。用户可以据此了解其中的具体内容。

建立可持续的容器生态系统

拥有蓬勃发展的容器生态系统,对于那些正在使用Docker和Kubernetes等云原生技术来实现成功部署的公司来说,是至关重要的。通过在企业内部部署JFrog Artifactory和JFrog Container Registry之类的本地存储技术,我们不但可以灵活地支持构建、测试和部署等各种实用场景,还能够减少各种共享式社区基础架构的负载,其中包括:Docker Hub、Maven、NPM、Go、Conan、以及其他由社区运营的中央存储库。

虽然我们在使用Docker Hub时可能会遇到上游容器镜像被删除,以及服务受限或中断等风险,但是通过部署工件管理系统,用户能够在实现流畅地端到端软件交付的同时,更加专注于软件包的质量和安全性,而不仅仅着眼于扩展基础架构。

原标题:Mitigating DevOps Repository Risks ,作者: Pavan Belagatti and Stephen Chin

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK