Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
kubeaudit — kubeaudit 可帮助您对照常见安全控制项审计您的 Kubernetes 集群。 | Kitploit
工具/GitHubGitHub/shopify/kubeaudit
云基础设施安全漏洞扫描器容器安全配置审计云安全DevSecOps错误配置Archived
GitHubshopify/kubeaudit

kubeaudit

kubeaudit 可帮助您对照常见安全控制项审计您的 Kubernetes 集群。

查看仓库
1.9k1892年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Build Status Go Report Card GoDoc

现在要求集群运行 Kubernetes >=1.19。

使用未注册的 kubernetes.io 注解进行覆盖标签将被弃用。很快将要求改用 kubeaudit.io。 更多背景请参考此讨论。

🚨 弃用通知 🚨

Kubeaudit 计划于 2024 年 10 月之前弃用。

我们正在积极寻找愿意接手该项目的维护者。如果您对继续开发和维护它充满热情,请与我们联系。

对于寻找替代方案的用户,我们建议迁移到 Kubebench,它提供类似功能且正在积极维护。

感谢社区的支持和贡献。

kubeaudit ☁️ 🔒 💪

kubeaudit 是一个命令行工具和一个 Go 包,用于审计 Kubernetes 集群中的各种安全关注点,例如:

  • 以非 root 用户运行
  • 使用只读根文件系统
  • 丢弃危险的能力,不添加新能力
  • 不以特权模式运行
  • 以及更多!

简而言之,kubeaudit 确保你部署的容器是安全的!

包

如需将 kubeaudit 作为 Go 包使用,请参阅包文档。

本 README 的其余部分将重点介绍如何将 kubeaudit 用作命令行工具。

命令行界面(CLI)

  • 安装
  • 快速开始
  • 审计结果
  • 命令
  • 配置文件
  • 覆盖错误
  • 贡献

安装

Brew

root@kitploit:~
brew install kubeaudit

下载二进制文件

Kubeaudit 有经过验证的稳定官方发布版本: 官方发布

自行构建

main 分支可能包含比稳定发布版本更新的功能。如果你需要尚未包含在发布版本中的新功能,请确保使用最新的 Go 并运行以下命令:

root@kitploit:~
go get -v github.com/Shopify/kubeaudit

从快速开始开始使用 kubeaudit,或查看所有支持的命令。

Kubectl 插件

前提条件:kubectl 1.12.0 或更高版本

kubectl 1.12.0 引入了外部函数的易插拔性,kubeaudit 可以通过以下方式作为 kubectl audit 调用:

  • 运行 make plugin 并将 $GOPATH/bin 添加到你的 PATH 中。

  • 或者将二进制文件重命名为 kubectl-audit 并将其放在 PATH 中。

Docker

我们不再向 Docker Hub 发布镜像(因为 Docker Hub 已停止为免费团队组织提供服务)。目前,旧镜像仍然可用,但可能会随时停止提供。我们将很快开始向 Github 容器注册表发布镜像。

如需在集群中将 kubeaudit 作为作业运行,请参阅在集群中运行 kubeaudit。

快速开始

kubeaudit 有三种模式:

  1. 清单模式
  2. 本地模式
  3. 集群模式

清单模式

如果使用 -f/--manifest 标志提供了 Kubernetes 清单文件,kubeaudit 将审计该清单文件。

示例命令:

root@kitploit:~
kubeaudit all -f "/path/to/manifest.yml"

示例输出:

root@kitploit:~
$ 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
...

如果未发现达到指定最低严重级别的错误,则返回以下内容:

root@kitploit:~
All checks completed. 0 high-risk vulnerabilities found

自动修复

清单模式还支持使用 autofix 命令自动修复所有安全问题:

root@kitploit:~
kubeaudit autofix -f "/path/to/manifest.yml"

要将修复后的清单写入新文件而非修改源文件,请使用 -o/--output 标志。

root@kitploit:~
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"

要根据 kubeaudit 配置文件中指定的自定义规则修复清单,请使用 -k/--kconfig 标志。

root@kitploit:~
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"

集群模式

Kubeaudit 可以检测自身是否在集群内的容器中运行。如果是,它将尝试审计该集群中的所有 Kubernetes 资源:

root@kitploit:~
kubeaudit all

本地模式

