首页 > 其他分享 >使用Kubesec检查YAML文件安全

使用Kubesec检查YAML文件安全

时间:2024-06-22 16:55:51浏览次数:26  
标签:文件 Kubernetes kubesec YAML reason points Kubesec root

目录

一.系统环境

本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 18.04。

服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架构
Ubuntu 18.04.5 LTS Docker version 20.10.14 v1.22.2 x86_64

Kubernetes集群架构:k8scludes1作为master节点,k8scludes2,k8scludes3作为worker节点。

服务器 操作系统版本 CPU架构 进程 功能描述
k8scludes1/192.168.110.128 Ubuntu 18.04.5 LTS x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点
k8scludes2/192.168.110.129 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点
k8scludes3/192.168.110.130 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点

二.前言

在当今的云计算时代,Kubernetes已经成为容器化应用部署和管理的事实标准。然而,随着Kubernetes集群的规模不断扩大,如何确保集群的安全性成为了一个重要的问题。YAML文件是Kubernetes配置的主要载体,因此,检查YAML文件的安全性对于确保Kubernetes集群的安全至关重要。本文将介绍如何使用Kubesec工具来检查YAML文件的安全性。

使用Kubesec检查YAML文件安全的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Ubuntu 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/17632858.html。

三.Kubesec简介

Kubesec是一个开源的Kubernetes安全评估工具,由controlplaneio公司开发。它可以帮助用户发现和修复Kubernetes配置文件中的安全问题,从而提高集群的安全性。Kubesec通过分析YAML文件中的配置信息,识别潜在的安全风险,并提供修复建议。Kubesec官网为:https://kubesec.io/ ,在github上的网址为:https://github.com/controlplaneio/kubesec ,Kubesec安装包下载网址为:https://github.com/controlplaneio/kubesec/releases
Kubesec基于一组安全最佳实践和规则,对YAML文件进行深度分析。它采用了多种技术手段,包括正则表达式、字符串匹配和模式匹配等,来识别不安全配置。Kubesec还对Kubernetes API进行监控,以确保配置文件与API的兼容性。

四.使用Kubesec检查YAML文件安全

使用--dry-run=client生成一份创建pod的yaml文件,--dry-run 表示模拟运行,并不会真的创建一个pod , --dry-run=client输出信息少 ,--dry-run=server输出信息多, -o yaml表示以yaml文件的格式输出。

生成的pod yaml文件是最基本的yaml文件,很多安全设置并没有设置。

root@k8scludes1:~# kubectl run podyamlsafe --image=hub.c.163.com/library/centos:latest --image-pull-policy=IfNotPresent --dry-run=client -o yaml >podyamlsafe.yaml

下载好kubesec安装包。

root@k8scludes1:~# ll -h kubesec_linux_amd64.tar.gz 
-rw-r--r-- 1 root root 3.9M Jun 18 22:27 kubesec_linux_amd64.tar.gz

解压安装包。

root@k8scludes1:~# tar xf kubesec_linux_amd64.tar.gz 

root@k8scludes1:~# ll -h kubesec*
-rwxr-xr-x 1 1001 docker  11M Sep 22  2021 kubesec*
-rw-r--r-- 1 root root   3.9M Jun 18 22:27 kubesec_linux_amd64.tar.gz

移动kubesec可执行文件到/usr/local/bin/目录下。

root@k8scludes1:~# mv kubesec /usr/local/bin/

使用kubesec扫描yaml文件,显示出来的就是提高pod安全性的意见。

可以看到给出了很多安全建议,比如设置AppArmor策略,配置ServiceAccount,还有Seccomp系统调用等等。

root@k8scludes1:~# kubesec scan podyamlsafe.yaml 
[
  {
    "object": "Pod/podyamlsafe.default",
    "valid": true,
    "fileName": "podyamlsafe.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
        },
        {
          "id": "SeccompAny",
          "selector": ".metadata .annotations .\"container.seccomp.security.alpha.kubernetes.io/pod\"",
          "reason": "Seccomp profiles set minimum privilege and secure against unknown threats",
          "points": 1
        },
        {
          "id": "LimitsCPU",
          "selector": "containers[] .resources .limits .cpu",
          "reason": "Enforcing CPU limits prevents DOS via resource exhaustion",
          "points": 1
        },
        {
          "id": "LimitsMemory",
          "selector": "containers[] .resources .limits .memory",
          "reason": "Enforcing memory limits prevents DOS via resource exhaustion",
          "points": 1
        },
        {
          "id": "RequestsCPU",
          "selector": "containers[] .resources .requests .cpu",
          "reason": "Enforcing CPU requests aids a fair balancing of resources across the cluster",
          "points": 1
        },
        {
          "id": "RequestsMemory",
          "selector": "containers[] .resources .requests .memory",
          "reason": "Enforcing memory requests aids a fair balancing of resources across the cluster",
          "points": 1
        },
        {
          "id": "CapDropAny",
          "selector": "containers[] .securityContext .capabilities .drop",
          "reason": "Reducing kernel capabilities available to a container limits its attack surface",
          "points": 1
        },
        {
          "id": "CapDropAll",
          "selector": "containers[] .securityContext .capabilities .drop | index(\"ALL\")",
          "reason": "Drop all capabilities and add only those required to reduce syscall attack surface",
          "points": 1
        },
        {
          "id": "ReadOnlyRootFilesystem",
          "selector": "containers[] .securityContext .readOnlyRootFilesystem == true",
          "reason": "An immutable root filesystem can prevent malicious binaries being added to PATH and increase attack cost",
          "points": 1
        },
        {
          "id": "RunAsNonRoot",
          "selector": "containers[] .securityContext .runAsNonRoot == true",
          "reason": "Force the running image to run as a non-root user to ensure least privilege",
          "points": 1
        },
        {
          "id": "RunAsUser",
          "selector": "containers[] .securityContext .runAsUser -gt 10000",
          "reason": "Run as a high-UID user to avoid conflicts with the host's user table",
          "points": 1
        }
      ]
    }
  }
]

