Khilesh-01/AdaPol

GitHub: Khilesh-01/AdaPol

AdaPol 是一个研究原型级 DevSecOps 系统,通过整合静态 IaC 分析与运行时审计遥测,利用整数线性规划形式化优化方法为多云无服务器工作负载自动合成最小权限 IAM 策略。

Stars: 0 | Forks: 0

# AdaPol:面向无服务器工作流的自适应多云最小权限策略合成 ## 1. 概述 AdaPol 是一个基于研究的原型级 DevSecOps 系统,旨在为部署在 **AWS、Azure 和 Google Cloud** 上的无服务器工作负载 **自动合成最小权限 IAM 策略**。AdaPol 的核心动机在于弥补*最小权限原则*与现实云实践之间的持续鸿沟,因为在实际场景中,无服务器函数通常会被赋予过多权限以避免运行时故障。 与仅依赖静态配置分析或回顾性访问报告的传统工具不同,AdaPol 集成了**静态基础设施即代码 分析**、**运行时审计遥测**以及**形式化优化技术**,以生成**可证明的最小化、函数级访问策略**。这些策略作为可部署的基础设施即代码工件直接输出,使 AdaPol 能够适合集成到现代的 CI/CD 和 DevSecOps 流水线中。 本仓库包含: * 完整的 AdaPol 实现(基于 CLI) * 多云遥测归一化逻辑 * 策略优化与验证引擎 * 示例工作负载和样本数据集 * 符合研究方向的文档和输出成果 AdaPol 主要用于**学术研究、高级课程学习和实验性安全工程**,而非直接用于生产环境部署。 ## 2. 研究基础与理论 AdaPol 建立在涵盖云安全、访问控制和无服务器计算的成熟研究基础之上。该系统基于三大关键理论支柱: 1. **最小权限访问控制** 云 IAM 系统要求对每个 API 操作进行显式授权。当授予的权限超出实际执行行为所需的范围时,就会产生权限过大的问题。AdaPol 将权限过大视为一种优化错误,并在保持功能正确性的同时,寻求最小化风险加权的权限。 2. **静态-动态分析集成** 静态 IaC 分析捕获的是*声明意图*(存在哪些资源以及它们如何连接),而运行时审计日志捕获的是*经验行为*(实际执行了哪些操作)。AdaPol 统一了这两种视图,以克服静态分析的过度近似和纯动态分析的不足近似问题。 3. **形式化优化 (ILP)** 策略合成被表述为一个受约束的优化问题,并使用整数线性规划 (ILP) 进行求解。这提供了形式化保证,证明在满足正确性约束的前提下,合成的策略相对于定义的风险指标是最小的。 这些基础理论在随本项目附带的研究论文中有详尽的阐述。 ## 3. 主要特性 - **多云支持**:AWS、Azure 和 Google Cloud Platform - **自动策略合成**:使用 ILP/SAT 优化以获取最小权限集 - **持续学习**:根据观察到的行为调整策略 - **IaC 集成**:生成 Terraform、CloudFormation、ARM 模板 - **沙盒验证**:在部署前测试策略 - **CI/CD 集成**:支持 GitHub、GitLab 和自定义流水线 - **实时监控**:持续合规与自适应调整 - **风险评分**:量化安全改进程度 ## 4. 系统架构 AdaPol 被实现为一个由多个松耦合组件组成的模块化流水线。每个组件在整体策略合成过程中都扮演着明确定义的角色。 ### 核心架构组件 * **IaC 分析器**:解析 Terraform 和 CloudFormation 文件,以提取无服务器函数、IAM 角色和资源依赖关系。 * **遥测收集器**:摄取云审计日志(AWS CloudTrail、Azure Activity Logs、GCP Audit Logs)。 * **遥测归一化器**:将异构云日志转换为统一的规范模式(受 OCSF 启发)。 * **行为分析器**:从归一化的遥测数据中构建以函数为中心的使用配置文件。 * **策略优化器**:使用 ILP 解决最小权限合成问题,并提供贪婪算法 作为后备方案。 * **沙盒验证器**:在受控执行环境中验证合成的策略。 * **持续监控器**:检测行为漂移并触发增量策略更新。 ### 架构图 ## 5. 系统流程(端到端执行) 系统流程展示了用户如何与 AdaPol 交互以及数据如何在系统中流动。 ### 高层流程 1. 用户提供 IaC 定义和运行时审计日志 2. AdaPol 解析基础设施并识别无服务器主体 3. 审计日志被归一化为统一模式 4. 构建函数级别的行为配置文件 5. 通过 ILP 优化执行策略合成 6. 生成的策略在沙盒中得到验证 7. 最终策略作为 IaC 工件输出 ### 系统流程图 ## 6. 配置 创建配置文件 `config/adapol.yaml`: ``` system: log_level: INFO output_directory: "./output" retention_days: 30 telemetry: collection_interval: 300 aws: regions: ["us-east-1", "us-west-2"] cloudtrail_enabled: true azure: subscription_ids: ["sub-123"] activity_log_enabled: true gcp: project_ids: ["project-123"] audit_log_enabled: true analysis: optimization_method: "ilp" # Options: ilp, greedy, hybrid outlier_threshold: 0.05 continuous_monitoring: enabled: true check_interval: 300 adaptation_threshold: 5 ``` ## 7. 仓库结构 ``` adapol/ ├── src/adapol/ # Core implementation ├── config/ # Configuration files ├── examples/ # Sample AWS / Azure / GCP workloads ├── sample_data/ # Example Terraform & event logs ├── adapol_output/ # Generated policies and reports ├── tests/ # Unit and integration tests ├── Dockerfile # Containerized deployment ├── docker-compose.yml # Multi-service setup ├── README.md # This file ``` ## 8. 安装 ### 从源码安装 ``` git clone https://github.com/your-org/adapol.git cd adapol pip install -e . ``` ### 本地安装 ``` python3 -m venv venv source venv/bin/activate pip install -r requirements.txt pip install -e . ``` ### Docker 安装 ``` docker build -t adapol . docker run -it adapol ``` ## 9. CLI 使用 AdaPol 通过 CLI 界面进行操作。 ### 分析基础设施和日志 ``` adapol analyze \ -t sample_data/aws_infrastructure.tf \ -e sample_data/aws_events.json \ -p aws ``` ``` # 使用 cloud events 分析 Terraform 配置 adapol --terraform infrastructure.tf --events events.json --provider aws # 持续监控 adapol --terraform infrastructure.tf --events events.json --monitor ``` ### 验证生成的策略 ``` adapol validate adapol_output/order-processor/policy.json ``` ### 使用样本数据的演示模式 ``` adapol --demo ``` ## 10. 策略生成说明 * **IaC 表示云中*存在*什么** * **遥测 表示运行时*使用*了什么** AdaPol 将这两个视图进行交叉对比,以识别正确执行所需的最小权限集。策略在真实的云环境中并不会被实时手动更新;相反,它们是由管理员或工具显式定义和修改的。AdaPol 通过从行为中学习并安全地重新生成策略,使这一修改过程实现了自动化。 ## 11. 输出工件 AdaPol 产生多种输出: * 特定云服务商的 IAM 策略 (JSON) * Terraform / CloudFormation 策略定义 * 分析报告 (JSON + Markdown 摘要) ### 样本输出图像 | ![图 1](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ffc15790fa104706.png) | ![图 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/3e9b354efa104707.png) | ![图 3](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ca6e23e4a0104708.png) | |--------------------------------|--------------------------------|--------------------------------| | ![图 4](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/2052829ada104710.png) | ![图 5](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/97bbfb456a104711.png) | ![图 6](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/93441cfdf5104712.png) | ### 输出示例:生成的策略 (AWS) ``` resource "aws_iam_policy" "order_processor_policy" { name = "order-processor-least-privilege-policy" description = "Auto-generated least-privilege policy for order-processor" policy = jsonencode({ Version = "2012-10-17" Statement = [ { Effect = "Allow" Action = [ "s3:GetObject" ] Resource = [ "arn:aws:s3:::my-data-bucket/orders/*" ] }, { Effect = "Allow" Action = [ "dynamodb:PutItem" ] Resource = [ "arn:aws:dynamodb:us-east-1:123456789012:table/Orders" ] } ] }) } ``` ### 分析报告 ``` { "summary": { "total_functions": 3, "policies_generated": 3, "total_events_processed": 150, "average_risk_reduction": 78.5 }, "function_details": { "order-processor": { "cloud_provider": "aws", "actions_observed": 4, "resources_accessed": 3, "risk_score": 2.5, "risk_reduction_percent": 85.2, "policy_rules_count": 4 } } } ``` ## 12. API 使用 ``` from adapol import AdaPolSystem import asyncio async def main(): # Initialize system adapol = AdaPolSystem() # Load your data adapol.collector.collect_events(your_events, 'aws') # Run analysis policies = await adapol.run_full_analysis() # Export results adapol.export_policies('./output') # Generate report report = adapol.generate_report() print(f"Generated {len(policies)} policies") asyncio.run(main()) ``` ## 13. 测试 运行测试套件: ``` # Unit tests pytest tests/unit/ # Integration tests pytest tests/integration/ # 所有 tests 及覆盖率 pytest --cov=adapol tests/ ``` ## 14. 性能 AdaPol 专为企业级规模部署而设计: - **事件处理**:每分钟 10,000+ 个事件 - **策略生成**:对于典型函数在亚秒级内完成 - **内存使用**:处理 1000 个函数时占用 <500MB - **优化**:ILP 求解器可处理 100+ 种权限组合 ## 15. 安全性 - **最小权限原则**:核心设计理念 - **沙盒隔离**:在隔离环境中测试策略 - **审计日志**:跟踪并记录所有更改 - **验证**:部署前进行多层验证 - **回滚**:验证失败时自动回滚 ## 16. 基准测试 AdaPol 已与领先的策略优化工具进行了对比评估: | 指标 | AdaPol | AWS Access Analyzer | 手动审查 | | --------------------- | --------- | ------------------- | ------------- | | 策略规模缩减 | 85% | 45% | 70% | | 误报 | <2% | 12% | 5% | | 部署时间 | 5 分钟 | 30 分钟 | 2+ 小时 | | 多云支持 | ✅ | ❌ | ❌ |
标签:AWS, Azure, DevSecOps, DPI, EC2, Google Cloud, IaC, IAM, JSONLines, LNA, Serverless, Streamlit, 上游代理, 云安全监控, 原型系统, 合规, 多云, 学术研究, 形式化验证, 无服务器, 最小权限原则, 权限优化, 策略合成, 网络调试, 自动化, 访问控制, 请求拦截, 运行时分析, 逆向工具, 零信任, 静态分析