KubeHound:实践指南

作者:袖梨 2026-09-11

在项目中评估KubeHound,可以先看清用途边界:用于构建 Kubernetes 攻击路径的工具。一旦进入部署与运行环境环节,权限、依赖和环境差异会放大维护成本会直接影响交付,这也是我最关心的风险。短测时我会在非生产环境复现一次安装与运行,并保留依赖锁定、权限边界、日志、回滚和资源消耗的结果,方便团队复盘。它对愿意维护环境并重视故障恢复的工程团队更有价值,但正式采用前仍要复查许可证、近期提交和问题区回应。

KubeHound

Kubernetes 攻击图工具,允许自动计算集群中资产之间的攻击路径。

快速入门

要求

要运行 KubeHound,您需要几个依赖项

  • Docker >= 19.03
  • Docker Compose V2

安装

自发布

可通过 发布 页面或运行以下命令下载适用于 Linux / Windows / Mac OS 的二进制文件(Mac OS/Linux):

wget https://github.com/DataDog/KubeHound/releases/latest/download/kubehound-$(uname -o | sed 's/GNU///g')-$(uname -m) -O kubehound
chmod +x kubehound

MacOS Notes

如果通过浏览器下载版本,则必须在运行之前运行 e.g xattr -d com.apple.quarantine kubehound,以防止 MacOS 阻止执行

用自制的

KubeHound 在 homebrew-core 中可用,您只需运行

brew update && brew install kubehound

kubehound 现在应该在您的路径中。

从源头

如果您希望从源代码构建 KubeHound,则需要在构建之前签出标签

git clone https://github.com/DataDog/KubeHound.git
cd KubeHound
git checkout $(git describe --tags --abbrev=0)
make build

KubeHound 二进制文件将输出到 ./bin/build/kubehound

运行

选择目标 Kubernetes 集群:

  • 使用 kubectx
  • 通过导出环境变量来使用特定的 kubeconfig 文件:export KUBECONFIG=/your/path/to/.kube/config

然后,只需运行 kubehound 二进制文件:

# If you installed it from brew, it is in your path
kubehound

# If you installed it from release, it should be were you downloaded it
./kubehound

# If you installed it from source, it should be in the <repo_path>/bin/build folder
./bin/build/kubehound

有关更高级的用例和配置,请参阅

  • 高级配置:所有设置均可通过配置文件进行。
  • 常用操作:KubeHound 二进制文件 (dump / ingest) 中可用的命令。
  • 常见错误:故障排除指南。

注意: KubeHound 可以部署为服务 (KHaaS),了解更多信息。

使用KubeHound数据

要查询 KubeHound 图形数据,需要通过 API 调用或专用图形查询 UI 使用 Gremlin 查询语言。有许多功能齐全的图形查询 UIs 可供使用(商业和开源),但我们提供了基于 AWS 图形笔记本 的随附 Jupyter 笔记本,以快速展示 KubeHound 的功能。访问 UI:

  • 在浏览器中访问 http://localhost:8888/notebooks/KubeHound.ipynb
  • 使用默认密码 admin 登录(注意:这可以通过 Dockerfile 或通过在 .env 文件中设置 NOTEBOOK_PASSWORD 环境变量来更改)
  • 按照笔记本中的初始设置说明连接到 KubeHound 图形并配置渲染
  • 开始运行查询并探索图表!

示例查询

我们在 文档 中记录了一些要在数据库上执行的示例查询。已经开发了一个特定的 DSL 来查询图形以获取最基本的用例(KubeHound DSL)。

攻击路径示例

样本数据

要查看演示非常非常脆弱的集群中的攻击的示例图,您可以通过针对提供的类型集群运行应用程序来生成数据:

make sample-graph

要查看生成的图表,请参阅 使用 KubeHound 数据 部分。

从脚本中查询数据

例如,如果公开图形端点,您可以自动执行一些查询来收集一些 KPI 和元数据。

蟒蛇

您可以使用以下代码片段在 python 脚本中查询数据库数据:

#!/usr/bin/env python
import sys
from gremlin_python.driver.client import Client

KH_QUERY = "kh.containers().count()"
c = Client("ws://127.0.0.1:8182/gremlin", "kh")
results = c.submit(KH_QUERY).all().result()

您需要通过以下方式安装 gremlinpython 作为依赖项:pip install gremlinpython

更多信息

  • 有关应用程序架构的概述,请参阅 设计画布
  • 要查看所涵盖的攻击,请参阅 边缘定义
  • 要为该项目贡献新的攻击,请遵循 贡献指南

相关文章

精彩推荐