首页 > 其他分享 >【云原生安全篇】一文掌握Harbor集成Trivy应用实践

【云原生安全篇】一文掌握Harbor集成Trivy应用实践

时间:2024-09-14 12:50:01浏览次数:3  
标签:原生 Trivy harbor Harbor 扫描 漏洞 镜像

【云原生安全篇】一文掌握Harbor集成Trivy应用实践

目录

❤️ 摘要:随着容器技术的广泛应用,确保容器镜像的安全性变得至关重要。Harbor 是一个强大的企业级容器镜像仓库,而 Trivy 是一款高效的开源安全扫描工具。通过将 Trivy 与 Harbor 集成,企业可以在镜像上传过程中自动进行漏洞扫描,从而增强容器镜像的安全性。本文将简述 Harbor 和 Trivy 的应用,并给出详细的工作流程、配置步骤和验证方法。


1 概念

1.1 什么是 Harbor 和 Trivy?

❤️ 文档参考: 想详细了解Harbor,可以提前读《一文读懂Harbor以及部署实践攻略》; 想详细了解Trivy,可以提前读《【云原生安全篇】一文读懂Trivy

1.1.1 Harbor

Harbor 是一个开源的企业级容器镜像仓库管理平台,旨在帮助组织安全高效地存储、管理和分发 Docker 容器镜像。Harbor 还支持多种集成工具,如漏洞扫描工具 Trivy,用于增强镜像安全。

1.1.2 Trivy

Trivy 是由 Aqua Security 开发的开源安全扫描工具,能够扫描容器镜像、文件系统、基础设施即代码(IaC)等对象中的已知漏洞。Trivy 提供了快速、准确的扫描结果,帮助开发人员在开发早期识别潜在的安全风险。

1.2 Harbor 与 Trivy 的关系

Harbor 自 2.0 版本开始,默认支持与 Trivy 集成,作为其漏洞扫描工具。通过应用集成,当用户上传镜像到 Harbor 仓库时,Trivy 会自动扫描镜像中操作系统包和应用程序依赖中的已知漏洞,并生成详细的漏洞报告。

Trivy 在 Harbor 中的作用

  • 在镜像推送到 Harbor 仓库后,Trivy 自动触发扫描。
  • Harbor 将扫描结果存储,并可以通过 Web 界面查看扫描的详细信息。
  • Harbor 支持为不同的项目设置不同的漏洞扫描策略(如阻止带有高危漏洞的镜像拉取)。

1.3 镜像扫描工作流程

下图展示了 Harbor 结合 Trivy 进行镜像安全扫描的工作流程:

用户推送容器镜像到 Harbor Harbor 存储镜像 Trivy 自动扫描镜像漏洞 Harbor 存储扫描结果 用户查看漏洞扫描报告 扫描发现高危漏洞? Harbor 阻止镜像拉取 镜像可正常拉取

❔ 流程说明:

  1. 用户通过 Docker CLI 或 CI/CD 工具将容器镜像推送到 Harbor 容器镜像仓;
  2. Harbor 在接收到镜像后,启动镜像存储过程,同时触发 Trivy 进行漏洞扫描;
  3. Trivy 解析镜像中的操作系统包和应用依赖,与漏洞数据库检索比对,然后查找已知漏洞;
  4. 漏洞扫描完成后,Harbor 将扫描结果存储到本地数据库,通过Web页面方式供管理员或开发者查看;
  5. 如果扫描结果中包含高危漏洞,根据 Harbor 的安全策略,可能阻止该镜像的拉取,直到漏洞得到修复。

2 实战案例:在Harbor 配置 Trivy

下面介绍如何配置 Harbor 与 Trivy 进行集成,确保每次镜像推送到 Harbor 后都能自动触发 Trivy 的漏洞扫描。

2.1 环境准备

  • 提前部署并运行的 Harbor 实例(要求2.0 及以上版本)。
  • Harbor 配置使用 Trivy 作为默认扫描器。

2.2 步骤 1:启用 Trivy 作为漏洞扫描工具

因为我是使用docker-compose官方方式部署,如果要安装trivy组件,需要先执行以下命令:

cd /harbor
sudo ./install.sh --with-trivy

检查harbor的状态

root@harbor:~/harbor/harbor# docker-compose ps
      Name                   Command                State                 Ports
------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh        Up (healthy)
harbor-db           /docker-entrypoint.sh 13     Up (healthy)
                    14
harbor-jobservice   /harbor/entrypoint.sh        Up (healthy)
harbor-log          /bin/sh -c /usr/local/bin/   Up (healthy)   127.0.0.1:1514->10514/tcp
                    ...
harbor-portal       nginx -g daemon off;         Up (healthy)
nginx               nginx -g daemon off;         Up (healthy)   0.0.0.0:80-
                                                                >8080/tcp,:::80->8080/tcp,
                                                                0.0.0.0:443-
                                                                >8443/tcp,:::443->8443/tcp
redis               redis-server                 Up (healthy)
                    /etc/redis.conf
registry            /home/harbor/entrypoint.sh   Up (healthy)
registryctl         /home/harbor/start.sh        Up (healthy)
trivy-adapter       /home/scanner/entrypoint.s   Up (healthy)

  • 看到harbor的组件比之前多个trivy的容器

可以进入trivy容器,查看trivy的信息

root@harbor:~/harbor/harbor# docker exec -it trivy-adapter bash

查看版本和数据库

scanner [ / ]$ trivy version
Version: 0.52.2
Vulnerability DB:
  Version: 2
  UpdatedAt: 2024-09-13 12:12:21.448692961 +0000 UTC
  NextUpdate: 2024-09-13 18:12:21.4486927 +0000 UTC
  DownloadedAt: 2024-09-13 15:19:40.854214676 +0000 UTC
Java DB:
  Version: 1
  UpdatedAt: 2024-09-13 01:08:50.455768046 +0000 UTC
  NextUpdate: 2024-09-16 01:08:50.455767885 +0000 UTC
  DownloadedAt: 2024-09-13 15:20:47.499356951 +0000 UTC

登录Harbor页面检查trivy应用是否启用;

点击“审查服务”,在界面中,可以看到Trivy已经作为默认的漏洞扫描器并状态是 “启用”

2.3 步骤 2:配置扫描策略

为确保所有上传的镜像都能被自动扫描,你需要为项目设置自动扫描策略。

操作路径:项目→项目名称“hcie”→配置管理

找到 漏洞扫描,选择 自动扫描镜像,以确保每次推送镜像后,Trivy 会自动扫描该镜像。

2.4 步骤 3:推送镜像到 Harbor

在hcie项目中,先删除原镜像,重新上传一个nginx:1.26.1的镜像。

  1. 登录到 Docker 客户端:
    docker login harbor.zx
    
  2. 标记要推送的镜像:
    docker tag registry.cn-hangzhou.aliyuncs.com/hcie/nginx:1.26.1 harbor.zx/hcie/nginx:1.26.1
    
  3. 推送镜像到 Harbor:
    docker push harbor.zx/hcie/nginx:1.26.1
    

2.5 步骤 4:查看漏洞扫描结果

镜像推送完成后,Harbor 会自动触发 Trivy 进行漏洞扫描。您可以通过 Harbor 控制台查看扫描结果:

操作路径: 项目→项目名称“hcie”→名称hcie/nginx→Artifacts

点击该镜像的标签(tag),在详情页面中,点击 漏洞 标签,查看 Trivy 生成的漏洞扫描报告。报告中列出了所有检测到的漏洞,按严重性分类,并提供相应的修复建议。

2.6 步骤5: 其他操作

关于漏洞扫描,还有一些功能介绍说明:

路径:审查服务→漏洞→定期扫描所有

  • 手动扫描:这里你可以点击开始扫描, 手动触发对现有所有镜像的漏洞扫描;
  • 定时扫描:也可以设置定时扫描策略,如按小时/天/周/自定义

自定义任务,按crontab的格式:

在安全中心页面,可以看到全局镜像的扫描结果,以及数据可视化展示,包括漏洞总览、最危险的5个 Artifacts、漏洞详细列表。

3 总结

