云原生|kubernetes|安全漏扫神器trivy的部署和使用

news2024/11/28 2:56:12

前言:

云原生领域内的安全漏扫工具有clair和trivy是比较常用的,而安全漏扫工具是可以和harbor这样的私有仓库集成的,自harbor-1.21版以后都是默认使用trivy这个漏扫工具的,而在此之前是使用clair的。

那么,本文将就什么是trivy,trivy如何正确的部署,如何正确的使用做一个简单的探讨。

一,

什么是trivy?

trivy是一个主要运用在云原生领域的安全漏扫工具,是一种易于使用的开源漏洞扫描器,可帮助团队“左移”将安全性纳入构建管道。

那么,trivy的工作范围主要是对用于生产或者即将用于生产的镜像进行安全漏洞扫描,例如,centos的某个基础镜像,这个 CentOS 在 2021 年 7 月 29 日至 8 月 10 日期间的下载量已超过 700 万次,但该镜像具有大量未修补漏洞并且没有正式弃用。如果在生产中使用这样的镜像无疑是一个巨大的安全隐患。

其次是文件系统,也可以扫描git 远程仓库以及kubernetes集群和kubernetes内的资源。

Targets:
- Container Image
- Filesystem
- Git repository (remote)
- Kubernetes cluster or resource

二,

如何正确的部署trivy?

trivy的安装方式比较多,可以rpm的形式安装,也可以apt的形式安装,也可以helm形式的直接集成到kubernetes内,也可以直接docker run 镜像的方式部署。

那么,比较常见的也是难度比较小的是rpm形式安装了。

下面是部署方式,

Get Trivy by your favorite installation method. See [installation] section in the documentation for details. For example:

- `apt-get install trivy`
- `yum install trivy`
- `brew install aquasecurity/trivy/trivy`
- `docker run aquasec/trivy`
- Download binary from https://github.com/aquasecurity/trivy/releases/latest/

这么说还是比较抽象,直接从GitHub下载rpm包上传到服务器上安装即可,我这里的服务器是centos7 64位的机器,因此选择下载trivy_0.34.0_Linux-64bit.rpm

下载地址:  Release v0.34.0 · aquasecurity/trivy · GitHub

 rpm安装就不用说了,直接安装即可,没有依赖。

trivy使用中的主要的困扰是需要联网从GitHub下载trivy-db 数据库,虽然有离线的trivy-db下载,但离线的通常是v1版本的,而高版本的trivy是使用的是v2

目前还没有比较好的解决办法,只有科学上网这一个办法了。

Releases · aquasecurity/trivy-db · GitHub

 

三,

trivy的使用

kubernetes集群的检测

检测内容有kubernetes集群的所有镜像,集群使用的role和clusterrole和静态pod

