供应链安全-镜像 Trivy kubesec

这篇具有很好参考价值的文章主要介绍了供应链安全-镜像 Trivy kubesec。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开头语

写在前面:如有问题,以你为准,

目前24年应届生,各位大佬轻喷,部分资料与图片来自网络

内容较长,页面右上角目录方便跳转

Dockerfile 文件优化

  • 减少镜像层:一次RUN指令形成新的一层,尽量Shll命令都写在一行,减少镜像层。
  • 多阶段构建: 多阶段构建能够帮助我们大幅减少最终镜像的大小,而无需费力减少中间层和文件的数量
  • 清理无用文件:清理对应的残留数据,例如yu缓存。
  • 清理无用的软件包:基础镜像默认会带一些dbug工具,可以删除掉,仅保留应用程序所需软件,防止黑客利用。
  • 利用构建缓存: 构建镜像时,Docker 会逐步执行 Dockerfile 中的指令,并按照指定的顺序执行每个指令。在检查每条指令时,Docker 会在其缓存中查找可以重用的现有镜像,而不是创建新的(重复)镜像
  • 选择最小的基础镜像:例如alpine
  • 使用非root用户运行:USER指令指定普通用户

减少镜像层

可以通过下面查看镜像层构建

[root@master gvisor]# docker history busybox:1.30
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
64f5d945efcc   4 years ago   /bin/sh -c #(nop)  CMD ["sh"]                   0B
<missing>      4 years ago   /bin/sh -c #(nop) ADD file:e36dd1822f36a8169…   1.2MB

每跑一次RUN指令都是会导致多一层,所以尽量将多个要执行命令写在一个RUN里面

# 第一种方式
RUN ls && mkdir test && cd test
# 第二种方式
RUN ls && \
  mkdir test && \
  cd test

清理无用数据

可以构建镜像是加上如下命令

