关于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" >&2; 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传送门】
参考资料
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)