[root@k8s-master ~]# trivy k8s --report  summary cluster
2023-01-06T04:56:44.547+0800	INFO	Need to update DB
2023-01-06T04:56:44.547+0800	INFO	DB Repository: ghcr.io/aquasecurity/trivy-db
2023-01-06T04:56:44.547+0800	INFO	Downloading DB...
35.96 MiB / 35.96 MiB [------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 100.00% 5.23 MiB p/s 7.1s
159 / 159 [------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 100.00% 1 p/s

Summary Report for kubernetes-admin@kubernetes


Workload Assessment
┌─────────────┬────────────────────────────────────────┬────────────────────────┬────────────────────┬───────────────────┐
│  Namespace  │                Resource                │    Vulnerabilities     │ Misconfigurations  │      Secrets      │
│             │                                        ├────┬─────┬────┬────┬───┼───┬───┬───┬────┬───┼───┬───┬───┬───┬───┤
│             │                                        │ C  │  H  │ M  │ L  │ U │ C │ H │ M │ L  │ U │ C │ H │ M │ L │ U │
├─────────────┼────────────────────────────────────────┼────┼─────┼────┼────┼───┼───┼───┼───┼────┼───┼───┼───┼───┼───┼───┤
│ kube-system │ DaemonSet/kube-flannel-ds              │ 12 │ 124 │ 56 │ 16 │ 4 │   │ 1 │ 7 │ 16 │   │   │   │   │   │   │
│ kube-system │ Pod/kube-controller-manager-k8s-master │    │     │    │    │   │   │ 1 │ 3 │ 8  │   │   │   │   │   │   │
│ kube-system │ Service/kube-dns                       │    │     │    │    │   │   │   │ 1 │    │   │   │   │   │   │   │
│ kube-system │ Pod/kube-apiserver-k8s-master          │    │     │    │    │   │   │ 1 │ 3 │ 9  │   │   │   │   │   │   │
│ kube-system │ DaemonSet/kube-proxy                   │ 15 │ 14  │ 20 │ 58 │   │   │ 2 │ 4 │ 10 │   │   │   │   │   │   │
│ kube-system │ Pod/etcd-k8s-master                    │    │ 16  │ 8  │    │   │   │ 1 │ 3 │ 7  │   │   │   │   │   │   │
│ kube-system │ Deployment/coredns                     │    │  7  │ 3  │ 1  │   │   │   │ 3 │ 5  │   │   │   │   │   │   │
│ kube-system │ Pod/kube-scheduler-k8s-master          │    │     │    │    │   │   │ 1 │ 3 │ 8  │   │   │   │   │   │   │
│ default     │ Job/kube-bench                         │ 5  │ 34  │ 9  │ 1  │   │   │ 1 │ 3 │ 10 │   │   │   │   │   │   │
│ default     │ Job/kube-bench-master                  │ 1  │ 30  │ 9  │ 1  │   │   │ 1 │ 4 │ 10 │   │   │   │   │   │   │
└─────────────┴────────────────────────────────────────┴────┴─────┴────┴────┴───┴───┴───┴───┴────┴───┴───┴───┴───┴───┴───┘
Severities: C=CRITICAL H=HIGH M=MEDIUM L=LOW U=UNKNOWN


RBAC Assessment
┌─────────────┬─────────────────────────────────────────────────────────────────┬───────────────────┐
│  Namespace  │                            Resource                             │  RBAC Assessment  │
│             │                                                                 ├───┬───┬───┬───┬───┤
│             │                                                                 │ C │ H │ M │ L │ U │
├─────────────┼─────────────────────────────────────────────────────────────────┼───┼───┼───┼───┼───┤
│ kube-system │ Role/system::leader-locking-kube-scheduler                      │   │   │ 1 │   │   │
│ kube-system │ Role/system:controller:bootstrap-signer                         │ 1 │   │   │   │   │
│ kube-system │ Role/system:controller:token-cleaner                            │ 1 │   │   │   │   │
│ kube-system │ Role/system::leader-locking-kube-controller-manager             │   │   │ 1 │   │   │
│ kube-system │ Role/system:controller:cloud-provider                           │   │   │ 1 │   │   │
│ kube-public │ Role/system:controller:bootstrap-signer                         │   │   │ 1 │   │   │
│             │ ClusterRole/system:controller:horizontal-pod-autoscaler         │ 1 │   │   │   │   │
│             │ ClusterRole/system:controller:deployment-controller             │   │ 2 │   │   │   │
│             │ ClusterRole/edit                                                │ 2 │ 7 │ 1 │   │   │
│             │ ClusterRole/admin                                               │ 3 │ 7 │ 1 │   │   │
│             │ ClusterRole/system:controller:cronjob-controller                │   │ 2 │   │   │   │
│             │ ClusterRole/system:controller:endpointslicemirroring-controller │   │ 1 │   │   │   │
│             │ ClusterRole/system:kube-controller-manager                      │ 5 │ 2 │   │   │   │
│             │ ClusterRole/system:aggregate-to-edit                            │ 2 │ 7 │ 1 │   │   │
│             │ ClusterRole/system:controller:persistent-volume-binder          │ 1 │ 2 │   │   │   │
│             │ ClusterRole/system:controller:root-ca-cert-publisher            │   │   │ 1 │   │   │
│             │ ClusterRole/system:controller:replicaset-controller             │   │ 1 │   │   │   │
│             │ ClusterRole/system:aggregate-to-admin                           │ 1 │   │   │   │   │
│             │ ClusterRole/system:controller:resourcequota-controller          │ 1 │   │   │   │   │
│             │ ClusterRole/system:controller:endpoint-controller               │   │ 1 │   │   │   │
│             │ ClusterRole/system:node                                         │ 1 │   │   │   │   │
│             │ ClusterRole/system:controller:replication-controller            │   │ 1 │   │   │   │
│             │ ClusterRole/system:controller:job-controller                    │   │ 1 │   │   │   │
│             │ ClusterRole/system:controller:endpointslice-controller          │   │ 1 │   │   │   │
│             │ ClusterRole/system:controller:expand-controller                 │ 1 │   │   │   │   │
│             │ ClusterRole/cluster-admin                                       │ 2 │   │   │   │   │
│             │ ClusterRole/system:controller:namespace-controller              │ 1 │   │   │   │   │
│             │ ClusterRole/system:controller:generic-garbage-collector         │ 1 │   │   │   │   │
│             │ ClusterRole/system:kube-scheduler                               │   │ 2 │   │   │   │
└─────────────┴─────────────────────────────────────────────────────────────────┴───┴───┴───┴───┴───┘
Severities: C=CRITICAL H=HIGH M=MEDIUM L=LOW U=UNKNOWN


Infra Assessment
┌─────────────┬────────────────────────────────────────┬─────────────────────────────┐
│  Namespace  │                Resource                │ Kubernetes Infra Assessment │
│             │                                        ├────┬────┬────┬─────┬────────┤
│             │                                        │ C  │ H  │ M  │ L   │   U    │
├─────────────┼────────────────────────────────────────┼────┼────┼────┼─────┼────────┤
│ kube-system │ Pod/kube-apiserver-k8s-master          │    │    │ 1  │ 10  │        │
│ kube-system │ Pod/kube-controller-manager-k8s-master │    │    │    │ 3   │        │
│ kube-system │ Pod/kube-scheduler-k8s-master          │    │    │    │ 1   │        │
└─────────────┴────────────────────────────────────────┴────┴────┴────┴─────┴────────┘
Severities: C=CRITICAL H=HIGH M=MEDIUM L=LOW U=UNKNOWN

检测namespace kube-system下的所有镜像:

 a=`kubectl get po -n kube-system  --output=custom-columns="IMAGE:.spec.containers[*].image"`

for i in $a;do trivy image --skip-update  -s 'HIGH,CRITICAL' $i;done

这里解释一下,kubectl get po -n kube-system  --output=custom-columns="IMAGE:.spec.containers[*].image"是获取namespace下所有镜像的名称

[root@k8s-master ~]# kubectl get po -n kube-system  --output=custom-columns="IMAGE:.spec.containers[*].image"
IMAGE
registry.aliyuncs.com/google_containers/coredns:v1.8.6
registry.aliyuncs.com/google_containers/coredns:v1.8.6
registry.aliyuncs.com/google_containers/etcd:3.5.6-0
registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.15
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.15
quay.io/coreos/flannel:v0.13.0
quay.io/coreos/flannel:v0.13.0
quay.io/coreos/flannel:v0.13.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.15
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.15
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.15
registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.15

然后把这些镜像名称赋值给了变量a, 然后for循环trivy 检测这些镜像,检测的结果如下:

前面的内容略略略了
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.15 (debian 11.0)
=========================================================================
Total: 29 (HIGH: 14, CRITICAL: 15)

┌─────────────────┬────────────────┬──────────┬───────────────────┬─────────────────────────┬──────────────────────────────────────────────────────────────┐
│     Library     │ Vulnerability  │ Severity │ Installed Version │      Fixed Version      │                            Title                             │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ dpkg            │ CVE-2022-1664  │ CRITICAL │ 1.20.9            │ 1.20.10                 │ Dpkg::Source::Archive in dpkg, the Debian package management │
│                 │                │          │                   │                         │ system, b ...                                                │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1664                    │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ gzip            │ CVE-2022-1271  │ HIGH     │ 1.10-4            │ 1.10-4+deb11u1          │ gzip: arbitrary-file-write vulnerability                     │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1271                    │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libc-bin        │ CVE-2021-33574 │ CRITICAL │ 2.31-13           │ 2.31-13+deb11u3         │ glibc: mq_notify does not handle separately allocated thread │
│                 │                │          │                   │                         │ attributes                                                   │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-33574                   │
│                 ├────────────────┤          │                   │                         ├──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-23218 │          │                   │                         │ glibc: Stack-based buffer overflow in svcunix_create via     │
│                 │                │          │                   │                         │ long pathnames                                               │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-23218                   │
│                 ├────────────────┤          │                   │                         ├──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-23219 │          │                   │                         │ glibc: Stack-based buffer overflow in sunrpc clnt_create via │
│                 │                │          │                   │                         │ a long pathname                                              │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-23219                   │
│                 ├────────────────┼──────────┤                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                 │ CVE-2021-3999  │ HIGH     │                   │ 2.31-13+deb11u4         │ glibc: Off-by-one buffer overflow/underflow in getcwd()      │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-3999                    │
├─────────────────┼────────────────┼──────────┤                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libc6           │ CVE-2021-33574 │ CRITICAL │                   │ 2.31-13+deb11u3         │ glibc: mq_notify does not handle separately allocated thread │
│                 │                │          │                   │                         │ attributes                                                   │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-33574                   │
│                 ├────────────────┤          │                   │                         ├──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-23218 │          │                   │                         │ glibc: Stack-based buffer overflow in svcunix_create via     │
│                 │                │          │                   │                         │ long pathnames                                               │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-23218                   │
│                 ├────────────────┤          │                   │                         ├──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-23219 │          │                   │                         │ glibc: Stack-based buffer overflow in sunrpc clnt_create via │
│                 │                │          │                   │                         │ a long pathname                                              │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-23219                   │
│                 ├────────────────┼──────────┤                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                 │ CVE-2021-3999  │ HIGH     │                   │ 2.31-13+deb11u4         │ glibc: Off-by-one buffer overflow/underflow in getcwd()      │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-3999                    │
├─────────────────┼────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libcom-err2     │ CVE-2022-1304  │          │ 1.46.2-2          │                         │ e2fsprogs: out-of-bounds read/write via crafted filesystem   │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1304                    │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libdb5.3        │ CVE-2019-8457  │ CRITICAL │ 5.3.28+dfsg1-0.8  │                         │ sqlite: heap out-of-bound read in function rtreenode()       │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2019-8457                    │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libgcrypt20     │ CVE-2021-33560 │ HIGH     │ 1.8.7-6           │                         │ libgcrypt: mishandles ElGamal encryption because it lacks    │
│                 │                │          │                   │                         │ exponent blinding to address a...                            │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-33560                   │
├─────────────────┼────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libgmp10        │ CVE-2021-43618 │          │ 2:6.2.1+dfsg-1    │ 2:6.2.1+dfsg-1+deb11u1  │ gmp: Integer overflow and resultant buffer overflow via      │
│                 │                │          │                   │                         │ crafted input                                                │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-43618                   │
├─────────────────┼────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libgnutls30     │ CVE-2022-2509  │          │ 3.7.1-5           │ 3.7.1-5+deb11u2         │ gnutls: Double free during gnutls_pkcs7_verify               │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-2509                    │
├─────────────────┼────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ liblzma5        │ CVE-2022-1271  │          │ 5.2.5-2           │ 5.2.5-2.1~deb11u1       │ gzip: arbitrary-file-write vulnerability                     │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1271                    │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libpcre2-8-0    │ CVE-2022-1586  │ CRITICAL │ 10.36-2           │ 10.36-2+deb11u1         │ pcre2: Out-of-bounds read in compile_xclass_matchingpath in  │
│                 │                │          │                   │                         │ pcre2_jit_compile.c                                          │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1586                    │
│                 ├────────────────┤          │                   │                         ├──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-1587  │          │                   │                         │ pcre2: Out-of-bounds read in get_recurse_data_length in      │
│                 │                │          │                   │                         │ pcre2_jit_compile.c                                          │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1587                    │
├─────────────────┼────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libssl1.1       │ CVE-2021-3711  │          │ 1.1.1k-1          │ 1.1.1k-1+deb11u1        │ openssl: SM2 Decryption Buffer Overflow                      │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-3711                    │
│                 ├────────────────┤          │                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-1292  │          │                   │ 1.1.1n-0+deb11u2        │ openssl: c_rehash script allows command injection            │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1292                    │
│                 ├────────────────┤          │                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-2068  │          │                   │ 1.1.1n-0+deb11u3        │ openssl: the c_rehash script allows command injection        │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-2068                    │
│                 ├────────────────┼──────────┤                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                 │ CVE-2021-3712  │ HIGH     │                   │ 1.1.1k-1+deb11u1        │ openssl: Read buffer overruns processing ASN.1 strings       │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-3712                    │
│                 ├────────────────┤          │                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                 │ CVE-2022-0778  │          │                   │ 1.1.1k-1+deb11u2        │ openssl: Infinite loop in BN_mod_sqrt() reachable when       │
│                 │                │          │                   │                         │ parsing certificates                                         │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-0778                    │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libtasn1-6      │ CVE-2021-46848 │ CRITICAL │ 4.16.0-2          │ 4.16.0-2+deb11u1        │ libtasn1: Out-of-bound access in ETYPE_OK                    │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-46848                   │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libtirpc-common │ CVE-2021-46828 │ HIGH     │ 1.3.1-1           │ 1.3.1-1+deb11u1         │ libtirpc: DoS vulnerability with lots of connections         │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-46828                   │
├─────────────────┤                │          │                   │                         │                                                              │
│ libtirpc3       │                │          │                   │                         │                                                              │
│                 │                │          │                   │                         │                                                              │
├─────────────────┼────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ perl-base       │ CVE-2020-16156 │          │ 5.32.1-4+deb11u1  │                         │ perl-CPAN: Bypass of verification of signatures in CHECKSUMS │
│                 │                │          │                   │                         │ files                                                        │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2020-16156                   │
├─────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ zlib1g          │ CVE-2022-37434 │ CRITICAL │ 1:1.2.11.dfsg-2   │ 1:1.2.11.dfsg-2+deb11u2 │ zlib: heap-based buffer over-read and overflow in inflate()  │
│                 │                │          │                   │                         │ in inflate.c via a...                                        │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-37434                   │
│                 ├────────────────┼──────────┤                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                 │ CVE-2018-25032 │ HIGH     │                   │ 1:1.2.11.dfsg-2+deb11u1 │ zlib: A flaw found in zlib when compressing (not             │
│                 │                │          │                   │                         │ decompressing) certain inputs...                             │
│                 │                │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2018-25032                   │
└─────────────────┴────────────────┴──────────┴───────────────────┴─────────────────────────┴──────────────────────────────────────────────────────────────┘

registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.15 (debian 11.4)
=============================================================================
Total: 0 (HIGH: 0, CRITICAL: 0)

可以看到,kubernetes集群的核心组件用的镜像还是比较好的,漏洞基本没有,但flannel,etcd这些组件就比较多了。因此,kubernetes部署的时候还是推荐使用二进制部署etcd集群以及二进制部署flannel这些网络组件

单独检测一下kube-apiserver:

[root@k8s-master ~]# trivy image --skip-db-update registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.15
2023-01-06T06:08:45.348+0800	INFO	Vulnerability scanning is enabled
2023-01-06T06:08:45.348+0800	INFO	Secret scanning is enabled
2023-01-06T06:08:45.348+0800	INFO	If your scanning is slow, please try '--security-checks vuln' to disable secret scanning
2023-01-06T06:08:45.348+0800	INFO	Please see also https://aquasecurity.github.io/trivy/v0.34/docs/secret/scanning/#recommendation for faster secret detection
2023-01-06T06:08:45.355+0800	INFO	Detected OS: debian
2023-01-06T06:08:45.356+0800	INFO	Detecting Debian vulnerabilities...
2023-01-06T06:08:45.356+0800	INFO	Number of language-specific files: 0

registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.15 (debian 11.4)

Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)

OK,这个kube-apiserver是一个比较完美的目前还没有发现漏洞的镜像

单独检测一下kube-controller-manager,这个镜像同样表现完美:

[root@k8s-master ~]# trivy image --skip-db-update registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.15
2023-01-06T06:10:10.749+0800	INFO	Vulnerability scanning is enabled
2023-01-06T06:10:10.749+0800	INFO	Secret scanning is enabled
2023-01-06T06:10:10.749+0800	INFO	If your scanning is slow, please try '--security-checks vuln' to disable secret scanning
2023-01-06T06:10:10.749+0800	INFO	Please see also https://aquasecurity.github.io/trivy/v0.34/docs/secret/scanning/#recommendation for faster secret detection
2023-01-06T06:10:10.755+0800	INFO	Detected OS: debian
2023-01-06T06:10:10.755+0800	INFO	Detecting Debian vulnerabilities...
2023-01-06T06:10:10.756+0800	INFO	Number of language-specific files: 0

registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.15 (debian 11.4)

Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)

