随着软件供应链安全问题日益受到重视,开发者和运维团队在构建和部署应用的过程中,越来越注重容器镜像的安全性。Harbor 是一个开源的、云原生的注册表,用于存储、签名和扫描容器镜像。而 Trivy 则是一个流行的轻量级容器镜像漏洞扫描工具,它可以快速地检查容器镜像中的已知漏洞。将 Trivy 集成到 Harbor 中,可以为用户提供一个更加安全可靠的应用交付流程。

生产安全无小事,须臾片刻不可松
1、helm安装参数添加
cat <<'EOF' | sudo tee -a /etc/kubernetes/addons/harbor-value.yml
trivy:
enabled: true
replicas: 2
offlineScan: true
skipJavaDBUpdate: true
skipUpdate: true
image:
repository: 172.139.20.170:5000/library/trivy-adapter-photon
tag: v2.11.0
EOF
2、更新harbor
$ helm -n harbor upgrade harbor -f /etc/kubernetes/addons/harbor-value.yml /etc/kubernetes/addons/harbor
Release "harbor" has been upgraded. Happy Helming!
NAME: harbor
LAST DEPLOYED: Mon Aug 26 22:21:08 2024
NAMESPACE: harbor
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
Please wait for several minutes for Harbor deployment to complete.
Then you should be able to visit the Harbor portal at https://core.jiaxzeng.com
For more details, please visit https://github.com/goharbor/harbor
3、验证
$ kubectl -n harbor get pod
NAME READY STATUS RESTARTS AGE
harbor-core-7bfdc95674-czlnz 1/1 Running 0 35s
harbor-core-7bfdc95674-pqr8m 1/1 Running 0 56s
harbor-exporter-5c599f54d4-sjdxt 1/1 Running 3 (13m ago) 4d4h
harbor-exporter-5c599f54d4-t5vfc 1/1 Running 3 (13m ago) 4d4h
harbor-jobservice-845f58df94-9xkcr 1/1 Running 0 35s
harbor-jobservice-845f58df94-tdd8t 1/1 Running 0 56s
harbor-portal-f7f7956cd-h6f5f 1/1 Running 3 (13m ago) 4d4h
harbor-portal-f7f7956cd-t6jcn 1/1 Running 3 (13m ago) 4d4h
harbor-redis-0 1/1 Running 3 (13m ago) 4d4h
harbor-registry-7c5ddd7f5b-hx55t 2/2 Running 0 53s
harbor-registry-7c5ddd7f5b-wlwtv 2/2 Running 0 56s
harbor-trivy-0 1/1 Running 0 56s
harbor-trivy-1 1/1 Running 0 43s

harbor集成trivy示图
1、下载离线漏洞库
$ oras pull ghcr.io/aquasecurity/trivy-db:2
$ oras pull ghcr.io/aquasecurity/trivy-java-db:1
2、将漏洞库拷贝到trivy数据目录
$ for dir_path in $(sudo find / -name "*harbor-trivy*" -type d);do
sudo mkdir -p ${dir_path}/trivy/{db,java-db}
sudo tar xvf db.tar.gz -C ${dir_path}/trivy/db
sudo tar xvf javadb.tar.gz -C ${dir_path}/trivy/java-db
sudo chown -R nfsnobody.nfsnobody ${dir_path}/trivy
done
1、拉取漏洞库脚本
cat <<'EOF' | sudo tee /opt/download_and_extract.sh
#!/bin/bash
TRIVY_PATHS=$(sudo find / -name "*harbor-trivy*" -type d)
function update_db() {
# 下载漏洞库
temp_dir=$(mktemp -d)
oras pull ghcr.io/aquasecurity/trivy-db:2 -o ${temp_dir} &> /dev/null
if [[ $? -ne 0 ]];then
echo "下载db漏洞库下载失败"
return
fi
# 更新漏洞库
for dir_path in ${TRIVY_PATHS};do
mkdir -p ${dir_path}/trivy/db
rm -rf ${dir_path}/trivy/db/*
tar xf ${temp_dir}/db.tar.gz -C ${dir_path}/trivy/db
chown -R nfsnobody.nfsnobody ${dir_path}/trivy
done
echo "db漏洞库更新成功..."
}
function update_java_db() {
# 下载漏洞库
temp_dir=$(mktemp -d)
oras pull ghcr.io/aquasecurity/trivy-db:2 -o ${temp_dir} &> /dev/null
if [[ $? -eq 0 ]];then
echo "下载java-db漏洞库下载失败"
return
fi
# 更新漏洞库
for dir_path in ${TRIVY_PATHS};do
mkdir -p ${dir_path}/trivy/java-db
rm -rf ${dir_path}/trivy/java-db/*
tar xf ${temp_dir}/javadb.tar.gz -C ${dir_path}/trivy/java-db
chown -R nfsnobody.nfsnobody ${dir_path}/trivy
done
echo "java-db漏洞库更新成功..."
}
# 更新漏洞库
update_db
# 判断今天是否为周四,周四则更新java漏洞库
if [[ $(date +%w) == 4 ]];then
update_java_db
fi
EOF
sudo chmod +x /opt/download_and_extract.sh
2、每天3点执行脚本
cat <<'EOF' | sudo tee -a /etc/crontab
00 03 * * * root /opt/download_and_extract.sh &> /opt/download_and_extract.log
EOF
Tip:每天3点执行更新漏洞库脚本
1、镜像扫描

2、扫描结果

3、所有镜像扫描情况

4、过滤对应的漏洞

harbor和trivy官网地址:
https://goharbor.io/docs/2.11.0/administration/vulnerability-scanning/
https://aquasecurity.github.io/trivy/v0.54/docs/
https://github.com/aquasecurity/trivy
通过将 Trivy 集成到 Harbor,我们不仅提高了容器镜像的安全性,还简化了安全扫描的流程。这种集成使得安全不再是开发和运维团队的负担,而是成为了开发生命周期中自然的一部分。随着技术的不断进步和安全需求的日益增长,Harbor 和 Trivy 的结合将为用户提供更加强大和灵活的安全工具,以应对不断变化的安全挑战。让我们共同期待这一集成在未来能够带来更多的创新和价值。
别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




