日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Harbor仓库镜像扫描原理

發布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Harbor仓库镜像扫描原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

harbor倉庫中的鏡像掃描這個功能,看似很高大上,其實等你了解了它的底層原理與流程,你就會發現就是做了那么一件事而已,用通俗的一句話概括,就是找到每個鏡像文件系統中已經安裝的軟件包與版本,然后跟官方系統公布的信息比對,官方已經給出了在哪個系統版本上哪個軟件版本有哪些漏洞,比如Debian 7系統上,nginx 1.12.1有哪些CVE漏洞,通過對逐個安裝的軟件包比對,就能知道當前這個鏡像一共有多少CVE。當然,如果你是解壓版的,那就沒啥說的,這個跟windows類似,系統無法在控制面板識別。下面就harbor的具體流程進行簡單介紹,讓你對這個功能了如指掌。

在了解鏡像掃描之前,這里先簡單說下鏡像的概念,鏡像就是由許多Layer層組成的文件系統,重要的是每個鏡像有一個manifest,這個東西跟springboot中的一個概念,就是文件清單的意思。一個鏡像是由許多Layer組成,總需要這個manifest文件來記錄下到底由哪幾個層聯合組成的。要掃描分析一個鏡像,首先你就必須獲取到這個鏡像的manifest文件,通過manifest文件獲取到鏡像所有的Layer的地址digest,digest在docker鏡像存儲系統中代表的是一個地址,類似操作系統中的一個內存地址概念,通過這個地址,可以找到文件的內容,這種可尋址的設計是v2版本的重大改變。在docker hub儲存系統中,所有文件都是有地址的,這個digest就是由某種高效的sha算法通過對文件內容計算出來的。

上圖中虛線框中的模塊是harbor自身功能,Clair是coreos開源的一個系統,鏡像掃描分析工作主要由Clair完成,它具體的結構在下面再分析,這里先側重分析harbor這塊流程。箭頭方向大致描述的是請求方向,系統之間交互可能產生多次請求。

1.UI向Job發起鏡像掃描請求,參數中包含了倉庫名稱以及tag

2.Job收到請求之后,向registry發起一個Head請求(/v2/nginx/manifest/v1.12.1),判斷當前鏡像的manifest是否存在,取出當前manifest的digest,這個digest是存放在響應頭中的Docker-Content-Digest。

3.Job把第2步獲取到的digest以及倉庫名、tag作為一條記錄插入job表中,job的狀態為pending。

這個時候Job系統則會新建一個掃描任務的job進行調度,這里則涉及到一個狀態機處理流程。

4.Job系統通過manifest文件獲取鏡像的所有Layer digest,針對每一層,封裝一個ClairLayer參數對象,然后根據層的數量,循環請求Clair系統,ClairLayer參數結構如下:

Name: sha256:7d99455a045a6c89c0dbee6e1fe659eb83bd3a19e171606bc0fd10eb0e34a7dc Headers: tokenHeader, Format: "Docker", Path: http://registry:5000/v2/nginx/blobs/7d99455a045a6c89c0dbee6e1fe659eb83bd3a19e171606bc0fd10eb0e34a7dc ParentName: a55bba68cd4925f13c34562c891c8c0b5d446c7e3d65bf06a360e81b993902e1

5.Clair系統收到請求之后,根據ParentName首先校驗父Layer是否存在,不存在則報錯。

下面詳細講解Clair漏洞分析流程。

1.下載鏡像層文件

攜帶必要的headers發起對path的Get請求,得到的則是一個歸檔文件,然后進行解壓。

2.探測鏡像操作系統

遍歷解壓后的文件目錄,探測操作系統文件路徑。?首先要了解各Linux發行版的一些基礎文件,比如系統版本、安裝的軟件包版本記錄等文件。

centos:etc/os-release,usr/lib/os-release

查看文件/etc/os-release

NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"

clair逐行解析該文件,提取ID以及VERSION_ID字段,最終把centos:7作為clair中的一個namespace概念。

2.探測鏡像已安裝的軟件包

上一步已經探測到了操作系統,自然可以知道系統的軟件管理包是rpm還是dpkg。

debian, ubuntu : dpkg centos, rhel, fedora, amzn, ol, oracle : rpm

centos系統的軟件管理包是rpm,而debain系統的軟件管理是dpkg。

rpm:var/lib/rpm/Packages dpkg:var/lib/dpkg/status apk:lib/apk/db/installed

比如debian系統,從文件/var/lib/dpkg/status文件則可以探測到當前系統安裝了哪些版本的軟件。

Package: sed Essential: yes Status: install ok installed Priority: required Section: utils Installed-Size: 799 Maintainer: Clint Adams <clint@debian.org> Architecture: amd64 Multi-Arch: foreign Version: 4.4-1 Pre-Depends: libc6 (>= 2.14), libselinux1 (>= 1.32) Description: GNU stream editor for filtering/transforming textsed reads the specified files or the standard input if nofiles are specified, makes editing changes according to alist of commands, and writes the results to the standardoutput. Homepage: https://www.gnu.org/software/sed/Package: libsmartcols1 Status: install ok installed Priority: required Section: libs Installed-Size: 257 Maintainer: Debian util-linux Maintainers <ah-util-linux@debian.org> Architecture: amd64 Multi-Arch: same Source: util-linux Version: 2.29.2-1+deb9u1 Depends: libc6 (>= 2.17) Description: smart column output alignment libraryThis smart column output alignment library is used by fdisk utilities.