单独检测一下kube-proxy:

trivy image --skip-db-update registry.aliyuncs.com/google_containers/kube-proxy:v1.23.15

这个输出就比较多了,漏洞很多,14个高危漏洞,15个致命漏洞:

2023-01-06T06:11:19.285+0800	INFO	Vulnerability scanning is enabled
2023-01-06T06:11:19.285+0800	INFO	Secret scanning is enabled
2023-01-06T06:11:19.285+0800	INFO	If your scanning is slow, please try '--security-checks vuln' to disable secret scanning
2023-01-06T06:11:19.285+0800	INFO	Please see also https://aquasecurity.github.io/trivy/v0.34/docs/secret/scanning/#recommendation for faster secret detection
2023-01-06T06:11:19.292+0800	INFO	Detected OS: debian
2023-01-06T06:11:19.292+0800	INFO	Detecting Debian vulnerabilities...
2023-01-06T06:11:19.307+0800	INFO	Number of language-specific files: 0

registry.aliyuncs.com/google_containers/kube-proxy:v1.23.15 (debian 11.0)

Total: 107 (UNKNOWN: 0, LOW: 58, MEDIUM: 20, HIGH: 14, CRITICAL: 15)

┌──────────────────┬──────────────────┬──────────┬───────────────────┬─────────────────────────┬──────────────────────────────────────────────────────────────┐
│     Library      │  Vulnerability   │ Severity │ Installed Version │      Fixed Version      │                            Title                             │
├──────────────────┼──────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ apt              │ CVE-2011-3374    │ LOW      │ 2.2.4             │                         │ It was found that apt-key in apt, all versions, do not       │
│                  │                  │          │                   │                         │ correctly...                                                 │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2011-3374                    │
├──────────────────┼──────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ bsdutils         │ CVE-2021-3995    │ MEDIUM   │ 2.36.1-8          │ 2.36.1-8+deb11u1        │ util-linux: Unauthorized unmount of FUSE filesystems         │
│                  │                  │          │                   │                         │ belonging to users with similar uid...                       │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-3995                    │
│                  ├──────────────────┤          │                   │                         ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2021-3996    │          │                   │                         │ util-linux: Unauthorized unmount of filesystems in libmount  │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2021-3996                    │
│                  ├──────────────────┼──────────┤                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                  │ CVE-2022-0563    │ LOW      │                   │                         │ util-linux: partial disclosure of arbitrary files in chfn    │
│                  │                  │          │                   │                         │ and chsh when compiled...                                    │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-0563                    │
├──────────────────┼──────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ coreutils        │ CVE-2016-2781    │          │ 8.32-4            │                         │ coreutils: Non-privileged session can escape to the parent   │
│                  │                  │          │                   │                         │ session in chroot                                            │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2016-2781                    │
│                  ├──────────────────┤          │                   ├─────────────────────────┼──────────────────────────────────────────────────────────────┤
│                  │ CVE-2017-18018   │          │                   │                         │ coreutils: race condition vulnerability in chown and chgrp   │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2017-18018                   │
├──────────────────┼──────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ dpkg             │ CVE-2022-1664    │ CRITICAL │ 1.20.9            │ 1.20.10                 │ Dpkg::Source::Archive in dpkg, the Debian package management │
│                  │                  │          │                   │                         │ system, b ...                                                │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1664                    │
├──────────────────┼──────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ gpgv             │ CVE-2022-34903   │ MEDIUM   │ 2.2.27-2          │ 2.2.27-2+deb11u2        │ gpg: Signature spoofing via status line injection            │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-34903                   │
├──────────────────┼──────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ gzip             │ CVE-2022-1271    │ HIGH     │ 1.10-4            │ 1.10-4+deb11u1          │ gzip: arbitrary-file-write vulnerability                     │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2022-1271                    │
├──────────────────┼──────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ iptables         │ CVE-2012-2663    │ LOW      │ 1.8.7-1           │                         │ iptables: --syn flag bypass                                  │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2012-2663                    │
├──────────────────┼──────────────────┤          ├───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
│ libapt-pkg6.0    │ CVE-2011-3374    │          │ 2.2.4             │                         │ It was found that apt-key in apt, all versions, do not       │
│                  │                  │          │                   │                         │ correctly...                                                 │
│                  │                  │          │                   │                         │ https://avd.aquasec.com/nvd/cve-2011-3374                    │
├──────────────────┼──────────────────┼──────────┼───────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤
。。。。。。。。。。。。。。。。。。。。。。。。。后面的省略了

