暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Trivy携手Harbor,打造容器安全的黄金标(下)

Linux运维智行录 2024-08-27
17

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


生产安全无小事,须臾片刻不可松


01
harbor集成trivy

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示图


02
获取离线漏洞库

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点执行更新漏洞库脚本


03
验证harbor镜像扫描

1、镜像扫描


2、扫描结果


3、所有镜像扫描情况


4、过滤对应的漏洞


04
参考文章

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


05
结语

通过将 Trivy 集成到 Harbor,我们不仅提高了容器镜像的安全性,还简化了安全扫描的流程。这种集成使得安全不再是开发和运维团队的负担,而是成为了开发生命周期中自然的一部分。随着技术的不断进步和安全需求的日益增长,Harbor 和 Trivy 的结合将为用户提供更加强大和灵活的安全工具,以应对不断变化的安全挑战。让我们共同期待这一集成在未来能够带来更多的创新和价值。


别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END

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

评论