当前位置: 首页 > news >正文

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

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

目录

  • 1 概念
    • 1.1 什么是 Harbor 和 Trivy?
      • 1.1.1 Harbor
      • 1.1.2 Trivy
    • 1.2 Harbor 与 Trivy 的关系
      • Trivy 在 Harbor 中的作用:
    • 1.3 镜像扫描工作流程
  • 2 实战案例:在Harbor 配置 Trivy
    • 2.1 环境准备
    • 2.2 步骤 1:启用 Trivy 作为漏洞扫描工具
    • 2.3 步骤 2:配置扫描策略
    • 2.4 步骤 3:推送镜像到 Harbor
    • 2.5 步骤 4:查看漏洞扫描结果
    • 2.6 步骤5: 其他操作
  • 3 总结
  • 4 参考资料

❤️ 摘要:随着容器技术的广泛应用,确保容器镜像的安全性变得至关重要。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 psName                   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: 2UpdatedAt: 2024-09-13 12:12:21.448692961 +0000 UTCNextUpdate: 2024-09-13 18:12:21.4486927 +0000 UTCDownloadedAt: 2024-09-13 15:19:40.854214676 +0000 UTC
Java DB:Version: 1UpdatedAt: 2024-09-13 01:08:50.455768046 +0000 UTCNextUpdate: 2024-09-16 01:08:50.455767885 +0000 UTCDownloadedAt: 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漏洞扫描

相关文章:

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

【云原生安全篇】一文掌握Harbor集成Trivy应用实践 目录 1 概念 1.1 什么是 Harbor 和 Trivy? 1.1.1 Harbor 1.1.2 Trivy 1.2 Harbor 与 Trivy 的关系 Trivy 在 Harbor 中的作用: 1.3 镜像扫描工作流程 2 实战案例:在Harbor 配置 Trivy …...

计算机网络30——Linux-gdb调试命令makefile

1、开始调试 编译时带-g为调试,带调试信息编译后的可执行文件更大 2、进入调试 使用gdb 可执行文件名——进入调试 失败版: 成功版: 3、l命令 l什么都不加——列出10行代码 l 行号——行号的行在中间,向上向下展示10行 4、st…...

【物联网】一篇文章带你认识RFID(射频识别技术)

基本原理 RFID是Radio Frequency Identification的缩写,即射频识别技术,其工作原理基于电磁感应理论(射频一般指微波,频段在1-100GHz,适用于短距离通信),是一种非接触式的自动识别技术&#xf…...

STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置,以及报警配置,支持双路报警。 1、STM32G474RE的RTC晶振引脚: OSC32_IN为PC14,OSC32_OUT为PC15; 2、Vbat引脚 Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“…...

TwinCAT3 实时核中ADS实现C++ server、clinet数据传输

一、基本概念 ADS :Automation Device Specification,ADS设备间进行通信的协议规范。协议定义了ADS device之间如何寻址对方、ADS device之间可以执行哪些操作、执行这些操作需要哪些参数,以及操作完成后如何返回结果等。从编程角度看&#…...

apt:Debian 高级包管理器

​apt​ 是 Advanced Package Tool 的缩写。 ​apt​ 是一个在 Debian 及其衍生版本(如 Ubuntu)上管理软件包的工具。以下是一些常见的 apt​ 命令和用法: 1. 更新软件包列表 sudo apt update2. 安装软件包 sudo apt install package_nam…...

基于React+JsonServer+Antddesign的读书笔记关联系统

文章目录 涉及技术系统功能JsonServer介绍JsonServer安装JsonServer使用创建React项目我的书架显示效果关键代码笔记显示效果关键代码人物关系显示效果关键代码个人中心显示效果关键代码完整代码和数据下载地址项目启动步骤启动json-server启动react项目涉及技术 React Antddes…...

【win工具】win安装flameshot并设置截图快捷键

1.下载flameshot软件2.windows端配置flameshot快捷键3.取消win自带截图快捷键 1.下载flameshot软件 https://flameshot.org/#download installer版本为安装包 portable版本为免安装版 2.windows端配置flameshot快捷键 https://cloud.tencent.com/developer/article/2114952 W…...

react 安装使用 antd+国际化+定制化主题+样式兼容