单独检测一下kube-scheduler,这个镜像同样表现接近完美:

[root@k8s-master ~]# trivy image --skip-db-update registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.15
2023-01-06T06:15:00.739+0800	INFO	Vulnerability scanning is enabled
2023-01-06T06:15:00.739+0800	INFO	Secret scanning is enabled
2023-01-06T06:15:00.739+0800	INFO	If your scanning is slow, please try '--security-checks vuln' to disable secret scanning
2023-01-06T06:15:00.739+0800	INFO	Please see also https://aquasecurity.github.io/trivy/v0.34/docs/secret/scanning/#recommendation for faster secret detection
2023-01-06T06:15:00.744+0800	INFO	Detected OS: debian
2023-01-06T06:15:00.744+0800	INFO	Detecting Debian vulnerabilities...
2023-01-06T06:15:00.744+0800	INFO	Number of language-specific files: 0

registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.15 (debian 11.4)

Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)

单独检测pause,这个镜像同样表现接近完美:

[root@k8s-master ~]# trivy image --skip-db-update registry.aliyuncs.com/google_containers/pause:3.6
2023-01-06T06:16:36.227+0800	INFO	Vulnerability scanning is enabled
2023-01-06T06:16:36.227+0800	INFO	Secret scanning is enabled
2023-01-06T06:16:36.227+0800	INFO	If your scanning is slow, please try '--security-checks vuln' to disable secret scanning
2023-01-06T06:16:36.227+0800	INFO	Please see also https://aquasecurity.github.io/trivy/v0.34/docs/secret/scanning/#recommendation for faster secret detection
2023-01-06T06:16:36.232+0800	INFO	Number of language-specific files: 0