通过将 HarborTrivy 集成,可以在容器镜像推送到镜像仓库的过程中自动执行漏洞扫描,确保开发和运维团队在开发生命周期能尽早发现并修复潜在的安全问题。

通过本文的配置和工作流程,您可以轻松设置 Harbor 和 Trivy 的集成,确保容器镜像在上线前通过严格的安全检查。

4 参考资料

[1] harbor-scanner-trivy的github项目

[2] harbor脚本部署

[3]harbor漏洞扫描

标签:原生,Trivy,harbor,Harbor,扫描,漏洞,镜像
From: https://blog.csdn.net/u013522701/article/details/142255573

相关文章

  • 【云原生安全篇】一文读懂Trivy
    【云原生安全篇】一文读懂Trivy目录1概念1.1什么是Trivy?1.2Trivy的工作原理1.2.1Trivy的组件1.2.2组件介绍1.2.3Trivy的工作原理2小试牛刀:Trivy实践案例2.1安装Trivy2.1.1通过包管理工具安装2.1.2通过二进制方式安装2.1.3查看trivy版......
  • 来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法
    2024云栖大会来了!本届云栖大会将于9月19日至9月21日在杭州云栖小镇召开汇集全球最新云计算、AI硬科技云栖大会的主论坛将设置三个对话环节,大模型、自动驾驶和机器人领域的领军技术人和明星创业者将分享AI前沿趋势和应用进展。2024云栖大会主论坛议程发布!揭秘最全议程!20......
  • 来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法
    2024云栖大会来了!本届云栖大会将于9月19日至9月21日在杭州云栖小镇召开汇集全球最新云计算、AI硬科技云栖大会的主论坛将设置三个对话环节,大模型、自动驾驶和机器人领域的领军技术人和明星创业者将分享AI前沿趋势和应用进展。2024云栖大会主论坛议程发布!揭秘最全议程!20......
  • 来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法
    2024云栖大会来了!本届云栖大会将于9月19日至9月21日在杭州云栖小镇召开汇集全球最新云计算、AI硬科技云栖大会的主论坛将设置三个对话环节,大模型、自动驾驶和机器人领域的领军技术人和明星创业者将分享AI前沿趋势和应用进展。2024云栖大会主论坛议程发布!揭秘最......
  • 来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法
    2024云栖大会来了!本届云栖大会将于9月19日至9月21日在杭州云栖小镇召开汇集全球最新云计算、AI硬科技云栖大会的主论坛将设置三个对话环节,大模型、自动驾驶和机器人领域的领军技术人和明星创业者将分享AI前沿趋势和应用进展。2024云栖大会主论坛议程发布!揭秘最......
  • 原生IP与广播IP的区别
    在计算机网络领域,IP地址是设备在网络中的唯一标识,对于网络通信起着至关重要的作用。原生IP和广播IP是两种不同类型的IP地址,它们在定义、用途、通信方式等方面存在明显的区别。本文将深入探讨这两种IP地址的特性及其在网络设计和应用中的重要性。一、原生IP的定义与特性原生IP,也被称......
  • 通义灵码获得国产 AI 编码工具最高成绩丨阿里云云原生 8 月产品月报
    云原生月度动态云原生是企业数字创新的最短路径。《阿里云云原生每月动态》,从趋势热点、产品新功能、服务客户、开源与开发者动态等方面,为企业提供数字化的路径与指南。趋势热点......
  • CloudEvents-云原生事件规范
    前言在微服务-分布式架构中异步任务:用于降低接口时延或削峰,提升用户体验,降低系统并发压力;通知类RPC:用于微服务间状态变更,用户行为的联动等场景;以上2种场景,都十分适合使用事件驱动来实现。事件总线事件总线是对发布-订阅模式的一种实现。它是1种集中式事件处理机制,允许不......
  • jackson 原生反序列化触发 getter 方法
    jackson原生反序列化触发getter方法jackson的POJONode方法可以任意调用getterjackson序列化会任意调用getter分析jackson序列化会调用任意getter方法,jackson反序列化也会任意调用getter,这两个都不需要多说什么了,在前面的jackson反序列化中的TemplatesImpl......
  • 微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态
    ......