如何使用Kubesec执行Kubernetes资源安全风险分析

2024-11-29 83 0

关于Kubesec

Kubesec是一款针对Kubernetes的安全工具,在该工具的帮助下,广大研究人员可以轻松执行Kubernetes资源安全风险分析任务。

工具要求

Golang

工具安装

源码获取

直接使用下列命令即可获取工具源码:

$ git clone https://github.com/controlplaneio/kubesec.git

发布版本

广大研究人员还可以直接访问该项目的【Releases页面】下载Linux、macOS和Windows的二进制文件版本。

Go 1.16+

$ go install github.com/controlplaneio/kubesec/v2@latest

Go 版本 < 1.16

$ GO111MODULE="on" go get github.com/controlplaneio/kubesec/v2

基础使用

命令行用法:

$ kubesec scan k8s-deployment.yaml

使用示例:

$ cat <<EOF > kubesec-test.yaml

apiVersion: v1

kind: Pod

metadata:

  name: kubesec-demo

spec:

  containers:

  - name: kubesec-demo

    image: gcr.io/google-samples/node-hello:1.0

    securityContext:

      readOnlyRootFilesystem: true

EOF

$ kubesec scan kubesec-test.yaml

Docker使用

在 Docker 中运行下列的命令:

$ docker run -i kubesec/kubesec:v2 scan /dev/stdin < kubesec-test.yaml

指定自定义架构

使用上游的最新可用模式:

kubesec [scan|http]

使用上游的特定架构版本:

kubesec [scan|http] --kubernetes-version <version>

通过 HTTP 在隔离环境中使用特定的架构版本:

kubesec [scan|http] --kubernetes-version <version> --schema-location https://host.server

在具有本地文件的隔离环境中使用特定的架构版本:

kubesec [scan|http] --kubernetes-version <version> --schema-location /opt/schemas

打印扫描规则及其相关分数

所有扫描规则都可以以不同的格式打印(json(默认)、yaml 和表格):

kubesec print-rules

输出结果如下:

[

  {

    "id": "AllowPrivilegeEscalation",

    "selector": "containers[] .securityContext .allowPrivilegeEscalation == true",

    "reason": "Ensure a non-root process can not gain more privileges",

    "kinds": [

      "Pod",

      "Deployment",

      "StatefulSet",

      "DaemonSet"

    ],

    "points": -7,

    "advise": 0

  },

...

]

Kubesec HTTP 服务器

在后台启动 HTTP 服务器:

$ kubesec http 8080 &

[1] 12345

{"severity":"info","timestamp":"2019-05-12T11:58:34.662+0100","caller":"server/server.go:69","message":"Starting HTTP server on port 8080"}

使用 curl 将文件发布到服务器:

$ curl -sSX POST --data-binary @test/asset/score-0-cap-sys-admin.yml http://localhost:8080/scan

[

  {

    "object": "Pod/security-context-demo.default",

    "valid": true,

    "message": "Failed with a score of -30 points",

    "score": -30,

    "scoring": {

      "critical": [

        {

          "selector": "containers[] .securityContext .capabilities .add == SYS_ADMIN",

          "reason": "CAP_SYS_ADMIN is the most privileged capability and should always be avoided",

          "points": -30

        },

        {

          "selector": "containers[] .securityContext .runAsNonRoot == true",

          "reason": "Force the running image to run as a non-root user to ensure least privilege",

          "points": 1

        },

  // ...

最后,通过终止后台进程来停止 Kubesec 服务器:

$ kill %

Kubesec 即服务

命令行用法:

$ curl -sSX POST --data-binary @"k8s-deployment.yaml" https://v2.kubesec.io/scan

定义 BASH 函数:

$ kubesec ()

{

    local FILE="${1:-}";

    [[ ! -e "${FILE}" ]] && {

        echo "kubesec: ${FILE}: No such file" >&amp2;

        return 1

    };

    curl --silent \

      --compressed \

      --connect-timeout 5 \

      -sSX POST \

      --data-binary=@"${FILE}" \

      https://v2.kubesec.io/scan

}

将 Kubernetes 资源发布到 v2.kubesec.io/scan:

$ kubesec ./deployment.yml

示例输出

Kubesec 返回一个 JSON 数组,并且可以在单个输入文件中扫描多个 YAML 文档。

[

  {

    "object": "Pod/security-context-demo.default",

    "valid": true,

    "message": "Failed with a score of -30 points",

    "score": -30,

    "scoring": {

      "critical": [

        {

          "selector": "containers[] .securityContext .capabilities .add == SYS_ADMIN",

          "reason": "CAP_SYS_ADMIN is the most privileged capability and should always be avoided",

          "points": -30

        }

      ],

      "advise": [

        {

          "selector": "containers[] .securityContext .runAsNonRoot == true",

          "reason": "Force the running image to run as a non-root user to ensure least privilege",

          "points": 1

        },

        {

          // ...

        }

      ]

    }

  }

]

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可协议。

项目地址

Kubesec:【GitHub传送门

参考资料

https://kubesec.io/


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

MACOBOX:一款针对硬件安全的多合一渗透测试工具箱
Matildapp:针对Web 3.0环境的网络安全与渗透测试框架
Jumpserver_decrypto: 解密 Jumpserver ssh配置的开源工具
向日葵远程控制软件远程代码执行漏洞复现(CNVD-2022-10270, CNVD-2022-03672)
Kafka UI三大RCE高危漏洞分析
PbootCMS V3.2.9前台SQL注入漏洞(上)

发布评论