lexicone42/irone

GitHub: lexicone42/irone

基于Rust的AWS Security Lake安全分析平台,提供OCSF检测规则、调查图表构建和Lambda部署能力。

Stars: 0 | Forks: 0

irone logo

irone — 安全数据湖分析

Built with Claude Code

一个基于 Rust 的安全分析平台,专为 AWS Security Lake 设计。可对实时数据运行 OCSF 原生检测规则,构建调查图表,并部署为轻量级 AWS Lambda 函数。 "irone" 这个名字来源于鸢尾花中发现的有机化合物——同时包含 "iron"(铁),是对 Rust 的致敬。 ## 架构 ``` irone/ ├── irone-rs/ # Rust workspace (8 crates, 515+ tests) │ ├── irone-core/ # Config, connectors, catalog, detections, graph, reports, │ │ # playbooks (SOAR engine), investigator (Claude AI analysis) │ ├── irone-aws/ # Iceberg + Athena connectors, DynamoDB, SNS, SSM secrets │ ├── irone-persistence/ # redb-backed investigation + detection store │ ├── irone-auth/ # Cognito OAuth + Cedar authorization (via l42-token-handler) │ ├── irone-web/ # Axum web layer — 26 API endpoints, Lambda handler │ ├── irone-worker/ # Investigation enrichment worker (Step Functions) │ ├── irone-alerting/ # Scheduled detection + freshness alerting Lambda │ ├── irone-health-checker/ # Scheduled EventBridge Lambda for parallel health checks │ ├── rules/ # 53 OCSF detection rules (YAML) — AWS, EKS, GCP │ └── playbooks/ # 3 SOAR response playbooks (YAML) ├── frontend/ # Static Alpine.js frontend → S3 + CloudFront ├── infra/ # TypeScript CDK (5 stacks) ├── scenarios/ # Mock incident scenarios for interview prep ├── scripts/ # Deploy + migration scripts └── docs/ # Cost estimates, Rust patterns guide ``` ## 功能特性 - **AWS Security Lake**:通过直接 Iceberg 读取(亚秒级)或 Athena 回退方式查询 OCSF 格式数据 - **53 条 OCSF 检测规则**:AWS CloudTrail、EKS 审计日志和 GCP 审计日志,包含声明式字段过滤、MITRE ATT&CK 映射(跨 11 个战术的 42 种技术)和杀伤链阶段分类 - **调查图表**:从检测结果构建安全图表,包含 OCSF 实体提取、攻击路径分析、图表模式检测(PrivilegeFanout、ResourceConvergence、MultiSourceAuth、ServiceBridge)和基于 MAD 的异常评分 - **SOAR 剧本引擎**:声明式响应剧本,支持触发匹配、审批门禁(自动/手动/工作时间)和 10 种操作类型,包括 K8s 特定遏制 - **Claude AI 调查员**:将调查工件(图表、时间线、模式、异常)提供给 Claude 进行结构化分析——包括判定、置信度、建议操作和检测改进 - **零物化扫描路径**:列投影 + Arrow 原生过滤 + 延迟求值——在 10K 行 OCSF 数据集上比完整 JSON 物化快 381 倍 - **并行检测运行器**:53 条规则通过 `futures::join_all` 并发执行 - **自动化告警**:每小时检测扫描 + 15 分钟新鲜度检查,通过定时 Lambda 实现 - **健康监控**:DynamoDB 缓存的源健康检查,带历史跟踪 - **Cedar 授权**:RBAC,5 个组(管理员、检测工程师、SOC 分析师、事件响应者、只读)和 20 个细粒度操作 - **Passkey 认证**:通过 Cognito + l42-cognito-passkey 实现 WebAuthn/FIDO2 passkey 登录 - **供应链验证**:`cargo vet` 使用 Google + Mozilla 审计导入,`cargo deny` 用于 advisory/许可证检查 - **Lambda 部署**:约 16MB Web 包,约 13MB worker 包,冷启动 220ms,热启动 1-2ms ## 快速开始 ### 前置条件 - **Rust**(稳定工具链,edition 2024) - **AWS 凭证**已配置 - **cargo-lambda**(用于 Lambda 构建):`cargo install cargo-lambda` ### 构建与测试 ``` cd irone-rs cargo test --workspace # 515+ tests cargo build --release # Build all crates ``` ### 部署 ``` # 部署 Rust Lambda (web API) ./scripts/deploy_rust_lambda.sh web # 部署 Rust Lambda (health checker) ./scripts/deploy_rust_lambda.sh health # 部署两者 ./scripts/deploy_rust_lambda.sh # 部署前端到 S3 + CloudFront ./scripts/deploy_frontend.sh iris-frontend-415aeeaed7a5 EHQTNGR6VJ0YM # 部署 CDK 基础设施 ./scripts/deploy_cdk.sh ``` ### 检测规则 规则是位于 `irone-rs/rules/` 中的 OCSF 原生 YAML。每条规则针对一个 OCSF 事件类并应用声明式过滤: ``` id: detect-api-permission-enumeration name: API Permission Enumeration by IAM User description: > Detects a high volume of failed API calls from IAM users, which may indicate an attacker probing for accessible permissions. severity: high event_class: api_activity limit: 5000 threshold: 20 tags: - reconnaissance - permission-enumeration mitre_attack: - T1580 - T1526 data_sources: - cloudtrail filters: - field: status equals: Failure - field: actor.user.type equals: IAMUser ``` **53 条捆绑规则**,覆盖三个平台: - **AWS**(40 条):IAM 权限提升、根控制台登录、CloudTrail 篡改、跨账户角色假设、S3 数据收集、IMDS 凭证窃取、Lambda 层注入等 - **EKS/Kubernetes**(8 条):特权 Pod 创建、kubectl exec、RBAC 升级、Secret 访问、DaemonSet/CronJob 持久化、服务账户令牌窃取、NodePort 暴露 - **GCP**(5 条):审计日志篡改、服务账户密钥创建、IAM 策略更改、存储桶暴露、计算枚举 过滤操作符:`equals`、`not_equals`、`contains`、`in`、`regex`。 ### 配置 所有配置通过带 `SECDASH_` 前缀的环境变量: | 变量 | 描述 | |----------|-------------| | `SECDASH_SECURITY_LAKE_DB` | Security Lake 的 Glue 数据库 | | `SECDASH_USE_DIRECT_QUERY` | 启用直接 Iceberg 读取(绕过 Athena) | | `SECDASH_RULES_DIR` | YAML 检测规则目录 | | `SECDASH_HEALTH_CACHE_TABLE` | 健康缓存的 DynamoDB 表 | | `SECDASH_REPORT_BUCKET` | 报告存储的 S3 存储桶 | | `SECDASH_SESSION_BACKEND` | 会话后端(`dynamodb` 或 `memory`) | | `SECDASH_COGNITO_*` | Cognito OAuth 配置 | | `SECDASH_*_SSM` | SSM Parameter Store 的密钥名称(参见 [SECURITY.md](SECURITY.md)) | ## 开发 ### 提交前钩子 位于 `.githooks/pre-commit` 的原生 shell 钩子: - `cargo fmt --check` — 每次提交时进行格式检查 - `cargo clippy -- -D warnings` — 每次提交时进行 lint 检查 - `cargo deny check` — 每次提交时进行许可证/advisory/禁止检查(真实失败会阻止提交) 供应链:`cargo vet` 使用 Google + Mozilla 审计导入(60 个 crate 已审计,501 个已豁免)。 ### Rust 模式 参见 [docs/rust-patterns.md](docs/rust-patterns.md) 了解本代码库中使用的 Rust 模式和架构——对来自其他语言的贡献者很有帮助。 ### API 端点 `/api/` 下的 26 个 JSON API 端点: | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/api/health` | GET | 健康检查 | | `/api/auth/config` | GET | 前端认证配置 | | `/api/dashboard` | GET | 仪表板摘要 | | `/api/sources` | GET | 列出所有数据源 | | `/api/sources/health` | GET | 所有源的缓存健康状态 | | `/api/sources/{name}/health` | GET | 单个源的运行状况 | | `/api/sources/{name}/health/history` | GET | 源的运行状况历史 | | `/api/sources/refresh` | POST | 触发实时健康检查 | | `/api/rules` | GET | 列出所有检测规则 | | `/api/rules/{rule_id}` | GET | 获取单个规则 | | `/api/detections/history` | GET | 检测运行历史 | | `/api/detections/{rule_id}/run` | POST | 执行检测规则 | | `/api/query` | POST | 运行临时 OCSF 查询 | | `/api/investigations` | GET | 列出调查 | | `/api/investigations` | POST | 创建调查 | | `/api/investigations/from-detection` | POST | 检测 → 图表 → 时间线管道 | | `/api/investigations/seed` | POST | 从原始数据播种调查 | | `/api/investigations/{id}` | GET | 获取调查 | | `/api/investigations/{id}` | DELETE | 删除调查 | | `/api/investigations/{id}/graph` | GET | 获取调查图表 | | `/api/investigations/{id}/report` | GET | 获取调查报告 | | `/api/investigations/{id}/timeline` | GET | 获取调查时间线 | | `/api/investigations/{id}/attack-paths` | GET | 获取攻击路径分析 | | `/api/investigations/{id}/anomalies` | GET | 获取异常评分 | | `/api/investigations/{id}/patterns` | GET | 获取图表结构模式 | | `/api/investigations/{id}/enrich` | POST | 使用上下文丰富调查 | | `/api/investigations/{id}/timeline/tag` | POST | 标记时间线事件 | 认证路由(`/auth/*`)由 `l42-token-handler` 提供(Cognito OAuth 登录/登出/回调,passkey 管理)。 ## 安全 参见 [SECURITY.md](SECURITY.md) 了解安全设计决策和负责任的披露。 ## 许可证 Apache License 2.0 — 参见 [LICENSE](LICENSE) 了解详情。
标签:Alpine.js, AMSI绕过, Athena, AWS EKS, AWS Lambda, AWS Security Lake, Axum, Cedar, Claude AI, Cognito, C语言, DynamoDB, EventBridge, GCP, Iceberg, OCSF, redb, Rust, SOAR, Step Functions, TypeScript CDK, 可视化界面, 威胁检测, 安全运营, 恶意软件检测, 扫描框架, 检测规则, 网络流量审计, 网络资产发现, 调查图, 通知系统