首页
视频
资源
登录
原
Kubernetes 镜像安全Trivy
2998
人阅读
2022/3/30 15:27
总访问:
2603769
评论:
0
收藏:
0
手机
分类:
容器编排
![](https://img.tnblog.net/arcimg/hb/8e3339115c2945909943b6b0c03a22f6.png) >#Kubernetes 镜像安全Trivy [TOC] ## Trivy的特征与简介 tn2>rivy是一种适用于CI的简单而全面的容器漏洞扫描程序。软件漏洞是指软件或操作系统中存在的故障、缺陷或弱点。Trivy检测操作系统包(Alpine、RHEL、CentOS等)和应用程序依赖(Bundler、Composer、npm、yarn等)的漏洞。Trivy很容易使用,只要安装二进制文件,就可以扫描了。扫描只需指定容器的镜像名称。与其他镜像扫描工具相比,例如Clair,Anchore Engine,Quay相比,Trivy在准确性、方便性和对CI的支持等方面都有着明显的优势。<br/> 推荐在CI中使用它,在推送到container registry之前,您可以轻松地扫描本地容器镜像,Trivy具备如下的特征:<br/> 1.检测面很全,能检测全面的漏洞,操作系统软件包(Alpine、Red Hat Universal Base Image、Red Hat Enterprise Linux、CentOS、Oracle Linux、Debian、Ubuntu、Amazon Linux、openSUSE Leap、SUSE Enterprise Linux、Photon OS 和Distrioless)、应用程序依赖项(Bundler、Composer、Pipenv、Poetry、npm、yarn和Cargo); 2.使用简单,仅仅只需要指定镜像名称; 3.扫描快且无状态,第一次扫描将在10秒内完成(取决于您的网络)。随后的扫描将在一秒钟内完成。与其他扫描器在第一次运行时需要很长时间(大约10分钟)来获取漏洞信息,并鼓励您维护持久的漏洞数据库不同,Trivy是无状态的,不需要维护或准备; 易于安装,安装方式: apt-get install yum install brew install 4.无需安装数据库、库等先决条件(例外情况是需要安装rpm以扫描基于RHEL/CentOS的图像)。 ## 安装 >####CentOS安装 ```bash sudo vim /etc/yum.repos.d/trivy.repo [trivy] name=Trivy repository baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$releasever/$basearch/ gpgcheck=0 enabled=1 sudo yum -y update sudo yum -y install trivy ``` tn2>RPM的方式 ```bash rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v0.24.4/trivy_0.24.4_Linux-64bit.rpm ``` >###Debian/Ubuntu安装 tn2>Ubuntu ```bash sudo apt-get install wget apt-transport-https gnupg lsb-release wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list sudo apt-get update sudo apt-get install trivy ``` tn2>Debian ```bash wget https://github.com/aquasecurity/trivy/releases/download/v0.24.4/trivy_0.24.4_Linux-64bit.deb sudo dpkg -i trivy_0.24.4_Linux-64bit.deb ``` >### 容器安装 tn2>脚本格式: ```bash docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v [YOUR_CACHE_DIR]:/root/.cache/ aquasec/trivy:0.24.4 image [YOUR_IMAGE_NAME] ``` tn2>举例:检测`python:3.4-alpine`镜像 ```bash # 0.20.2 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy:0.20.2 python:3.4-alpine # 0.24.4 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy:0.24.4 image python:3.4-alpine ``` ![](https://img.tnblog.net/arcimg/hb/ede869afd19f467199938b5e214ed823.png) >### Helm安装 ```bash helm repo add aquasecurity https://aquasecurity.github.io/helm-charts/ helm repo update helm search repo trivy helm install my-trivy aquasecurity/trivy ``` tn2>使用发布名称安装图表my-release: ```bash helm install my-release . ``` ## 快速开始 tn2>扫描指定镜像与漏洞只需要如下命令即可实现 ```bash trivy image [你的镜像名称] ``` tn2>扫描IAC文件目录,例如`Terraform` 和 `Dockerfile`。 ```bash trivy config [你的IAC目录] ``` ```bash # 举例 $ ls build/ Dockerfile $ trivy config ./build ``` ## 故障排查 >###扫描超时(Timeout) tn2>当扫描一个镜像过长,我们可以设置扫描超时的异常错误。 ```bash # 设置超时时间为15分钟 trivy image [你的镜像] --timeout 15m # 错误信息 analyze error: timeout: context deadline exceeded. ``` >###证书问题(Certification) tn2>当扫描时报错:`Error: x509: certificate signed by unknown authority`。 `TRIVY_INSECURE`参数可以允许容器注册表的不安全连接,来解决这个问题。 ```bash TRIVY_INSECURE=true trivy image [你的镜像] ``` >###GitHub限速 tn2>GitHub如果限速,需要传入Github的Token。不然就会报以下错误: ```bash API rate limit exceeded for xxx.xxx.xxx.xxx. ``` tn2>添加GitHub的Token ```bash GITHUB_TOKEN=XXXXXXXXXX trivy alpine:3.10 ``` >### Maven速率限制 tn2>Trivy 调用 Maven API 以更好地检测 JAR 文件,但许多请求可能会超出速率限制。 ```bash status 403 Forbidden from http://search.maven.org/solrsearch/select ``` tn2>`--offline-scan`阻止 Trivy 发出 API 请求的选项。此选项仅影响漏洞扫描。漏洞数据库和内置策略照常下载。 `--skip-update`和`--skip-policy-update`可以跳过它们。 >###下载漏洞数据库时出错 tn2>如果 trivy 在公司防火墙后面运行,您必须将以下 url 添加到您的允许列表中。 ```bash ghcr.io pkg-containers.githubusercontent.com ``` >### 重试 ```bash # 未知错误 trivy image --reset ``` >### 按严重程度过滤漏洞 ```bash trivy image --severity HIGH,CRITICAL ruby:2.3.0 ``` >### 跳过数据库漏洞更新 tn2>Trivy总是在开始运行时更新其漏洞数据库。这通常很快,因为这是一个差异更新。但是如果你想跳过这一步,可以使用`--skip update`选项。 ```bash trivy image --skip-update python:3.4-alpine3.9 ``` >### 仅更新指定的发行版 tn2>默认情况下,Trivy总是为所有发行版更新其漏洞数据库。如果要命名要更新的指定发行版,请使用`--only-update`选项。 ```bash trivy image --only-update alpine,debian python:3.4-alpine3.9 trivy image --only-update alpine python:3.4-alpine3.9 ``` >### 仅下载漏洞数据库 tn2>您还可以让Trivy简单地检索漏洞数据库。这对于在连续集成系统中初始化工作人员很有用。在第一次运行中,`--only-update`选项被默默忽略。 ```bash trivy image --download-db-only trivy image --download-db-only --only-update alpine ``` >### 忽略未修复的漏洞 tn2>默认情况下,Trivy还检测未修补/未修复的漏洞。这意味着即使更新了所有软件包,也无法修复这些漏洞。如果要忽略它们,请使用`--ignore-unfixed`选项。 ```bash trivy image --ignore-unfixed ruby:2.3.0 ``` >### 指定退出代码 tn2>默认情况下,即使检测到漏洞,Trivy也会以代码0退出。如果要使用非零退出代码退出,请使用`--exit-code`选项。 ```bash trivy image --exit-code 1 python:3.4-alpine3.9 ``` tn2>此选项对CI/CD很有用。在以下示例中,只有在发现关键漏洞时,测试才会失败。 ```bash trivy image --exit-code 0 --severity MEDIUM,HIGH ruby:2.3.0 trivy image --exit-code 1 --severity CRITICAL ruby:2.3.0 ``` >### 忽略指定的漏洞,定义`.trivyignore`文件 ```bash $ cat .trivyignore # Accept the risk CVE-2018-14618 # No impact in our settings CVE-2019-1543 $ trivy image python:3.4-alpine3.9 ``` >### 指定缓存目录 ```bash trivy image --cache-dir /tmp/trivy/ python:3.4-alpine3.9 ``` >### 清除图像缓存 tn2>`--clear-cache`选项删除图像缓存。如果更新了具有相同标记的图像(例如使用最新标记时),此选项将非常有用。 ```bash trivy image --clear-cache python:3.7 ``` ## 常见检测问题 tn2>使用Trivy开源容器扫瞄器检测命名空间yavin中POD使用的具有严重漏洞的镜像。 查找具有High或Critical漏洞的镜像,并删除使用这些镜像的POD。 Trivy仅预装在集群的主节点上;它在基本系统或工作节点上不可用。必须连接到集群的主节点才能使用Trivy。 ```bash ssh xxx@xxx kubectl get po -n yavin -o yaml | grep 'image' trivy image | grep -i "High|Critical" #或者 trivy image --severity HIGH,CRITICAL [那些包名] #删除Pod....(控制器删除等) ``` tn2>参考: https://aquasecurity.github.io/trivy/v0.24.4/ https://0x1.gitlab.io/security/Trivy/
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
168篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
2篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术