逐行解析文件,提取Package以及Version字段,最終獲取 libsmartcols1 2.29-1+deb9u1以及sed等

3.保存信息

把上面探測到的系統版本、以及系統上安裝的各種軟件包版本都存入數據庫。Clair系統已經獲取了各linux版本操作系統軟件版本,以及對應軟件版本存在的CVE。官方公布了某個軟件在某個版本修復了哪個CVE,Clair只需要將當前鏡像中的軟件的版本與官方公布的版本進行比較。比如官方維護的CVE信息中公布了nginx 1.13.1修復了漏洞CVE-2015-10203,那么當前鏡像中包含的版本為1.12.1的nginx必然存在漏洞CVE-2015-10203,這些版本比較都是基于同一個版本的操作系統之上比較的。

Harbor的Job系統發送完最后一層的請求之后,則會發起一個CVE分析結果的請求查詢,生成一個掃描結果的概覽保存在數據庫中,主要是記錄當前鏡像發現了高風險漏洞多少個,中度風險多少個等。同時把job表中的狀態設置為finished,如果請求Clair發生任何錯誤,則會把job記錄設置為error。harbor頁面具體的漏洞詳細數據展示,還是通過UI系統調用Clair系統實時查詢。

本文來自云棲社區合作伙伴“開源中國”

本文作者:kingfsen

原文鏈接

總結

以上是生活随笔為你收集整理的Harbor仓库镜像扫描原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美在线性爱视频 | 午夜免费看片 | 欧美xxxx精品| 精品1卡二卡三卡四卡老狼 日韩三级网 | 国产精品超碰 | 韩日黄色| 日本孰妇毛茸茸xxxx | 高h捆绑拘束调教小说 | xx99小雪 | 国产+高潮+白浆+无码 | 华人在线视频 | 欧美视频xxxx| 在线不卡av | 中文字幕有码视频 | 国产一区二区三区在线视频 | 天天干夜夜草 | 人人搞人人插 | 插插插91 | 亚洲国产精品视频一区二区 | www国产免费 | 精品日韩在线视频 | 亚洲手机在线 | 男女插插插网站 | ktv做爰视频一区二区 | 老司机久久 | 日韩人妻精品一区二区 | 成人h动漫精品一区二 | 少妇太紧太爽又黄又硬又爽 | 欧美性猛交xxxx乱大交3 | 亚洲欧洲另类 | 国产精品毛片视频 | 91香蕉久久 | 懂色av一区二区在线播放 | 中文字幕25页 | 国产精品亚洲一区二区无码 | 亚洲情人网 | 午夜中文字幕 | 国产精品视频一区二区三区不卡 | 欧美a在线 | 黄色香蕉网站 | 久久噜噜色综合一区二区 | 尹人在线视频 | 精国产品一区二区三区a片 国产精品第一 | 成年人在线观看视频 | 91av成人| 国产一区二区三区在线看 | 免费看污片网站 | 亚洲精品一区二区在线观看 | 欧美日韩综合网 | 日韩精品卡通动漫网站 | 91一区二区视频 | 涩涩涩涩涩涩涩涩涩 | 东京热无码av一区二区 | 国产成人精品无码片区在线 | 国产suv精品一区二区60 | 乱色精品无码一区二区国产盗 | 免费无码毛片一区二三区 | 日本一区二区视频 | a级在线看| 丁香六月综合激情 | 国产精品久久久久99 | 成人3d动漫一区二区三区91 | 久久蜜桃av一区二区天堂 | 激情久久中文字幕 | 成a人片亚洲日本久久 | 成人免费a级片 | 波多野吉衣伦理片 | 精品黄色一级片 | 精品视频在线看 | 激情成人av | 天天操狠狠操夜夜操 | 999色综合| 香蕉av777xxx色综合一区 | 69av视频在线 | 欧美乱大交 | 伊人伊网 | 粉嫩av在线 | 欧美一区二区三区免费在线观看 | 午夜噜噜 | 无码人妻丰满熟妇区毛片蜜桃精品 | 人妻少妇精品中文字幕av蜜桃 | 重囗味sm一区二区三区 | 麻豆精品国产精华精华液好用吗 | 国产成人午夜精品 | 欧美在线播放视频 | 亚洲综合图片一区 | 日韩a在线观看 | 亚洲人成无码网站久久99热国产 | 亚洲视频在线观看一区二区三区 | 黄在线网站 | 欧美日韩一区在线观看 | 欧美一区二区三区精品 | 狂野少女电影在线观看国语版免费 | 图片一区二区 | 黄色顶级片 | 色噜噜av| 日日骚av一区二区 | 亚洲天堂av影院 | 国产99在线|