单独检测coredns,这个镜像表现接近完美,只有一页的漏洞报告:

[root@k8s-master ~]# trivy image --skip-db-update registry.aliyuncs.com/google_containers/coredns:v1.8.6
2023-01-06T06:17:43.783+0800	INFO	Vulnerability scanning is enabled
2023-01-06T06:17:43.783+0800	INFO	Secret scanning is enabled
2023-01-06T06:17:43.783+0800	INFO	If your scanning is slow, please try '--security-checks vuln' to disable secret scanning
2023-01-06T06:17:43.783+0800	INFO	Please see also https://aquasecurity.github.io/trivy/v0.34/docs/secret/scanning/#recommendation for faster secret detection
2023-01-06T06:17:43.790+0800	INFO	Number of language-specific files: 1
2023-01-06T06:17:43.790+0800	INFO	Detecting gobinary vulnerabilities...

coredns (gobinary)

Total: 11 (UNKNOWN: 0, LOW: 1, MEDIUM: 3, HIGH: 7, CRITICAL: 0)

┌─────────────────────────────────────┬────────────────┬──────────┬────────────────────────────────────┬───────────────────────────────────┬──────────────────────────────────────────────────────────────┐
│               Library               │ Vulnerability  │ Severity │         Installed Version          │           Fixed Version           │                            Title                             │
├─────────────────────────────────────┼────────────────┼──────────┼────────────────────────────────────┼───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ github.com/aws/aws-sdk-go           │ CVE-2020-8911  │ MEDIUM   │ v1.40.54                           │                                   │ aws/aws-sdk-go: CBC padding oracle issue in AWS S3 Crypto    │
│                                     │                │          │                                    │                                   │ SDK for golang...                                            │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2020-8911                    │
│                                     ├────────────────┼──────────┤                                    ├───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│                                     │ CVE-2020-8912  │ LOW      │                                    │                                   │ aws-sdk-go: In-band key negotiation issue in AWS S3 Crypto   │
│                                     │                │          │                                    │                                   │ SDK for golang...                                            │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2020-8912                    │
├─────────────────────────────────────┼────────────────┼──────────┼────────────────────────────────────┼───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ github.com/prometheus/client_golang │ CVE-2022-21698 │ HIGH     │ v1.11.0                            │ 1.11.1                            │ prometheus/client_golang: Denial of service using            │
│                                     │                │          │                                    │                                   │ InstrumentHandlerCounter                                     │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2022-21698                   │
├─────────────────────────────────────┼────────────────┤          ├────────────────────────────────────┼───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ golang.org/x/crypto                 │ CVE-2021-43565 │          │ v0.0.0-20210513164829-c07d793c2f9a │ 0.0.0-20211202192323-5770296d904e │ golang.org/x/crypto: empty plaintext packet causes panic     │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2021-43565                   │
│                                     ├────────────────┤          │                                    ├───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│                                     │ CVE-2022-27191 │          │                                    │ 0.0.0-20220314234659-1baeb1ce4c0b │ golang: crash in a golang.org/x/crypto/ssh server            │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2022-27191                   │
├─────────────────────────────────────┼────────────────┤          ├────────────────────────────────────┼───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ golang.org/x/net                    │ CVE-2021-44716 │          │ v0.0.0-20210614182718-04defd469f4e │ 0.0.0-20211209124913-491a49abca63 │ golang: net/http: limit growth of header canonicalization    │
│                                     │                │          │                                    │                                   │ cache                                                        │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2021-44716                   │
│                                     ├────────────────┤          │                                    ├───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│                                     │ CVE-2022-27664 │          │                                    │ 0.0.0-20220906165146-f3363e06e74c │ golang: net/http: handle server errors after sending GOAWAY  │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2022-27664                   │
│                                     ├────────────────┼──────────┤                                    ├───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│                                     │ CVE-2022-41717 │ MEDIUM   │                                    │ 0.4.0                             │ An attacker can cause excessive memory growth in a Go server │
│                                     │                │          │                                    │                                   │ accepting...                                                 │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2022-41717                   │
├─────────────────────────────────────┼────────────────┤          ├────────────────────────────────────┼───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ golang.org/x/sys                    │ CVE-2022-29526 │          │ v0.0.0-20210917161153-d61c044b1678 │ 0.0.0-20220412211240-33da011f77ad │ golang: syscall: faccessat checks wrong group                │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2022-29526                   │
├─────────────────────────────────────┼────────────────┼──────────┼────────────────────────────────────┼───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ golang.org/x/text                   │ CVE-2021-38561 │ HIGH     │ v0.3.6                             │ 0.3.7                             │ golang: out-of-bounds read in golang.org/x/text/language     │
│                                     │                │          │                                    │                                   │ leads to DoS                                                 │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2021-38561                   │
│                                     ├────────────────┤          │                                    ├───────────────────────────────────┼──────────────────────────────────────────────────────────────┤
│                                     │ CVE-2022-32149 │          │                                    │ 0.3.8                             │ golang: golang.org/x/text/language: ParseAcceptLanguage      │
│                                     │                │          │                                    │                                   │ takes a long time to parse complex tags                      │
│                                     │                │          │                                    │                                   │ https://avd.aquasec.com/nvd/cve-2022-32149                   │
└─────────────────────────────────────┴────────────────┴──────────┴────────────────────────────────────┴───────────────────────────────────┴──────────────────────────────────────────────────────────────┘

