这个项目能做什么
# Nirmata Runtime For Kyverno
Nirmata Runtime 是一款基于 Kubernetes 的运行时安全工具,利用 eBPF 在内核级别监控并强制工作负载行为。它作为每个节点的 DaemonSet 运行,将 eBPF 程序附加到由集群范围的 `RuntimePolicy` 自定义资源选定的 Pod 上。
## 核心能力
`RuntimePolicy` 管理五种工作负载行为:
1. **文件打开** – 进程打开哪些文件
2. **二进制执行** – 执行哪些二进制文件
3. **网络目的地** – 流量发送到何处
4. **应用协议** – 使用哪些协议
5. **DNS 解析** – 解析哪些域名
决策在内核中做出,因此被拒绝的操作永远不会完成。这补充了 Kyverno 等准入控制器,后者在启动前验证 Pod 规范,而此工具则强制执行实际运行时行为。
## 主要特性
- **强制执行或监控模式**:策略可阻止操作(`mode: enforce`)或仅报告发现(`mode: monitor`),支持按策略配置。
- **基于 CEL 的规则**:使用通用表达式语言(CEL)和 Kyverno 的库,支持字面值、表达式和可重用变量。
- **默认拒绝与允许列表**:设置 `deny.values: ["*"]` 可将行为切换为除允许外全部拒绝。
- **Kubernetes 原生输出**:发现结果以 OpenReports `Report` 对象写入 Pod 命名空间,附带每节点状态条件和 Prometheus 计数器。
- **选择器范围**:策略可通过标签选择器在集群范围内定位 Pod 和命名空间。
- **定期重新评估**:`evaluationInterval` 重新运行策略表达式,以保持外部来源的拒绝列表最新。
## 快速开始
通过 Helm 安装:
```bash
helm install kyverno-runtime oci://ghcr.io/nirmata/charts/kyverno-runtime --namespace kyverno-runtime --create-namespace
```
示例:阻止 Pod 的特定 IP 地址:
```yaml
apiVersion: runtime.nirmata.io/v1alpha1
kind: RuntimePolicy
metadata:
name: block-address-sample
spec:
mode: enforce
podSelector:
matchLabels:
app: egress-client
behaviors:
- network:
deny:
values:
- "8.8.8.8"
```
## 限制(1.0 之前)
- 出口仅支持 IPv4;不支持 IPv6 字面值。
- 文件打开和执行强制执行需要内核中启用 BPF-LSM(`lsm=` 启动参数)。
- 网络、协议、打开和执行观察从 eBPF 计数器轮询,因此发现可能延迟并带有计数而非顺序。DNS 查询实时流式传输。
- 尚不支持异常。
## 文档
包括快速入门、概念、安装、平台支持(EKS、GKE、AKS、Bottlerocket)、示例、影子 AI 检测、故障排除以及 RuntimePolicy CRD、CEL 表达式和指标的参考文档。
## 许可证
Apache 许可证 2.0
评论
0 评分人数达到10人后显示
登录后参与讨论。