🚀 kube-audit-mcp
kube-audit-mcp 是一个模型上下文协议(MCP)服务器,它赋予 AI 代理、助手和聊天机器人查询 Kubernetes 审计日志的能力。
🚀 快速开始
安装
- 首先,从 发布页面 下载并安装最新版本。
docker pull quay.io/mozillazg/kube-audit-mcp:latest
- 然后,配置 Kubernetes 审计日志的提供者。详细信息请参考 配置 部分。
MCP 客户端
理论上,任何 MCP 客户端都可以与 kube-audit-mcp 配合使用。
标准配置 在大多数客户端中都适用:
{
"mcpServers": {
"kube-audit": {
"type": "stdio",
"command": "kube-audit-mcp",
"args": [
"mcp"
]
}
}
}
使用 Docker 运行
你也可以通过 Docker 运行 kube-audit-mcp,使用以下配置:
{
"mcpServers": {
"kube-audit": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/etc/kube-audit-mcp/config.yaml:/etc/kube-audit-mcp/config.yaml:ro",
"quay.io/mozillazg/kube-audit-mcp:latest",
"mcp",
"--config",
"/etc/kube-audit-mcp/config.yaml"
],
"env": {
"ALIBABA_CLOUD_ACCESS_KEY_ID": "needed_if_you_use_alibaba_sls_provider",
"ALIBABA_CLOUD_ACCESS_KEY_SECRET": "needed_if_you_use_alibaba_sls_provider",
"AWS_ACCESS_KEY_ID": "needed_if_you_use_aws_cloudwatch_logs_provider",
"AWS_SECRET_ACCESS_KEY": "needed_if_you_use_aws_cloudwatch_logs_provider",
"GOOGLE_APPLICATION_CREDENTIALS": "needed_if_you_use_gcp_cloud_logging_provider"
}
}
}
}
Claude Code
使用 Claude Code CLI 添加 kube-audit-mcp:
claude mcp add kube-audit kube-audit-mcp mcp
Claude Desktop
遵循 MCP 安装 指南,使用上述标准配置。
Gemini CLI
遵循 MCP 安装 指南,使用上述标准配置。
VS Code
遵循 MCP 安装 指南,使用上述标准配置。你也可以使用 VS Code CLI 安装 kube-audit-mcp MCP 服务器:
code --add-mcp '''{"name":"kube-audit","command":"kube-audit-mcp","args":["mcp"]}'''
安装完成后,kube-audit-mcp MCP 服务器将可在 VS Code 中与你的 GitHub Copilot 代理一起使用。
kubectl-ai
遵循 MCP 安装 [指南](https://github.com/GoogleCloudPlatform/kubectl-ai/blob/main/pkg/mcp/README.md#local-stdio-based-server-configuration),使用如下配置:
```yaml
servers:
# 本地 MCP 服务器(基于标准输入输出)
- name: kube-audit
command: kube-audit-mcp
args:
- mcp
```
传输选项
标准输入输出传输(默认)
默认的传输模式使用标准输入输出来进行通信。这是大多数客户端(如 Claude Desktop)使用的标准 MCP 传输方式。
# 使用默认的标准输入输出传输运行
kube-audit-mcp mcp
# 或者显式指定标准输入输出
kube-audit-mcp mcp --transport stdio
配置
kube-audit-mcp 需要一个配置文件来指定 Kubernetes 审计日志的提供者。配置文件通常位于 ~/.config/kube-audit-mcp/config.yaml,或者可以通过 --config 标志指定。
示例配置
你可以通过以下命令获取示例配置:
kube-audit-mcp sample-config
以下是一个示例配置文件
```yaml
default_cluster: prod # 要使用的默认集群
clusters: # 集群列表
- name: prod # 集群名称
provider: # 提供者配置,详情见下文
name: aws-cloudwatch-logs # 使用 CloudWatch Logs 作为提供者
aws_cloudwatch_logs:
log_group_name: /aws/eks/test/cluster # 替换为你的 CloudWatch Logs 日志组名称
- name: dev # 集群名称
provider:
name: alibaba-sls # 使用阿里云日志服务作为提供者
alibaba_sls:
endpoint: cn-hangzhou.log.aliyuncs.com # 替换为你的日志服务端点
project: k8s-log-cxxx # 替换为你的日志服务项目
logstore: audit-cxxx # 替换为你的日志服务日志库
- name: test
provider:
name: gcp-cloud-logging # 使用 Google Cloud Logging 作为提供者
gcp_cloud_logging:
project_id: test-233xxx # 替换为你的项目 ID
cluster_name: test-cluster # 替换为你的 GKE 集群名称(可选)
```
或者将示例配置保存到默认配置文件位置:
kube-audit-mcp sample-config --save
提供者
阿里云日志服务
前提条件:
RAM 权限
```json
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"log:GetLogStoreLogs"
],
"Resource": "*"
}
]
}
```
配置:
name: alibaba-sls
alibaba_sls:
endpoint: cn-hangzhou.log.aliyuncs.com
logstore: ${log_store}
project: ${project_name}
AWS CloudWatch Logs
前提条件:
- 安装并使用凭证配置 AWS CLI
- 确保你的 AWS IAM 用户或角色具有从指定的 CloudWatch Logs 日志组读取数据的必要权限。可以使用以下策略来授予必要的权限:
IAM 权限
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:StartQuery",
"logs:GetQueryResults"
],
"Resource": "*"
}
]
}
```
配置:
name: aws-cloudwatch-logs
aws_cloudwatch_logs:
log_group_name: /aws/eks/${cluster_name}/cluster
Google Cloud Logging
前提条件:
配置:
name: gcp-cloud-logging
gcp_cloud_logging:
project_id: ${project_id}
cluster_name: ${cluster_name}
可用工具
此 MCP 服务器向 AI 代理公开了以下工具:
query_audit_log
从配置的提供者处查询 Kubernetes 审计日志。这是调查集群活动的主要工具。
参数:
cluster_name(字符串,可选):要查询的集群名称。你可以使用 list_clusters 工具查看可用的集群。默认为配置的 default_cluster。
start_time(字符串,可选):查询的开始时间。可以是 ISO 8601 格式(2024-01-01T10:00:00)或相对时间(7d、1h、30m)。默认为 7d。
end_time(字符串,可选):查询的结束时间。如果省略,默认为当前时间。
limit(数字,可选):要返回的最大日志条目数。默认为 10,最大为 20。
namespace(字符串,可选):按特定命名空间过滤日志。支持后缀通配符(例如,kube-*)。
resource_types(字符串数组,可选):按一个或多个 Kubernetes 资源类型过滤(例如,pods、deployments)。支持短名称(例如,po、deploy)。使用 list_common_resource_types 来发现可用的类型。
resource_name(字符串,可选):按特定资源名称过滤。支持后缀通配符。
verbs(字符串数组,可选):按一个或多个操作动词过滤(例如,create、delete、update)。
user(字符串,可选):按执行操作的用户过滤。支持后缀通配符。
list_clusters
列出 config.yaml 文件中配置的所有集群。这有助于发现你可以针对哪些集群进行查询。
参数: 无
list_common_resource_types
返回常见的 Kubernetes 资源类型列表,按类别分组(例如,“核心资源”、“应用资源”)。这有助于为 query_audit_log 工具中的 resource_types 参数找到正确的值。
参数: 无