yum clean all && rm -rf /var/cache/yum/*

Trivy 镜像漏洞扫描工具

Trivy: 是一种用于容器镜像、文件系统、Git仓库的漏洞扫描工具。发现目标软件存在的漏洞。

Trivy: 易于使用,只需安装二进制文件即可进行扫描,方便集成CI系统。

https://github.com/aquasecurity/trivy
  • ArtifactDeatil 结构和 各类Analyzer 实现
  • trivy-db 的软件包漏洞列表
  • defsec 的配置检测规则

这些资源都可以活用于镜像安全的各类实施上。下面的源码分析内容建议结合 trivy 源码阅读,可以更好地理解一些细节

实操示例

[root@master images-security]# trivy image nginx:1.17.1
2023-11-14T02:26:55.898-0500    INFO    Need to update DB
2023-11-14T02:26:55.898-0500    INFO    DB Repository: ghcr.io/aquasecurity/trivy-db
2023-11-14T02:26:55.898-0500    INFO    Downloading DB...
1.01 MiB / 40.75 MiB [->______________________________________________________________________] 2.48% 435.31 KiB p/s ETA 1m33s
# 正在下载数据库,会因为网络问题下载不了
# trivy image --download-db-only 仅下载漏洞数据库
# trivy image nginx:1.17.1 --skip-db-update 跳过数据库下载,但是第一次不给跳过
# ERROR   The first run cannot skip downloading DB

Trivy 默认是每隔十二个小时就会更新一次漏洞库,离线情况下或者网络不好时可能就会更新失败;如果你想要获取最新的漏洞库就可以用这种方法手动去更新一下

漏洞数据库分为两个版本

version1 :有时候漏洞库真的下不下来 - 简书

Releases · aquasecurity/trivy-db · GitHub

version2:镜像安全扫描工具Trivy深入实践 - 知乎

Package trivy-db · GitHub

通过国外机器来下载

mkdir db
trivy --cache-dir ./db image --download-db-only
tar -cf ./db.tar.gz -C ./db/db metadata.json trivy.db

通过winscp或者软件拿到本地 /root/.cache/trivy

[root@master trivy]# tree
.
├── db
│   ├── metadata.json
│   └── trivy.db
├── fanal
│   └── fanal.db
└── java-db
    ├── metadata.json
    └── trivy-java.db

db等文件详细解析:镜像安全扫描工具Trivy深入实践 - 知乎

漏洞检测

[root@master trivy]# trivy image nginx:1.17.1 --skip-db-update --skip-java-db-update
2023-11-15T02:10:00.448-0500    INFO    Vulnerability scanning is enabled
2023-11-15T02:10:00.448-0500    INFO    Secret scanning is enabled
2023-11-15T02:10:00.448-0500    INFO    If your scanning is slow, please try '--scanners vuln' to disable secret scanning
2023-11-15T02:10:00.448-0500    INFO    Please see also https://aquasecurity.github.io/trivy/v0.46/docs/scanner/secret/#recommendation for faster secret detection
2023-11-15T02:10:26.595-0500    INFO    Detected OS: debian
2023-11-15T02:10:26.595-0500    INFO    Detecting Debian vulnerabilities...
2023-11-15T02:10:26.625-0500    INFO    Number of language-specific files: 0
2023-11-15T02:10:26.685-0500    WARN    This OS version is no longer supported by the distribution: debian 9.9
2023-11-15T02:10:26.685-0500    WARN    The vulnerability detection may be insufficient because security updates are not provided

nginx:1.17.1 (debian 9.9)

Total: 204 (UNKNOWN: 7, LOW: 40, MEDIUM: 52, HIGH: 74, CRITICAL: 31)

┌────────────────────────┬──────────────────┬──────────┬──────────────┬────────────────────────┬────────────────────────┬──────────────────────────────────────────────────────────────┐
│        Library         │  Vulnerability   │ Severity │    Status    │   Installed Version    │     Fixed Version      │                            Title                             │
├────────────────────────┼──────────────────┼──────────┼──────────────┼────────────────────────┼────────────────────────┼──────────────────────────────────────────────────────────────┤
│ apt                    │ CVE-2020-27350   │ MEDIUM   │ fixed        │ 1.4.9                  │ 1.4.11                 │ apt: integer overflows and underflows while parsing .deb     │
│                        │                  │          │              │                        │                        │ packages                                                     │
│                        │                  │          │              │                        │                        │ https://avd.aquasec.com/nvd/cve-2020-27350                   │
│                        ├──────────────────┤          │              │                        ├────────────────────────┼──────────────────────────────────────────────────────────────┤
│                        │ CVE-2020-3810    │          │              │                        │ 1.4.10                 │ Missing input validation in the ar/tar implementations of    │
│                        │                  │          │              │                        │                        │ APT before v ......                                          │
│                        │                  │          │              │                        │                        │ https://avd.aquasec.com/nvd/cve-2020-3810                    │

漏洞解析

供应链安全-镜像 Trivy kubesec,kubernetes,kubernetes,云原生,运维,安全

CVE-2016-2779 漏洞编号(可以进行通过编号去修复漏洞)

HIGH 级别

1:2.29.2-1+deb9u1 目前的版本

Title 其中网址打开就是漏洞介绍和修复方式

供应链安全-镜像 Trivy kubesec,kubernetes,kubernetes,云原生,运维,安全

常用命令

# 跳过拉取漏洞数据库
--skip-update=true
# 查看命令帮助
trivy -h
# 容器镜像扫描
trivy image nginx
trivy image -i nginx.tar
# 打印指定 (高危,严重)
trivy image -s HIGH,nginx
trivy image -s HIGH,CRITICAL nginx
# JSON 格式输出并保存到文件
trivy image nginx -f json -o ./output.json


trivy image nginx:1.18.0
trivy image --severity CRITICAL nginx:1.18.0
trivy image --severity CRITICAL, HIGH nginx:1.18.0
trivy image --ignore-unfixed nginx:1.18.0

# Scanning image tarball
docker save nginx:1.18.0 > nginx.tar
trivy image --input archive.tar

# Scan and output results to file
trivy image --output python_alpine.txt python:3.10.0a4-alpine
trivy image --severity HIGH --output /root/python.txt python:3.10.0a4-alpine

# Scan image tarball
trivy image --input alpine.tar --format json --output /root/alpine.json

kubesec 检测yaml文件安全配置

kubesec:是一个针对K8s资源清单文件进行安全配置评估的工具,根据安全配置

https://kubesec.io/ 
https://github.com/controlplaneio/kubesec

注:因为网络问题,所以手动下载检测文件

通过容器更方便,避免网络问题

命令示例

kubesec scan -h
# --schema-location 是本地json检测文件
主要是因为网络问题,所以建议自行下载后通过这个参数指定
[root@master kubesec]# kubesec scan deploy.yaml --schema-location deployment-apps-v1.json
[
  {
    "object": "Deployment/web.default",
    "valid": true,
    "fileName": "deploy.yaml",
    "message": "Passed with a score of 0 points",
    "score": 0,
    "scoring": {
      "advise": [
        {
          "id": "ApparmorAny",
          "selector": ".metadata .annotations .\"container.apparmor.security.beta.kubernetes.io/nginx\"",
          "reason": "Well defined AppArmor policies may provide greater protection from unknown threats. WARNING: NOT PRODUCTION READY",
          "points": 3
        },
        {
          "id": "ServiceAccountName",
          "selector": ".spec .serviceAccountName",
          "reason": "Service accounts restrict Kubernetes API access and should be configured with least privilege",
          "points": 3
        },

上图就是让你配置apparmor 和 SA

通过容器调用检测

开启一个容器,并将本地要检测的yaml传入返回结果

[root@master opa]# docker run -d -p 8080:8080 kubesec/kubesec http 8080
Unable to find image 'kubesec/kubesec:latest' locally
latest: Pulling from kubesec/kubesec
5843afab3874: Pull complete
0e12e15a6490: Pull complete
5a1816831e29: Pull complete
0e871d09ee04: Pull complete
c94217ef84fb: Pull complete
9412ea52a867: Pull complete
Digest: sha256:e8b73f2f8fd00508c0c7523600c43fe79300692b0a1f6f4eaf9cf1c1f341cb35
Status: Downloaded newer image for kubesec/kubesec:latest
b9d416dd87d7d738bdaf905faab99ad796bfa7210f01ed7b12dda731d2935bb1
curl -sSX POST --data-binary @deploy.yaml http://0.0.0.0:8080/scan

@deploy.yaml 为当前目录下的要检测的yaml文件文章来源地址https://www.toymoban.com/news/detail-789212.html

网络问题

185.199.111.133 raw.githubusercontent.com
[root@master kubesec]# kubectl create deploy web --image=nginx --dry-run=client -o yaml > deploy.yaml
[root@master kubesec]# kubesec scan deploy.yaml
[
  {
    "object": "Deployment/web.default",
    "valid": false,
    "fileName": "deploy.yaml",
    "message": "failed downloading schema at https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master-standalone-strict/deployment-apps-v1.json: Get \"https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master-standalone-strict/deployment-apps-v1.json\": dial tcp 0.0.0.0:443: connect: connection refused",
    "score": 0,
    "scoring": {}
  }
]
wget https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master-standalone-strict/deployment-apps-v1.json

 kubesec scan deploy.yaml --schema-location deployment-apps-v1.json

到了这里,关于供应链安全-镜像 Trivy kubesec的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 谷歌的开源供应链安全

    本内容是对Go项目负责人Russ Cox 在 ACM SCORED 活动上 演讲内容 [1] 的摘录与整理。 SCORED 是 Software Supply Chain Offensive Research and Ecosystem Defenses 的简称, SCORED 23 [2] 于2023年11月30日在丹麦哥本哈根及远程参会形式举行。 摘要 💡 谷歌在开源软件供应链安全方面的工作 🔐 介绍供应链安

    2024年02月03日
    浏览(70)
  • 信息安全-应用安全-蚂蚁集团软件供应链安全实践

    8月10日,由悬镜安全主办、以“开源的力量”为主题的DSS 2023数字供应链安全大会在北京·国家会议中心隆重召开。蚂蚁集团网络安全副总经理程岩出席并发表了《蚂蚁集团软件供应链安全实践》主题演讲。 图1 蚂蚁集团网络安全副总经理程岩发表主题演讲 以下为演讲实录:

    2024年02月10日
    浏览(48)
  • 封装阶段的软件供应链安全威胁

    随着软件开发沿着软件供应链生命周期进行,软件包阶段成为一个关键节点,将源代码转换为准备分发的可执行工件。然而,这个关键阶段也无法避免漏洞,使其成为恶意行为者寻求破坏软件完整性和安全性的主要目标。这篇博文深入研究了此阶段可能出现的普遍威胁,并概

    2024年03月15日
    浏览(52)
  • 全球软件供应链安全指南和法规

    供应链安全继续在网络安全领域受到重点关注,这是有充分理由的:SolarWinds、Log4j、Microsoft 和 Okta 软件供应链攻击等事件继续影响领先的专有软件供应商以及广泛使用的开源软件软件组件。 这种担忧是全球性的。随着各国政府寻求降低软件供应链攻击的风险,世界各地的法

    2024年02月02日
    浏览(36)
  • 软件供应链安全:寻找最薄弱的环节

    在当今的数字时代,软件占据主导地位,成为全球组织业务和创新的支柱。它是差异化、项目效率、成本降低和竞争力背后的驱动力。软件决定了企业如何运营、管理与客户、员工和合作伙伴的关系,以及充分利用他们的数据。 挑战在于,当今的大多数软件都不是从头开始开

    2024年04月17日
    浏览(51)
  • 开发安全、软件供应链安全及开源软件安全的概念差异

    开发安全、软件供应链安全和开源软件安全是在软件生命周期中不同阶段涉及到的安全概念,它们有着一些共同点,同时也存在一些显著的差异。以下是它们之间的比较总结: 范围 : 开发安全 :关注于整个软件开发过程中的安全性,包括代码编写、测试、部署等环节。 软

    2024年03月14日
    浏览(93)
  • 文献阅读笔记 # 开源软件供应链安全研究综述

    纪守领,王琴应,陈安莹,赵彬彬,叶童,张旭鸿,吴敬征,李昀,尹建伟,武延军.开源软件供应链安全研究综述.软件学报. http://www.jos.org.cn/1000-9825/6717.htm 主要作者来自浙江大学、中科院软件所、华为 资源: pdf 本文总结了开源软件供应链的关键环节, 基于近10年的攻击事件总结了开源软

    2024年02月12日
    浏览(46)
  • Gartner发布降低软件供应链安全风险指南

    软件供应链攻击已呈三位数增长,但很少有组织采取措施评估这些复杂攻击的风险。这项研究提供了安全和风险管理领导者可以用来检测和预防攻击并保护其组织的三种实践。 主要发现 尽管软件供应链攻击急剧增加,但安全评估并未作为供应商风险管理或采购活动的一部分

    2024年02月04日
    浏览(49)
  • 一文读懂什么是软件供应链安全

    今天的大部分软件并不是完全从头进行开发设计的。相反,现在的开发人员频繁的依赖一系列第三方组件来创建他们的应用程序。通过使用预构建的库,开发人员不需要重新发明轮子。他们可以使用已经存在的工具,花更多的时间在专有代码上。这些工具有助于区分他们的软

    2024年02月05日
    浏览(50)
  • 企业应如何做好软件供应链安全管理?

    随着软件供应链攻击日益普遍,Gartner 将其列为2022 年的第二大威胁。Gartner 预测,到 2025 年,全球 45% 的组织将遭受一次或多次软件供应链攻击,是2021年的3倍。这些攻击一旦成功,将给企业带来毁灭性打击,因此如何做好软件供应链管理成为企业关注的重要课题。 目前国内

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包