安装antd 现在从 yarn 或 npm 或 pnpm 安装并引入 antd。 yarn add antd修改 src/App.js&#xff0c;引入 antd 的按钮组件。 import React from react; import { Button } from antd;const App: React.FC () > (<div className"App"><Button type&q…...

【Kubernetes】常见面试题汇总(十六)

目录 48.简述 Kubernetes PodsecurityPolicy 机制能实现哪些安全策略&#xff1f; 49.简述 Kubernetes 网络模型&#xff1f; 50.简述 Kubernetes CNl 模型&#xff1f; 48.简述 Kubernetes PodsecurityPolicy 机制能实现哪些安全策略&#xff1f; 在 PodSecurityPolicy 对象…...

【mysql】mysql之优化

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

Django REST framework 实现缓存机制以优化性能

Django REST framework 实现缓存机制以优化性能 页面首页中&#xff0c;导航菜单或轮播广告在项目中每一个页面都会被用户频繁访问到&#xff0c;所以我们可以实现缓存&#xff0c;减少MySQL数据库的查询压力&#xff0c;使用内存缓存可以加快数据查询速度。 cache_page 装饰…...

快速了解高并发解决方案

对《高并发的哲学原理》的个人总结&#xff0c;原书地址如下 https://pphc.lvwenhan.com/ 本书的核心思想就是拆分&#xff0c;服务细化拆分多资源并行。 通用设计方法 例子&#xff1a;每秒100万次http请求 通过架构解决性能问题&#xff0c;在面对并发需求时&#xff…...

SpringBoot框架下的房产销售系统设计与实现

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于房产销售系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了房产销售系统&#xff0c;它彻底改变了过去传统的…...

基于RFID的门禁系统的设计(论文+源码)

1系统方案设计 通过需求分析&#xff0c;基于RFID的门禁系统总体设计框图。系统采用STM32单片机作为系统主控核心&#xff0c;利用独立按键与RFID识别模块能够实现门禁系统密码与IC卡开门功能。WiFi模块实现系统与手机APP的通信&#xff0c;用户可以通过手机APP进行门禁开关操…...

湖仓一体-Paimon篇-简介

什么是Paimon&#xff1f; 2021年末&#xff0c;Flink官方提出打造一个全新的存储 Flink Table Store&#xff0c;一个 Flink 完全内置的存储。 为了让 Flink Table Store 能够有更大的发展&#xff0c;Flink PMC经过讨论决定将其捐赠Apache进行独立孵化。 2023 年 3 月 12 日…...

React Native 0.76版本发布

关于 React Native 的 New Architecture 概念&#xff0c;最早应该是从 2018 年 RN 团队决定重写大量底层实现开始&#xff0c;因为那时候 React Native 面临各种结构问题和性能瓶颈&#xff0c;最终迫使 RN 团队开始进行重构。 而从 React Native 0.68 开始&#xff0c;New A…...

yolo自动化项目实例解析(一)日志格式输出、并发异步多线程、websocket、循环截图、yolo推理、3d寻路

本系列是为了学习自动化操作相关知识点&#xff0c;对开源项目原神ai的技术理解&#xff0c;开源地址如下&#xff0c;拉取版本号为1.78 https://gitee.com/LanRenZhiNeng/lanren-genshin-impact-ai 一、main入口主要函数说明 vi main.py 封装的函数较多&#xff0c;我们拆分…...

获取无人机经纬度是否在指定禁飞区内

1. 计算公式: (AB X AE ) * (CD X CE) >= 0 && (DA X DE ) * (BC X BE) >= 0 参考: 判断点是否在矩形框(多边形)内_qt opencv 判断一点是否在矩形内-CSDN博客 2.测试结果: 3.实现完整代码: #include<cstd...

解读:以RTC为基,AI为脑的“超拟人”AI实时互动解决方案

我们打造了一款满足想象与应用的智能体——AI实时互动。 谈谈AI智能体 当AI变得足够聪明时&#xff0c;用户与AI的交互将变得真实自然。于是&#xff0c;构建高拟真AI与用户的实时交互&#xff0c;已经成为企业提升数智化生产力的新思路。 在这个交互过程中&#xff0c;存在一…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...