五.总结

使用Kubesec检查YAML文件安全性是一个简单而有效的方法,可以帮助识别和修复潜在的安全问题。通过遵循Kubesec的修复建议,可以显著提高Kubernetes集群的安全性。

标签:文件,Kubernetes,kubesec,YAML,reason,points,Kubesec,root
From: https://www.cnblogs.com/renshengdezheli/p/18262485

相关文章

  • MySQL-文件排序原理详解
    目录Usingfilesort文件排序原理详解filesort文件排序方式示例验证下各种排序方式:单路排序的详细过程:双路排序的详细过程:单路排序相对于双路排序具有以下特点:Usingfilesort文件排序原理详解filesort文件排序方式单路排序:是一次性取出满足条件行的所有字段,然后在s......
  • Docker文件迁移到TF卡或者U盘,最大限度减少空间占用
    简介:在docker的使用中随着下载镜像越来越多,构建镜像、运行容器越来越多,数据目录必然会逐渐增大;当所有docker镜像、容器对磁盘的使用达到上限时,就需要对数据目录进行迁移。前置工作在迁移前确认迁移的目标目录空间是否充足在迁移时需停止docker服务,务必在平台不使用时进行迁移......
  • three.js 第六节 - 纹理以及贴图【.hdr文件(hdr贴图)】- 色彩空间
    素材这是素材更多素材、案例、项目好几个G一共,加我q178373168,60大洋拿走源码源码//@ts-nocheck//引入three.jsimport*asTHREEfrom'three'//导入轨道控制器import{OrbitControls}from'three/examples/jsm/controls/OrbitControls'//导入lil.gui......
  • HTML5调用系统摄像头结合canvas进行拍照以及文件上传,调用结束后关闭浏览器对摄像头的
    html5部分<!--摄像头拍照--><el-buttonsize="mini"type="primary"class="cameraBtn"@click="confirm_camera">拍照</el-button><el-dialog:visible.sync="isShowCamera"title="拍照"......
  • 在Idea中隐藏指定文件/文件夹
    Idea创建SpringBoot工程时,标准的工程结构中包含了一些未知的文件夹,在开发的时候看起来特别别扭,如何隐藏呢。步骤①:打开设置,【Files】→【Settings】。步骤②:打开文件类型设置界面后,【Editor】→【FileTypes】→【IgnoredFilesandFolders】,忽略文件或文件夹显示。步......
  • 使用 C# 创建一个简单的文件下载器
    在这篇文章中,我们将介绍如何使用C#和WindowsForms创建一个简单的文件下载器。这个程序将读取一个包含下载链接的文件,并显示每个文件的下载进度。前置条件在开始之前,确保你已经安装了以下开发工具:VisualStudio.NETFramework步骤1:创建WindowsForms应用程序首先,我......
  • Linux 服务器如何安全地清理垃圾文件
    Linux服务器如何安全的清理垃圾文件在这现代的岁月,数码世界日益发展,凡是涉及计算,必然离不开那浩如烟海的数据,庞大如巨鲸的文件。若将目光转向我们的服务器,尤其是Linux服务器,垃圾文件的积累便如那墙角的蛛网,初时无人觉察,久之则令人难以忍受。清理这些垃圾文件,虽说并非什......
  • 如何将CSDN博客下载为Markdown文件
    嫌前面这段啰嗦可以直接拖到最后看下载方法解决方法:在代码里加一条$(“.left-toolbox”).remove();left-toolbox就是“关注”这个标签的类名,这句的意思就是把这个标签移除最终方法打开CSDN文章内容按键盘上的f12键(或者右键—审查元素)进入浏览器调试模式在控制台输......
  • 文件中勒索恢复
    勒索是一种新型bd,主要通过邮件、程序木马、网页挂马等形式进行传播。一旦感染,它会利用各种加密算法对文件进行加密,一般无法解决,必须拿到解密的私钥才有可能破解。该bd会修改壁纸,在桌面等明显位置生成lesuo提示文件,指导缴纳赎金。攻击的样本以exe、js、wsf、vbe等类型为主,对常规依......
  • 如何使用SQL工具批量执行SQL文件?(以MySQL和SQLynx为例)
    目录1.配置MySQL数据源2.打开SQL文件3.执行SQL文件4.检查执行结果5.SQL文件示例6.注意事项7.总结在现代数据库管理和操作中,批量执行SQL文件在MySQL中显现出其巨大的价值和不可替代的作用。通过将多个SQL语句集成在一个文件中进行批量处理,数据库管理......