ninejuan/eks-ai-threat-detection-and-response
GitHub: ninejuan/eks-ai-threat-detection-and-response
一个在AWS EKS环境中利用AI进行威胁检测和自动响应的安全解决方案。
Stars: 1 | Forks: 0
# ATDR;用于 EKS 的 AI 威胁检测与响应
这是一个在 Amazon EKS 环境中实时检测安全威胁,并通过 AI Agent Chain 进行分析和响应的架构。
## 架构

三重检测(Falco + Tetragon + GuardDuty)→ AI 四阶段分析(总结 → 分诊 → 解决方案 → 补救)→ 自动响应(Pod 隔离、SIGKILL、网络策略)+ 通过 Slack 进行人工审批。
## 快速开始
### 前置条件
- 已配置 AWS CLI v2 和凭证
- Terraform >= 1.10.0
- kubectl >= 1.35
- Helm >= 3.x
- Python 3.12
- make
### 1. 引导(仅首次执行)
```
./init.sh
```
创建 S3 后端存储桶并运行 terraform init。
### 2. 基础设施启动
```
make infra-up
```
通过 Terraform 创建全部 AWS 基础设施:
- VPC(2 可用区,公有/私有子网,NAT 网关)
- EKS 集群(v1.35,t3.large + c5.large 节点)
- IAM 角色(EKS、Lambda、Step Functions、Pod Identity)
- GuardDuty + Security Hub + EventBridge
- SNS/SQS + DLQ
- 6 个 Lambda 函数 + Step Functions 工作流
- API 网关(Slack 机器人)
- OpenSearch Serverless(知识库)
- KMS + S3(运维手册、取证、日志)
- DynamoDB(事件、审批审计)
- Secrets Manager
约需 15-20 分钟。完成后将自动配置 kubeconfig。
### 3. 配置密钥
```
make secrets
```
通过上述命令交互式设置 Slack Bot Token、Signing Secret 和 MCP Token。
**Slack 应用** — 当 `make infra-up` 完成时,会自动生成 `slack/manifest.json` 文件。此文件已包含注入的 API Gateway URL,可直接使用:
1. 访问 [api.slack.com/apps](https://api.slack.com/apps)
2. **创建新应用** → 选择 **从应用清单创建**
3. 粘贴 `slack/manifest.json` 的内容
4. 点击 **安装到工作区**
5. 复制 Bot Token 和 Signing Secret,并在下方的 `make secrets` 中输入
要手动重新生成清单:
```
make slack-manifest
```
**MCP 认证令牌** — 用于 Lambda 和 EKS MCP 服务器之间认证的共享密钥。生成一个随机字符串输入即可:
```
openssl rand -hex 32
```
输入的令牌将存储在 Secrets Manager(`atdr/mcp/auth-token`)中。Lambda 读取此密钥并通过 Bearer 头传递给 MCP 服务器,MCP 服务器则通过 External Secrets Operator 同步相同的值作为 K8s Secret,以验证请求。
### 4. 平台启动(Kubernetes 组件)
```
make platform-up
```
通过 Helm 部署安全/监控栈:
- AWS Load Balancer Controller
- Cilium + Hubble
- Falco + 自定义规则
- Tetragon + TracingPolicies
- EKS MCP Server
- kube-prometheus-stack (Prometheus + Grafana + Alertmanager)
- Loki
- External Secrets Operator
- ValidatingAdmissionPolicy
约需 10-15 分钟。需要运行 Docker daemon 才能构建/推送 EKS MCP 镜像。
### 5. Lambda 代码部署
```
make deploy-lambdas
```
将实际的 Agent 代码上传到 Lambda。
### 6. 验证
```
make status
```
## 一次性完整部署
```
./init.sh # 최초 1회
make all-up # infra-up + secrets + platform-up
make deploy-lambdas # Lambda 코드 배포
```
## 完整删除
```
make all-down
```
按 `platform-down`(Helm 卸载)→ `infra-down`(terraform destroy)顺序清理。
## Make 目标
| 目标 | 描述 |
|------|------|
| `make infra-up` | Terraform apply + kubeconfig 配置 |
| `make infra-down` | platform-down + terraform destroy |
| `make platform-up` | Helm charts + K8s 清单部署 |
| `make platform-down` | Helm uninstall + 清单删除 |
| `make all-up` | infra-up + secrets + platform-up + deploy-lambdas |
| `make all-down` | platform-down + infra-down |
| `make deploy-lambdas` | 更新 Lambda 函数代码 |
| `make deploy-layer` | 部署 Lambda Layer |
| `make secrets` | 交互式配置 Slack/MCP 密钥 |
| `make scale-down` | 将节点组缩放至 0(节省成本) |
| `make scale-up` | 恢复节点组 |
| `make status` | 检查集群状态 |
| `make lint` | ruff + yamllint + terraform fmt 检查 |
| `make test` | 运行 pytest |
| `make build` | 打包 Lambda layer + 函数 |
| `make backup-db` | DynamoDB 按需备份 |
| `make clean` | 清理构建产物 |
## 目录结构
```
.
├── app/ # Lambda 함수 코드 (Python 3.12)
│ ├── agents/ # AI Agent handlers
│ │ ├── summary/ # 이벤트 요약 (Haiku)
│ │ ├── triage/ # 심각도 분류 (Haiku)
│ │ ├── solution/ # 대응 추천 (Sonnet + RAG)
│ │ └── remediation/ # 대응 실행 (Sonnet + MCP tool-use)
│ ├── ingestor/ # SQS → Step Functions 트리거
│ ├── slack_bot/ # Slack 이벤트/커맨드/승인 처리
│ ├── degraded_notifier/ # AI 실패 시 fallback Slack 알림
│ └── shared/ # 공통 모듈 (Bedrock, DynamoDB, Slack, secrets)
├── terraform/
│ ├── modules/ # 재사용 Terraform 모듈
│ │ ├── vpc/ # VPC, 서브넷, NAT, Flow Logs
│ │ ├── eks/ # EKS 클러스터, 노드 그룹, Pod Identity
│ │ ├── iam/ # IAM 역할/정책
│ │ ├── guardduty/ # GuardDuty, Security Hub, EventBridge
│ │ ├── sns-sqs/ # SNS 토픽, SQS 큐, DLQ
│ │ ├── lambda/ # Lambda 함수, Layer, Step Functions
│ │ ├── slack/ # API Gateway + Slack Bot Lambda
│ │ ├── s3/ # S3 버킷 (runbooks, forensics, logs)
│ │ ├── kms/ # KMS 키 + alias
│ │ └── opensearch/ # OpenSearch Serverless (벡터 검색)
│ └── envs/demo/ # Demo 환경 구성 (모듈 조합)
├── kubernetes/
│ ├── falco/ # Falco Helm values + custom rules
│ ├── tetragon/ # Tetragon TracingPolicies
│ ├── monitoring/ # Prometheus, Grafana, Loki, Ingress
│ ├── external-secrets/ # ESO + ExternalSecrets
│ └── admission-policies/ # ValidatingAdmissionPolicy (CEL)
├── tests/ # pytest 단위 테스트
├── docs/ # 설계 문서 (Korean)
├── .github/workflows/ # CI (lint + test + terraform validate)
├── Makefile # 전체 빌드/배포/운영 자동화
├── init.sh # S3 backend 부트스트랩
└── AGENTS.md # 프로젝트 컨벤션
```
## 检测 → 响应流程
```
1. 위협 발생 (컨테이너 내 악성 행위)
│
2. 탐지 (Falco/Tetragon/GuardDuty)
│
3. 이벤트 라우팅 (SNS/EventBridge → SQS)
│
4. AI 분석 (Step Functions)
├── Summary Agent: 원시 이벤트 → 구조화된 요약
├── Triage Agent: 심각도 P1-P4 분류
├── Solution Agent: KB 검색 + 대응 추천
└── Remediation Agent: 대응 실행 (tool-use)
│
5. 대응 실행
├── P1/P2: Slack 알림 → Human Approval → 자동 격리
├── P3/P4: 자동 대응 또는 로그만
└── AI 실패 시: Degraded 모드 (raw alert → Slack)
│
6. Pod 격리 순서
├── MCP forensics snapshot (포렌식 증거 보존)
├── Tetragon SIGKILL label (아웃바운드 즉시 차단)
├── CiliumNetworkPolicy deny-all
└── Pod 삭제 + Deployment scale 0
```
## 可观测性
- **Grafana**:通过 `make status` 获取 ALB URL,然后在浏览器中访问(admin / atdr-demo)
- **Prometheus**:ATDR 专用告警规则(Falco 严重告警、Tetragon 策略违规、eBPF 限流、节点内存)
- **Loki**:收集容器日志并查询
通过 `make status` 获取 Grafana 访问地址。
## 安全加固
- EKS 私有 + 公有端点(CIDR 白名单)
- Cilium CNI(可启用 WireGuard 加密)
- ValidatingAdmissionPolicy:阻止特权容器、root UID、hostPath 挂载
- Pod Identity(替代 IRSA)
- KMS 加密(S3、DynamoDB、SQS、Secrets Manager)
- S3 对象锁定(取证存储桶 WORM)
- Secrets Manager + External Secrets Operator
## 攻击模拟
5 个场景(MITRE ATT&CK 映射):
| # | 场景 | 技术手法 |
|---|------|----------|
| 1 | 加密货币挖矿 | T1496 |
| 2 | 权限提升 / 容器逃逸 | T1611 |
| 3 | 密钥窃取 | T1552.007 |
| 4 | DNS 隧道 | T1071.004 |
| 5 | 横向移动 | T1210 |
攻击模拟场景和分步过程已整理在 `docs/11-runbooks/` 中。
## 开发
```
make lint # ruff + yamllint + terraform fmt
make lint-fix # 자동 수정
make test # pytest
make build # Lambda layer + 함수 패키징
```
## 成本
| 资源 | 每月预估成本 |
|------|--------------|
| EKS 集群 | ~$72 |
| t3.large + c5.large 节点 | ~$145 |
| NAT 网关 | ~$33 |
| OpenSearch Serverless (最少 2 OCU) | ~$345 |
| 其他(GuardDuty、Lambda、S3、DDB 等) | ~$20 |
| **合计** | **~$615/月** |
实验结束后,请使用 `make all-down` 全部清理。中途可通过 `make scale-down` 仅下线节点以节省 EC2 成本,但不推荐。
## 许可证
Apache 2.0 LICENSE
标签:AI安全, AMSI绕过, Apex, AWS安全, Chat Copilot, Chrome Headless, DevSecOps, ECS, EKS安全, Falco, FTP漏洞扫描, GuardDuty, Helm, Kubernetes安全, Python, Terraform, Web截图, 上游代理, 威胁检测, 安全事件, 安全响应, 安全治理, 安全编排, 安全运营, 容器安全, 扫描框架, 敏感词过滤, 无后门, 机器学习, 网络安全, 自动化响应, 自定义请求头, 逆向工具, 隐私保护