devopsproxy/dp
GitHub: devopsproxy/dp
一款离线优先的 AWS 与 Kubernetes 确定性安全与成本审计引擎,支持跨云攻击路径追踪和爆炸半径分析。
Stars: 0 | Forks: 0
# DevOps Proxy (dp)
一款用于 AWS 和 Kubernetes 的确定性安全与成本审计引擎 —— 离线优先,基于规则,并支持可选的 AI 摘要功能。
## 功能简介
```
Internet → LoadBalancer → Workload → ServiceAccount → IAM Role
```
`dp` 通过收集真实的资源数据、运行确定性规则引擎,并对发现的问题进行严重性分级和预估节省金额,来审计您的云基础设施。当启用 `--show-risk-chains` 时,它会追踪从互联网入口一直到云 IAM 特权提升的**多层攻击路径**。
无需 Agent。不依赖 SaaS。可离线运行。输出格式为 JSON 或表格。
## 60 秒快速入门
**安装**
```
# macOS (Apple Silicon)
curl -L https://github.com/pankaj-dahiya-devops/Devops-proxy/releases/latest/download/dp__macOS_arm64.tar.gz | tar xz
chmod +x dp && sudo mv dp /usr/local/bin/
# 从源码安装 (Go 1.22+)
git clone https://github.com/pankaj-dahiya-devops/Devops-proxy.git
cd Devops-proxy && go build -o dp ./cmd/dp
```
**验证环境**
```
dp doctor
```
**运行您的第一次审计**
```
# AWS: cost + security + data protection in one shot
dp aws audit --all --summary
# Kubernetes: governance rules against current cluster
dp kubernetes audit --summary
```
**CI —— 遇到 HIGH+ 级别发现时中断流水线**
```
dp kubernetes audit --policy ./dp.yaml --exclude-system
echo $? # 1 if HIGH or CRITICAL findings exist
```
## 常用工作流
| 意图 | 命令 | 备注 |
|--------|---------|-------|
| 完整 AWS 审计 | `dp aws audit --all` | cost + security + dataprotection |
| 保存 JSON 报告 | `dp aws audit --all --file report.json` | 仍输出到 stdout |
| 限定单一区域 | `dp aws audit cost --region us-east-1` | |
| 所有 AWS 配置文件 | `dp aws audit --all --all-profiles` | 并行扩散执行 |
| K8s 表格输出 | `dp kubernetes audit` | 当前 kubeconfig 上下文 |
| K8s JSON 输出 | `dp kubernetes audit --output json` | 纯 JSON 输出到 stdout |
| K8s 精简摘要 | `dp kubernetes audit --summary` | 严重性统计 + 主要发现 |
| 排除系统干扰 | `dp kubernetes audit --exclude-system` | 丢弃 kube-system 发现 |
| 按风险分数过滤 | `dp kubernetes audit --min-risk-score 80` | 仅显示高分链条中的发现 |
| 显示攻击路径 | `dp kubernetes audit --show-risk-chains` | 按攻击路径/链分组输出 |
| 解释特定路径 | `dp kubernetes audit --show-risk-chains --explain-path 96` | 结构化分解 |
| 图形化可视化 | `dp kubernetes audit --show-risk-chains --attack-graph` | Mermaid 流程图 |
| Graphviz SVG | `dp kubernetes audit --show-risk-chains --attack-graph --graph-format graphviz \| dot -Tsvg > out.svg` | |
| 验证策略文件 | `dp policy validate --policy ./dp.yaml` | 不运行审计 |
| 检查环境 | `dp doctor` | 凭证, kubeconfig, 策略 |
| 爆炸半径 (工作负载) | `dp blast-radius deployment/platform-api` | 从工作负载可达的云资源 |
| 爆炸半径 (JSON) | `dp blast-radius deployment/platform-api --output json` | 结构化 JSON 输出 |
## 架构 (一段话概述)
**收集器** 从 AWS API 和 Kubernetes 收集原始数据。**规则引擎** 确定性地评估这些数据 —— 无需 LLM。**资产图 (Asset Graph)** 构建器使用实际的选择器匹配和 ownerReferences,而非启发式方法,将集群清单转换为真实的基础设施图 (`Internet → LoadBalancer → Workload → ServiceAccount → IAMRole`)。**攻击路径引擎** 在该图中寻找复合威胁场景。**输出渲染器** 将发现转化为表格、JSON、Mermaid/Graphviz 图或结构化的路径解释。策略过滤和 CI 强制执行发生在最后,因此始终会在评估退出代码之前写入完整报告。
```
Collectors → Rule Engine → Asset Graph → Correlation (chains + attack paths) → Policy → Output
```
## 攻击路径可视化
当启用 `--show-risk-chains` 时,`dp` 会检测五种攻击路径:
| 分数 | 名称 | 触发条件摘要 |
|-------|------|-----------------|
| **98** | 暴露的特权工作负载 | 公有 LB + root/CAP_SYS_ADMIN pod + 弱 SA 身份 |
| **96** | 跨云 IAM 提权 | 公有 LB + 特权 + 身份弱点 + 节点 IAM 权限过大 |
| **94** | EKS 控制平面暴露 | 公有 API 端点 + 弱 IAM + 日志禁用 |
| **92** | SA token 滥用链 | 默认 SA + automount token + 无 IRSA + 无 OIDC |
| **90** | 集群治理禁用 | 加密关闭 + 日志关闭 + 单节点集群 |
使用 `--attack-graph` 将攻击路径渲染为有向图:
```
dp kubernetes audit --show-risk-chains --attack-graph
```
```
graph TD
Internet["Internet"]
LoadBalancer_web["web-svc (prod)"]
Deployment_web["web (prod)"]
ServiceAccount_default["default (prod)"]
Internet --> LoadBalancer_web
LoadBalancer_web --> Deployment_web
Deployment_web --> ServiceAccount_default
```
每条边都反映了一个**真实的 Kubernetes 关系**(Service 选择器匹配、pod ownerReference、IRSA 注解)。Pod 会折叠到其父工作负载中 —— 无论副本数量如何,都只显示一个 `Deployment_*` 节点。
## 爆炸半径分析
`dp blast-radius` 通过遍历资产图,计算从给定的 Kubernetes 工作负载或服务账户可以到达哪些 AWS 云资源:
```
Workload → ServiceAccount → IAM Role → S3 Bucket / Secret / DynamoDB / KMS Key
```
```
# Table 输出
dp blast-radius deployment/platform-api
# JSON 输出
dp blast-radius deployment/platform-api --output json
# 以 ServiceAccount 为起点
dp blast-radius serviceaccount/api-sa
```
**表格输出示例:**
```
Blast Radius
Source: Deployment platform-api (infra)
Reachable identities:
IAM Role: platform-api-role
Reachable resources:
S3 Buckets:
- customer-data
- backups
Secrets:
- prod/db-password
```
**JSON 输出示例:**
```
{
"source": "deployment/platform-api",
"identities": ["platform-api-role"],
"resources": {
"s3": ["backups", "customer-data"],
"secretsmanager": ["prod/db-password"]
}
}
```
只有当引擎上配置了 `IAMAccessResolver` (Phase 12) 时,云资源节点才会出现在图中。如果没有连接 IAM 解析器,则只会将 IAM 角色节点本身报告为可达身份。
## 输出模式
| 标志 | 行为 |
|------|-----------|
| *(默认)* | 格式化表格输出到 stdout |
| `--output json` | 纯 JSON 输出到 stdout —— 无横幅,无表头 |
| `--summary` | 精简严重性分类 + 前 5 个发现 |
| `--file ` | 将完整 JSON 报告写入文件 (stdout 输出不变) |
**JSON 模式产生纯净输出** —— 可以安全地直接通过管道传输给 `jq` 或 `curl`。JSON 模式下会屏蔽 stderr 强制消息;退出代码仍会设置。
## 策略强制执行 (`dp.yaml`)
```
version: 1
domains:
cost:
enabled: true
min_severity: HIGH
security:
enabled: true
rules:
EC2_LOW_CPU:
enabled: false
SG_OPEN_SSH:
severity: CRITICAL
enforcement:
cost:
fail_on_severity: HIGH
security:
fail_on_severity: CRITICAL
```
策略位于规则评估和输出之间。它可以针对每个域和每条规则进行抑制、重新分级严重性或强制执行 CI 退出代码。将 `dp.yaml` 放在工作目录中以自动检测,或显式传递 `--policy ./dp.yaml`。
完整参考请见 [docs/policy.md](docs/policy.md)。
## 文档
| 主题 | 文件 |
|-------|------|
| AWS 审计 — 完整参考 | [docs/aws.md](docs/aws.md) |
| Kubernetes 审计 — 完整参考 | [docs/kubernetes.md](docs/kubernetes.md) |
| 策略文件 (`dp.yaml`) | [docs/policy.md](docs/policy.md) |
| JSON 输出, `--file`, CI 用法 | [docs/outputs-and-ci.md](docs/outputs-and-ci.md) |
| 架构深入解析 | [docs/architecture.md](docs/architecture.md) |
| 故障排除 | [docs/troubleshooting.md](docs/troubleshooting.md) |
| AWS & Kubernetes 权限 | [docs/security-and-permissions.md](docs/security-and-permissions.md) |
## 安装
**二进制文件 (推荐)**
Linux, macOS (Intel + Apple Silicon) 和 Windows 的预构建二进制文件位于 [GitHub Releases](https://github.com/pankaj-dahiya-devops/Devops-proxy/releases) 页面。
```
# Linux amd64
curl -L https://github.com/pankaj-dahiya-devops/Devops-proxy/releases/latest/download/dp__Linux_amd64.tar.gz | tar xz
chmod +x dp && sudo mv dp /usr/local/bin/
```
**从源码构建**
```
git clone https://github.com/pankaj-dahiya-devops/Devops-proxy.git
cd Devops-proxy
go build -o dp ./cmd/dp
```
需要 Go 1.22+。相应的审计命令需要 AWS 凭证和/或有效的 kubeconfig。
## 版本
```
dp version
# dp version v0.4.0 commit: a1b2c3d built: 2026-02-22
```
标签:AWS 审计, CI/CD 安全门禁, CISA项目, DevSecOps, EVTX分析, FinOps, Go 语言, IAM 风险评估, Kubernetes 安全, LNA, ProjectDiscovery, 上游代理, 云成本优化, 云计算, 安全合规, 攻击路径分析, 数据保护, 无代理安全, 日志审计, 服务器监控, 权限提升检测, 模型鲁棒性, 离线安全工具, 网络代理, 规则引擎, 负载均衡器