这个项目能做什么

# 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