flannel的表现是比较差劲的,漏洞比较多,47个高危漏洞,5个致命漏洞:

[root@k8s-master ~]# trivy image --skip-db-update quay.io/coreos/flannel:v0.13.0
2023-01-06T06:19:46.810+0800	INFO	Vulnerability scanning is enabled
2023-01-06T06:19:46.810+0800	INFO	Secret scanning is enabled
2023-01-06T06:19:46.810+0800	INFO	If your scanning is slow, please try '--security-checks vuln' to disable secret scanning
2023-01-06T06:19:46.810+0800	INFO	Please see also https://aquasecurity.github.io/trivy/v0.34/docs/secret/scanning/#recommendation for faster secret detection
2023-01-06T06:19:46.818+0800	INFO	Detected OS: alpine
2023-01-06T06:19:46.819+0800	INFO	Detecting Alpine vulnerabilities...
2023-01-06T06:19:46.821+0800	INFO	Number of language-specific files: 1
2023-01-06T06:19:46.821+0800	INFO	Detecting gobinary vulnerabilities...
2023-01-06T06:19:46.833+0800	WARN	This OS version is no longer supported by the distribution: alpine 3.12.0
2023-01-06T06:19:46.833+0800	WARN	The vulnerability detection may be insufficient because security updates are not provided

