kubeaudit是一款针对Kubernetes集群安全的审计工具,该工具基于命令行实现其功能,并通过Golang包帮助广大研究人员审计Kubernetes集群中的各种安全问题,其中包括以非root权限运行或使用只读root文件系统等等。
brew install kubeaudit
广大研究人员还可以直接访问该项目的【Releases页面】下载最新的官方稳定版。
该项目可能随时会进行代码更新,如需使用最新版本的功能,你可以选择进行自定义构建,在构建前别忘了在本地设备上安装并配置好Go v1.17+环境,然后运行下列命令:
go get -v github.com/Shopify/kubeaudit
该项目还提供了一个Docker镜像:shopify/kubeaudit,广大研究人员也可以通过Docker镜像来运行kubeaudit。
kubeaudit提供了以下三种模式:
1、Manifest模式 2、本地模式 3、集群模式
我们可以通过“-f/--manifest”选项来给工具提供一个Kubernetes Manifest文件,此时kubeaudit将会审计这个Manifest文件。
参考命令如下:
kubeaudit all -f "/path/to/manifest.yml"
输出结果如下:
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- Results for ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [error] AppArmorAnnotationMissing
Message: AppArmor annotation missing. The annotation 'container.apparmor.security.beta.kubernetes.io/container' should be added.
Metadata:
Container: container
MissingAnnotation: container.apparmor.security.beta.kubernetes.io/container
-- [error] AutomountServiceAccountTokenTrueAndDefaultSA
Message: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
-- [error] CapabilityShouldDropAll
Message: Capability not set to ALL. Ideally, you should drop ALL capabilities and add the specific ones you need to the add list.
Metadata:
Container: container
Capability: AUDIT_WRITE
...
如果没有报错并且没有安全问题的话,则会返回下列内容:
All checks completed. 0 high-risk vulnerabilities found
Manifest模式还支持使用“autofix”命令自动修复所有的安全问题:
kubeaudit autofix -f "/path/to/manifest.yml"
kubeaudit支持检测当前环境是否是集群中的一个容器,并尝试审计该集群中所有的Kubernetes资源:
kubeaudit all
kubeaudit将会使用本地kubeconfig文件($HOME/.kube/config)尝试与一个集群进行连接,可以使用“--kubeconfig”选项来指定kubeconfig路径:
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
本项目的开发与发布遵循MIT开源许可证协议。
https://github.com/Shopify/kubeaudit
https://pkg.go.dev/github.com/Shopify/kubeaudit
https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
精彩推荐