felixnotka/audicia
GitHub: felixnotka/audicia
Audicia 是基于 Kubernetes Operator 的最小权限 RBAC 生成器,利用审计日志持续生成并评估合规策略。
Stars: 30 | Forks: 1
# Audicia
[](https://github.com/felixnotka/audicia/actions/workflows/pipeline.yaml)
[](https://github.com/felixnotka/audicia/actions/workflows/nightly.yaml)
[](LICENSE)
**Audicia** 是一个开源的 **Kubernetes RBAC 生成器** — 一个 Kubernetes Operator,它会观察审计日志并自动生成最小权限的 RBAC 策略。
🌐 [audicia.io](https://audicia.io) · 📖 [文档](https://audicia.io/docs) · 🚀 [快速开始](https://audicia.io/docs/getting-started/introduction)
```
403 Forbidden → Audit Event → Audicia → Role + RoleBinding → 200 OK
```
## 问题
每个 Kubernetes 集群都存在权限过大的 ServiceAccount。团队因为编写正确的 RBAC 太难而绑定 `cluster-admin`。Audicia 通过观察实际的 API 访问模式并自动生成满足它们的最小策略来修复这个问题。
## 目标
- **从审计日志中的运行时行为生成正确、最小的 RBAC 策略**。
- **作为 Kubernetes Operator 持续运行,支持检查点/恢复** — 而不是一次性脚本。
- **生成 GitOps 友好的输出,作为 Kubernetes CRD 集成到 ArgoCD、Flux 和标准工具链中**。
- **允许操作员通过可配置的策略旋钮控制策略严格程度**。
- **检测 RBAC 漂移** — 将观察到的使用与有效权限进行比较,用 **绿/黄/红** 合规评分标出过权访问。
## 非目标
- **Audicia 不会应用策略**。它生成 `AudiciaPolicyReport` CRD。由人工或经过审查的 GitOps 流水线应用它们。自动权限提升是一种安全反模式。
- **Audicia 不会强制策略**。那是 OPA/Gatekeeper 的领域。Audicia 生成策略,强制器执行它。
- **Audicia 不需要 Secret 访问、模拟或集群管理员权限**。它读取审计日志、读取 RBAC 绑定/角色(用于合规评分),并写入 CRD。仅此而已。
- **Audicia 不会取代静态扫描**。像 Trivy 这样的工具在静止状态下扫描 YAML。Audicia 分析运行时行为。两者应结合使用。
## 工作原理
```
graph LR
A[Audit Log] -->|File / Webhook| B[Audicia Operator]
B --> C[Normalize Subjects & Events]
C --> D[Filter Noise]
D --> E[Aggregate Rules]
E --> F[Apply Policy Strategy]
F --> G[RBAC Compliance Check]
G --> H[AudiciaPolicyReport CRD]
H -->|kubectl apply / GitOps| I[Role + RoleBinding]
```
1. **将 Audicia 指向你的审计日志** — 创建 `AudiciaSource` CR。
2. **Audicia 观察访问模式** — 它处理允许和拒绝的请求,归一化主体,处理子资源,并迁移已弃用的 API 组。
3. **Audicia 生成策略报告** — 包含 `.status` 中结构化观察结果和可直接应用的 YAML 清单的 `AudiciaPolicyReport` CR。
4. **Audicia 评估合规性** — 解析主体的当前 RBAC 绑定,并与观察到的使用进行比较,生成合规评分(绿/黄/红),显示主体有多过权。
5. **审查并应用** — 使用 `kubectl apply`、GitOps(ArgoCD/Flux)或即将推出的仪表板。
## 快速开始
```
# 从本地 Helm chart 安装操作符
helm install audicia ./deploy/helm -n audicia-system --create-namespace
# 将其指向您的审计日志(请参阅 docs/examples/ 中的清单文件)
kubectl apply -f audicia-source.yaml
# 检查生成的报告
kubectl get audiciapolicyreports --all-namespaces
```
## 示例输出
Audicia 观察到 `my-team` 命名空间中的 `backend` 服务账户调用 `GET pods` 和 `POST pods/exec`,并生成:
不再猜测。不再需要 `cluster-admin`。只需工作负载实际需要的权限。
### 合规输出
如果 `backend` SA 当前拥有一个广泛授予访问 Secrets、ConfigMaps 等权限的 Role,Audicia 会检测到漂移:
```
$ kubectl get apreport -n my-team
NAME SUBJECT KIND COMPLIANCE AGE
report-backend backend ServiceAccount Red 5m
```
```
status:
compliance:
score: 25
severity: Red
usedCount: 2
excessCount: 6
sensitiveExcess:
- secrets
```
这告诉你:该 SA 仅使用了其 8 个授权权限中的 2 个,并拥有未使用的 Secrets 访问权限。
## 配置
Audicia 允许你通过策略旋钮控制策略生成:
| 旋钮 | 选项 | 默认值 | 描述 |
|-------------|------------------------------------------|-------------------|-----------------------------------------------------|
| `scopeMode` | `NamespaceStrict`, `ClusterScopeAllowed` | `NamespaceStrict` | 生成 Roles 或也允许 ClusterRoles |
| `verbMerge` | `Smart`, `Exact` | `Smart` | 合并读类动词或保持精确 |
| `wildcards` | `Forbidden`, `Safe` | `Forbidden` | 从不生成 `*` 或在所有观察到的动词时允许 |
请参阅 [文档示例](docs/examples/) 获取完整的配置样例。
### 过滤评估
过滤器按有序的允许/拒绝链进行评估。**第一条匹配规则生效。** 如果没有规则匹配,默认允许事件。
```
filters:
# 1. Block all node-related noise first
- action: Deny
userPattern: "^system:node:.*"
# 2. Block control plane internals
- action: Deny
userPattern: "^system:kube-.*"
# 3. Only process events from specific namespaces
- action: Allow
namespacePattern: "^(production|staging)-.*"
# 4. Deny everything else (explicit deny-all at the end)
- action: Deny
userPattern: ".*"
```
常用方案:
- **仅屏蔽系统噪声:** 两个 `Deny` 规则用于 `system:node:*` 和 `system:kube-*`。其他一切正常通过。
- **命名空间允许列表:** `Deny` 系统噪声,然后 `Allow` 特定命名空间模式,最后以 `Deny .*` 结尾。
- **单团队聚焦:** `Deny` 所有系统用户,`Allow` 一个命名空间,`Deny` 其他一切。
## 文档
| 章节 | 描述 |
|---------------------------------------------------------|------------------------------------------------------------|
| [快速开始](docs/getting-started/introduction.md) | 介绍、安装和快速开始教程 |
| [架构](docs/concepts/architecture.md) | 系统设计、数据流图、组件分解 |
| [Webhook 设置](docs/guides/webhook-setup.md) | 通过 TLS/mTLS 进行实时 Webhook 摄入 |
| [功能参考](docs/reference/features.md) | 完整功能列表和配置选项 |
| [对比](docs/comparisons.md) | 与 audit2rbac、Trivy、OPA 等的功能对比 |
| [路线图](docs/roadmap.md) | 已完成、进行中、计划中 |
| [演示演练](docs/guides/demo-walkthrough.md) | Audicia 工作流程的分步演练 |
## 项目状态
Audicia 的核心已完成:v1alpha1 CRD、完整摄入管道(文件 + Webhook)、策略生成引擎和 RBAC 合规评分均已实现并在生产中经过测试。请参阅 [路线图](docs/roadmap.md) 了解下一步计划。
## 安全
对于漏洞报告,请参考 [SECURITY.md](SECURITY.md)。请勿公开提交安全漏洞问题。
## 许可证
Apache License 2.0。参见 [LICENSE](LICENSE)。
标签:3D图, ArgoCD, DevSecOps, DNS解析, EVTX分析, Flux, GitOps, Green Yellow Red 合规评分, Kubernetes Operator, Kubernetes 生态, Kubernetes 集群安全, RBAC, 上游代理, 安全合规, 审计日志, 开源项目, 日志审计, 最小权限原则, 服务账户权限, 权限控制, 权限漂移检测, 策略即代码, 策略报告 CRD, 网络代理, 聊天机器人安全, 自动化策略生成, 运行时行为观察