quay.io/coreos/flannel:v0.13.0 (alpine 3.12.0)

Total: 77 (UNKNOWN: 0, LOW: 6, MEDIUM: 19, HIGH: 47, CRITICAL: 5)
。。。。。。。。。。。。。。。。省略

由此,我们可以得出一个结论:

kubernetes集群的部署使用kubeadm是没什么问题的,但etcd,flannel。kube-proxy这些组件最好还是二进制部署。

附:

查看版本号命令可以看到,比较新的trivy是使用v2的数据库哦,并且trivy非常注意更新数据库,因此,第一次更新完数据库后,在使用的时候为了避免升级麻烦,最好还是命令加 --skip-db-update 这个参数

[root@k8s-master db]# trivy version
Version: 0.34.0
Vulnerability DB:
  Version: 2
  UpdatedAt: 2023-01-05 12:09:26.44058254 +0000 UTC
  NextUpdate: 2023-01-05 18:09:26.44058214 +0000 UTC
  DownloadedAt: 2023-01-05 20:56:55.46729581 +0000 UTC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验十七 VLAN间的三层通信

实验十七 VLAN间的三层通信配置要求:通过三层交换机实现VLAN间互通通过单臂路由实现VLAN间互通网络拓扑图:操作步骤:一、 通过三层交换机实现VLAN间互通1、配置交换机LSW1的接口为trunk接口,g0/0/1口允许vlan 10通过,g…

构建器/生成器模式Builder

1.意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2.结构 Builder为创建一个Product对象的各个部件指定抽象接口。 ConcreteBuilder实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的…

实验十五 IS-IS协议基本配置

实验十五 IS-IS协议基本配置IS-IS(中间系统到中间系统)协议与OSPF(开放最短路径优先)协议有许多类似之处, 如都是链路状态的IGP路由协议,采用的都SPF路由算法,都划分了区域。为了支持大规模 的路由网络,IS-IS在自治系统内采用骨丁…

四、MySQL 存储引擎及数据类型

文章目录一、前置知识二、MySQL 存储引擎(先了解,初步有个印象)2.1 MySQL 存储引擎的概念2.2 查询 MySQL 中支持的存储引擎2.3 InnoDB 存储引擎2.4 MyISAM 存储引擎2.5 MEMORY 存储引擎2.6 如何选择 MySQL 存储引擎?三、MySQL 数据类型3.1 数字类型3.2 日…

Dataway让SpringBoot不在需要Controller、Service、DAO、Mapper了

Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用…

君子签用区块链打造电子合同证据链闭环,提升电子合同证据效力

