🚀 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 參數找到正確的值。
參數: 無