protosaditya21/Kubesentinel
GitHub: protosaditya21/Kubesentinel
Kubernetes 上 Agentic AI 工作负载的语义安全参考实现,通过 sidecar 过滤、Operator 策略编排和 eBPF 可观测性防御提示注入与数据渗出。
Stars: 1 | Forks: 0
# Kubernetes 的 AI 工作负载安全
Kubernetes 负责保障代码的运行环境和消费内容。本项目是一个参考实现,旨在通过结合语义 sidecar 过滤、基于 Kubernetes Operator 的集群范围策略,以及使用 Tetragon/eBPF 的内核级可观测性,来防御 Agentic LLM 工作负载。
**状态:** 早期参考实现,尚未经过生产环境强化。欢迎贡献代码 —— 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 概述
本仓库提供:
- 一个 sidecar 组件(低延迟过滤 + 可插拔分类器)。
- 一个 Kubernetes Operator,定义了两个 CRD:`AIPolicy` 和 `SemanticBudget`。
- 一个准入 webhook,用于根据声明的 `AIPolicy` 规则验证 agent 清单。
- 一个运行时聚合器 endpoint,sidecar 使用它来报告高风险判定结果,operator 使用这些结果进行预算/隔离决策。
- 可选的 Tetragon/eBPF 追踪,用于将内核级事件与语义判定相关联。
请在 [docs/architecture.md](docs/architecture.md) 中阅读设计原理和边界说明。
## 组件(查看重点)
- **Sidecar**:`sidecar/` —— 一层(regex)和二层(classifier 接口)过滤。将高风险调用报告给 operator 的运行时 endpoint。
- **API 类型**:`api/v1alpha1/` —— `AIPolicy` 和 `SemanticBudget` 的 Go 类型(见 `api/v1alpha1/*.go`)。
- **Controllers**:`controllers/` —— `AIPolicyReconciler`、`SemanticBudgetReconciler` 和 `RuntimeAggregator`(见 `controllers/*.go`)。
- **Webhook**:`webhook/v1alpha1/` —— 在准入阶段根据 `AIPolicy` 约束对 agent 清单进行验证。
- **Tetragon**:`deploy/tetragon/` —— 示例 eBPF 追踪策略和用于提供内核级证据的基线清单。
- **Rego**:`policies/rego/` —— 消耗风险信号的示例确定性策略规则。
## 快速开始(开发/测试)
前置条件:Kubernetes 1.27+,Helm 3,Docker/CRI 用于构建镜像。
在本地构建并部署 operator(minikube/kind):
```
# 构建 sidecar(如果使用已发布的镜像,则为可选)
cd sidecar && docker build -t /semantic-guardrail:dev .
# 构建 operator 镜像
cd .. && docker build -t /ai-workload-controller:dev .
# 应用 CRDs 和 RBAC
kubectl apply -f config/crd/bases/
kubectl apply -f config/rbac/role.yaml
# 安装 chart(或通过 'make run' 在本地运行 controller)
helm install ai-workload-controller charts/ai-workload-controller -n ai-security --create-namespace
```
部署示例 agent 和策略:
```
kubectl apply -f deploy/examples/agent-deployment.yaml
kubectl apply -f config/samples/aipolicy_sample.yaml
kubectl label namespace ai-agents ai-workload=true
kubectl apply -f config/webhook/manifests.yaml
```
验证步骤(健康/就绪状态、webhook 行为和预算模拟)请参见 [docs/deployment-guide.md](docs/deployment-guide.md)。
## CRD 参考(概述)
- `AIPolicy` (api/v1alpha1):
- `spec.identity` (string):此策略适用的 Agent 身份。必填。
- `spec.allowedTools` (list):允许 agent 调用的工具。
- `status.conditions`:`Accepted` 状态由 controller 设置;`status.quarantined` 由预算执行机制切换。
- `SemanticBudget` (api/v1alpha1):
- `spec.identity` (string):身份或选择器范围。
- `spec.maxHighRiskActionsPerHour` (int):预算阈值。
- `spec.quarantineOnBudgetExceeded` (bool):超出预算时是否切换隔离标志。
- `status.WindowStart` / `status.CurrentHighRiskActions`:由 controller 和运行时聚合器管理。
Controller 行为(见 `controllers/`):
- `AIPolicyReconciler` 验证策略结构并设置 `Accepted` 状态;它不直接执行运行时行为(由 `webhook/` 和 sidecar 执行)。
- `SemanticBudgetReconciler` 管理每小时的时间窗口,并在超出预算时触发隔离操作。
- 运行时判定接收由运行时聚合器在 `/v1/verdicts` 暴露(见 `controllers/runtime_aggregator.go`)。
## 示例 CR
针对支持 agent 的示例 `AIPolicy`(见 `config/samples/aipolicy_sample.yaml`):
```
apiVersion: security.internal/v1alpha1
kind: AIPolicy
metadata:
name: support-agent-policy
namespace: ai-agents
spec:
identity: support-agent
allowedTools:
- name: kb-search
riskTier: low
- name: ticket-update
riskTier: medium
requiresSyncCheck: true
- name: billing-refund
riskTier: high
requiresSyncCheck: true
maxCallsPerHour: 5
semanticBudget:
maxHighRiskActionsPerHour: 10
quarantineOnBudgetExceeded: true
```
独立 `SemanticBudget` 示例(见 `config/samples/semanticbudget_sample.yaml`):
```
apiVersion: security.internal/v1alpha1
kind: SemanticBudget
metadata:
name: support-agent-budget
namespace: ai-agents
spec:
identity: support-agent
maxHighRiskActionsPerHour: 10
maxTotalActionsPerHour: 200
quarantineOnBudgetExceeded: true
```
## 开发说明
- 在本地运行 controller 并带上调试标志:`go run ./main.go --metrics-bind-address=:8080 --health-probe-bind-address=:8081`。
- 当 `--enable-webhook` 为 true(默认)时,webhook 路径注册在 `/validate-agent-manifest`。
- 运行时聚合器监听 `:9443`(in-tree),用于接收来自 sidecar 的判定 POST 请求。
## 值得关注的文件
- `main.go` — manager 设置,controller 注册,webhook 注册。
- `controllers/aipolicy_controller.go` — 策略验证和状态更新。
- `controllers/semanticbudget_controller.go` — 预算生命周期和隔离逻辑。
- `config/samples/aipolicy_sample.yaml` — 示例策略。
- `deploy/examples/agent-deployment.yaml` — 示例 agent + sidecar 连接配置。
## 贡献
有关贡献指南和开发工作流,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
Apache 2.0 — 见 [LICENSE](LICENSE)。
标签:AI安全, Chat Copilot, Docker镜像, EVTX分析, Sidecar, 子域名突变, 日志审计, 结构化提示词, 请求拦截