电子合同作为电子证据的主要表现形式,采用电子合同发生纠纷时,相关的电子合同数据成为证据证明的关键。运用区块链去中心化、分布式存储、加密可溯源等技术特性,让电子合同的整个过程都可以在互联网上安全地进行,帮助打通数据信任…

JavaERP系统源码+数据库,业务闭环、灵活稳定的企业级ERP系统,真正的财务业务一体化系统

JavaERP系统源码数据库,业务闭环、灵活稳定的企业级ERP系统,真正的财务业务一体化系统 完整代码下载地址:JavaERP系统源码数据库 产品展示 社区版 主界面 权限模块 职员与组织 科目结构 库存管理 库存盘点 订单管理 出入库管理 凭…

【Spring【AOP】】——21、@EnableAspectJAutoProxy注解详解?

📫作者简介:zhz小白 公众号:小白的Java进阶之路 专业技能: 1、Java基础,并精通多线程的开发,熟悉JVM原理 2、熟悉Java基础,并精通多线程的开发,熟悉JVM原理,具备⼀定的线…

Docker二进制安装

目录 1、选择安装目录 2、了解默认安装 3、Docker网络了解 docker官网 1、选择安装目录 安装包下载 链接:https://pan.baidu.com/s/1mbUl2XLnlN4xZuHbvRF-vg?pwdpdoq 提取码:pdoq docker官网 1、选择安装目录 docker指定数据存储目录到 /data/…

mysql 乐观锁和悲观锁

悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中…

二叉树的一些练习题

前言 二叉树的简单题目,通过画栈帧图去理解过程。画一画,走一走递归过程,理解会更加深刻。 二叉树练习题前言二叉树的创建二叉树先序遍历创建PreCreat二叉树层次创建LevelCreat二叉树的销毁BinaryTreeDestory二叉树求节点个数BinaryTreeSize二…

关于C语言输入输出的逗号问题(小细节)

C语言的输入输出必须要遵循scanf和printf的格式&#xff0c;就是你是什么格式你就要输入什么。 一、输入问题 #include <stdio.h> int main() { int a,b;scanf("%d,%d",&a,&b);printf("ab%d",ab);return 0; } 这个程序我们可以看到它运行…

【雷达开源数据集 | 代尔夫特数据集(VOD),4D雷达、激光雷达和相机数据】

本文编辑&#xff1a;调皮哥的小助理 1、介绍 代尔夫特视图 &#xff08;VoD&#xff09; 数据集是一种新颖的汽车数据集&#xff0c;包含 8600 帧同步和校准的 64 层 LiDAR、&#xff08;立体&#xff09;摄像头和 31D 雷达数据&#xff0c;这些数据是在复杂的城市交通中采集…

《编码 - 代码分析》代码结构分析

1 代码结构分析概述 在编写代码时&#xff0c;要求要结构清晰、接口简单。如果代码结构过于复杂&#xff0c;会带来很多问题&#xff1a;代码很难被理解&#xff0c;不方便编写测试用例&#xff0c;容易隐藏错误&#xff0c;出现问题难以定位&#xff0c;修改代码容易产生新的…

基于Java+SpringBoot+vue+elementui的校园文具商城系统详细设计和实现

基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录基…

前端学习框架

一&#xff0c;学习路线图 https://roadmap.sh/ 二&#xff0c;学习资源整理 https://developer.mozilla.org/zh-CN/docs/Learn // 学习web 的各种资源网站 三&#xff0c;知识整理 将前端分为三步走 JavaScript 语言&#xff08;模块一&#xff09;CSS 和 HTML&#x…

【Latex】1.Latex环境的安装与配置

文章目录前言1 安装环境2. 下载texstudio前言 LaTeX&#xff08;LATEX&#xff0c;音译“拉泰赫”&#xff09;是一种基于ΤΕΧ的排版系统&#xff0c;由美国计算机学家莱斯利兰伯特&#xff08;Leslie Lamport&#xff09;在20世纪80年代初期开发&#xff0c;利用这种格式&a…

sqlmap之绕过云锁waf

sql注入不会绕过WAF&#xff1f;关注我&#xff0c;让我带你由简入难实战各个WAF&#xff0c;前天我们实战了安全狗的WAF&#xff0c;今天先来看看比它难度更高的云锁WAF&#xff0c;你会绕吗&#xff1f;看我带你将它拿下 目录 一&#xff1a;环境配置 1.云锁WAF 2.sqli-l…

本地数仓项目(二)——搭建系统业务数仓详细流程

1 说明 本文基于《本地数据仓库项目(一)——本地数仓搭建详细流程》业务数据&#xff0c;在本地搭建系统业务数仓。 根据模拟sql脚本生成业务数据&#xff0c;依次执行生成业务数据即可。 sql脚本提供如下 链接&#xff1a;https://pan.baidu.com/s/1WX3xVMQvAApSUZMobWLiLQ…

Vue-cli创建项目的目录结构与子父组件之间的通信

一、Vue脚手架的使用1、通过命令行使用vue-cli的指令创建&#xff1a;vue init webpack 项目名称build文件夹&#xff1a; 用于webpack打包配置文件夹config文件夹&#xff1a;与webpack相关的配置文件夹|——- index.js&#xff1a;可以改变项目默认的端口号node_moudles&…