Kubeaudit 将尝试使用本地 kubeconfig 文件($HOME/.kube/config)连接到集群。可以通过 --kubeconfig 标志指定不同的 kubeconfig 路径。使用 -c/--context 标志指定 kubeconfig 的上下文。

root@kitploit:~
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster

有关 Kubernetes 配置文件的更多信息,请参阅 https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/

审计结果

Kubeaudit 生成三种严重级别的结果:

  • Error:安全问题或无效的 Kubernetes 配置
  • Warning:最佳实践建议
  • Info:信息性,无需操作。包括已覆盖的结果

可以使用 --minSeverity/-m 标志设置最低严重级别。

默认情况下,kubeaudit 以人类可读的方式输出结果。如果输出需要进一步处理,可以使用 --format json 标志将其设置为 JSON 格式。要输出为日志(之前的默认格式),请使用 --format logrus。某些输出格式包含颜色,便于在终端中阅读。要禁用颜色(例如,将输出发送到文本文件),可以使用 --no-color 标志。

你可以使用 --format sarif 标志生成 SARIF 格式的 kubeaudit 报告。要写入 SARIF 结果到文件,可以使用 > 重定向输出。例如:

root@kitploit:~
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif

如果存在严重级别为 error 的结果,kubeaudit 将以退出码 2 退出。可以使用 --exitcode/-e 标志更改此行为。

有关 kubeaudit 所有自定义选项,请参阅全局标志。

命令

审计器

审计器也可以单独运行。

全局标志

配置文件

kubeaudit 配置可用于两个目的:

  1. 仅启用部分审计器
  2. 为审计器指定配置

任何可以通过单个审计器标志指定的配置都可以在配置中表示。

配置格式如下:

root@kitploit:~
enabledAuditors:
  # 如果未明确设置为 "false",则审计器默认启用
  apparmor: false
  asat: false
  capabilities: true
  deprecatedapis: true
  hostns: true
  image: true
  limits: true
  mounts: true
  netpols: true
  nonroot: true
  privesc: true
  privileged: true
  rootfs: true
  seccomp: true
auditors:
  capabilities:
    # 将需要的能力添加到允许添加列表中,这样 kubeaudit 就不会报告错误
    allowAddList: ['AUDIT_WRITE', 'CHOWN']
  deprecatedapis:
    # 如果未指定版本且启用了 'deprecatedapis' 审计器,将为使用已弃用 API 定义的资源生成 WARN 结果。
    currentVersion: '1.22'
    targetedVersion: '1.25'
  image:
    # 如果未指定镜像且启用了 'image' 审计器,将为使用无标签镜像的容器生成 WARN 结果。
    image: 'myimage:mytag'
  limits:
    # 如果未指定限制且启用了 'limits' 审计器,将为未指定 CPU 或内存限制的容器生成 WARN 结果。
    cpu: '750m'
    memory: '500m'

有关每个审计器的更多详细信息,包括配置中针对特定审计器的配置描述,请参阅审计器文档。

注意:kubeaudit 配置与 --kubeconfig 标志指定的 kubeconfig 文件不同,后者指的是 Kubernetes 配置文件(参见本地模式)。另请注意,只有 all 和 autofix 命令支持使用 kubeaudit 配置。它不适用于其他命令。

注意:如果同时使用标志和配置文件,标志将优先。

覆盖错误

可以通过添加覆盖标签来忽略特定容器或 Pod 的安全问题。这意味着审计器将产生 info 结果而不是 error 结果,并且审计结果名称将追加 Allowed。每个审计器的文档中都记录了这些标签,但支持覆盖的审计器的通用格式如下:

覆盖标签由 key 和 value 组成。

key 是覆盖类型(容器或 Pod)和一个 覆盖标识符(每个审计器唯一,参见具体审计器的文档)的组合。根据覆盖类型,key 可以采取两种形式之一:

  1. 容器覆盖,覆盖该特定容器的审计器,格式如下:
root@kitploit:~
container.kubeaudit.io/[容器名称].[覆盖标识符]
  1. Pod 覆盖,覆盖 Pod 内所有容器的审计器,格式如下:
root@kitploit:~
kubeaudit.io/[覆盖标识符]

如果 value 设置为非空字符串,它将在 info 结果中显示为 OverrideReason:

root@kitploit:~
$ kubeaudit asat -f "auditors/asat/fixtures/service-account-token-true-allowed.yml"

---------------- Results for ---------------

  apiVersion: v1
  kind: ReplicationController
  metadata:
    name: replicationcontroller
    namespace: service-account-token-true-allowed

--------------------------------------------

-- [info] AutomountServiceAccountTokenTrueAndDefaultSAAllowed
   Message: Audit result overridden: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
   Metadata:
      OverrideReason: SomeReason

根据 Kubernetes 规范,value 必须不超过 63 个字符,并且必须为空或以字母数字字符([a-z0-9A-Z])开头和结尾,中间可以包含短划线(-)、下划线(_)、点(.)和字母数字字符。

可以将多个覆盖标签(针对多个审计器)添加到同一资源。

有关要覆盖的审计器的具体示例,请参阅相应的审计器文档。

要了解有关标签的更多信息,请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

贡献

如果你希望修复 bug、贡献功能或仅仅纠正一个拼写错误,欢迎随时这样做,但请遵循我们的行为准则。

  1. 创建你自己的分支!
  2. 获取源码:go get github.com/Shopify/kubeaudit
  3. 进入源码目录:cd $GOPATH/src/github.com/Shopify/kubeaudit
  4. 添加你的 fork 仓库作为远程 fork:git remote add fork https://github.com/you-are-awesome/kubeaudit
  5. 创建你的特性分支:git checkout -b awesome-new-feature
  6. 安装 Kind
  7. 运行测试以确认一切正常:USE_KIND=true make test(要在没有 Kind 的情况下运行测试:make test)
  8. 提交你的更改:git commit -am 'Adds awesome feature'
  9. 推送到分支:git push fork
  10. 签署贡献者许可协议
  11. 提交 PR(所有 PR 必须标注:🐛(Bug 修复)、✨(新功能)、📖(文档更新)或 ⚠️(破坏性更改))
  12. ????
  13. 获利

请注意,如果你在提交 PR 之前没有签署 CLA,可以在 PR 中添加一条 "I've signed the CLA!" 的评论来重新运行检查!

下载工具
命令描述文档
all运行所有可用的审计器,或使用 kubeaudit 配置指定的审计器。docs
autofix自动修复安全问题。docs
version打印当前 kubeaudit 版本。
命令描述文档
apparmor查找未使用 AppArmor 运行的容器。docs
asat查找使用自动挂载的默认服务账户的 Pod。docs
capabilities查找未删除推荐能力或添加新能力的容器。docs
deprecatedapis查找使用已弃用 API 版本定义的任何资源。docs
hostns查找启用了 HostPID、HostIPC 或 HostNetwork 的容器。docs
image查找未使用所需镜像版本(通过标签)或使用无标签镜像的容器。docs
limits查找超出指定 CPU 和内存限制的容器,或未指定限制的容器。docs
mounts查找挂载了敏感主机路径的容器。docs
netpols查找没有默认拒绝网络策略的命名空间。docs
nonroot查找以 root 身份运行的容器。docs
privesc查找允许权限提升的容器。docs
privileged查找以特权模式运行的容器。docs
rootfs查找未使用只读文件系统的容器。docs
seccomp查找未使用 Seccomp 运行的容器。docs
简写长参数描述
--format使用的输出格式(可选 "sarif", "pretty", "logrus", "json")(默认 "pretty")
--kubeconfig本地 Kubernetes 配置文件的路径。仅在本地模式下使用(默认 $HOME/.kube/config)
-c--context要使用的 kubeconfig 上下文名称
-f--manifest要审计的 yaml 配置路径。仅在清单模式下使用。可以使用 - 从标准输入读取。
-n--namespace仅审计指定命名空间中的资源。当前在清单模式下不支持。
-g--includegenerated在扫描中包括生成的资源(例如由 Deployment 生成的 Pod)。如果你希望 kubeaudit 为生成的资源生成结果(例如,如果你有自定义资源,或希望捕获所有者资源不再存在的孤立资源),可以使用此标志。
-m--minseverity设置要报告的最低严重级别(可选 "error", "warning", "info")(默认 "info")
-e--exitcode如果存在严重级别为 "error" 的结果时使用的退出码。通常 0 表示成功,非零代码表示错误。(默认 2)
--no-color输出中不使用颜色(默认 false)