aws-samples/sample-security-review-assistant

GitHub: aws-samples/sample-security-review-assistant

DSR Agent 是一个基于多 Agent 架构的智能安全审查系统,通过自动化分析 AWS 架构图、IaC 代码和合规性检查,为云上部署提供全面的安全评估。

Stars: 2 | Forks: 0

# DSR Agent - 交付物安全审查助手 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/710c12d77d123624.jpg) ## 概述 DSR Agent 是一个智能多 Agent 系统,旨在为 AWS 基础设施和应用程序自动化并增强交付物安全审查(DSR)。该解决方案结合了架构分析、代码审查、安全扫描和合规性评估,为云部署提供全面的安全评估。 ### 核心能力 - **架构分析**:自动评估 AWS 架构图和基础设施设计 - **代码安全审查**:深入分析基础设施即代码(IaC)文件,包括 CloudFormation、Terraform 和 CDK - **ASH 安全扫描**:集成 AWS Security Hub (ASH) 以进行全方位的安全漏洞检测 - **DSR 合规性评估**:根据关键安全合规性问题进行自动评估 - **多模态分析**:同时支持可视化架构图和代码仓库 - **流式响应**:实时分析结果与渐进式输出 ## 使用的工具和服务 ### 核心技术 #### Amazon Bedrock AgentCore Runtime - **用途**:用于部署和扩展 AI Agent 的无服务器运行时环境 - **优势**:用于托管 Agent 的安全、托管式基础设施,支持自动扩容 - **集成**:支持 HTTP 协议的容器化 Agent 部署 - **文档**:[AWS Bedrock AgentCore](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-getting-started.html) #### Strands Agent Framework - **用途**:高级 Agent 编排和工具集成框架 - **主要特性**: - 多 Agent 协调和工作流管理 - 内置工具生态系统(文件操作、shell 访问、Web API) - 支持异步/await并发操作 - 跨 Agent 交互的状态管理 - Model Context Protocol (MCP) 集成 - **使用的工具**: - `file_read`, `file_write`, `editor` 用于文件操作 - 用于 ASH 扫描和架构分析的自定义工具 - 用于可扩展工具集成的 MCP 服务器 #### Model Context Protocol (MCP) - **用途**:跨 AI 系统共享工具和上下文信息的标准化协议 - **实现**:用于访问 AWS 文档和工具集成的 MCP 服务器 - **优势**:可重用的工具集合和标准化的 Agent-工具通信 ### AWS 服务 - **Amazon Bedrock**:基础模型访问(`us.anthropic.claude-sonnet-4-6` 跨区域推理) - **AWS Lambda**:用于 Agent 功能的无服务器计算 - **Amazon S3**:用于架构图和代码仓库的文件存储 - **Amazon DynamoDB**:会话和状态管理 - **Amazon Cognito**:用户身份验证和授权 - **Amazon CloudFront**:Web 界面的内容分发 - **ASH**:安全发现聚合和扫描 - **Amazon ECS**:Agent 运行时的容器编排 - **AWS IAM**:身份和访问管理 ### 前端技术 - **Streamlit**:交互式 Web 应用框架 - **Python**:后端处理和 AWS 服务集成 - **Docker**:用于实现一致性部署的容器化 ## Agent DSR Agent 系统由四个专业的 AI Agent 组成,通过多 Agent 工作流进行编排。每个 Agent 都有特定的职责,并使用专用工具来执行全面的安全分析。 ### Agent 架构 #### 1. **架构评估 Agent** (`agents/architecture_agent.py`) - **用途**:使用 Well-Architected Framework 进行 AWS 架构图分析 - **模型**:集成 MCP 的 `us.anthropic.claude-sonnet-4-6` - **工具**: - `image_reader`:处理架构图(PNG, JPG) - AWS Documentation MCP:访问 Well-Architected Framework 指南 - **分析重点**: - 安全支柱评估(网络边界、VPC 结构、服务部署位置) - 纵深防御评估 - 安全服务集成(WAF, Shield, GuardDuty) - 多可用区模式和负载均衡器部署 - **输出**:安全评分(1-10)、关键风险、优先操作 #### 2. **代码服务映射 Agent** (`agents/code_mapping_agent.py`) - **用途**:基础设施即代码分析和服务依赖关系映射 - **模型**:集成 AWS Documentation MCP 的 `us.anthropic.claude-sonnet-4-6` - **工具**: - `file_read`:分析 IaC 文件(CloudFormation, Terraform, CDK) - AWS Documentation MCP:参考安全服务和最佳实践 - **分析能力**: - 服务清单提取(EC2, RDS, Lambda, S3 等) - 安全服务识别(KMS, IAM, Secrets Manager 等) - 依赖关系映射和数据流分析 - 架构与代码的差异分析(提供架构上下文时) - **输出**:服务映射、关系、配置差距 #### 3. **ASH 安全 Agent** (`agents/ash_agent.py`) - **用途**:集成 Automated Security Helper (ASH) 进行代码漏洞扫描 - **模型**:`us.anthropic.claude-sonnet-4-6` - **工具**: - `inspect_and_prepare`:从 S3 下载压缩包,剥离二进制/媒体文件,报告找到的依赖文件 - `ash_security_scan`:在准备好的目录上运行 ASH CLI 和 `pip-audit` - **扫描流程**: - 从 S3 下载并清理代码压缩包(移除二进制文件、node_modules 等) - 在 AgentCore 容器内使用 `--mode local` 执行 ASH CLI 扫描器 - 解析 `ash_aggregated_results.json`(ASH v3 SARIF 格式)以获取发现结果 - 对找到的任何 Python 依赖文件运行 `pip-audit` - 提供每个发现结果的严重程度、文件位置和建议的代码修复方案 - **输出**:漏洞发现结果(按严重程度分组)和依赖项 CVE #### 4. **DSR 合规 Agent** (`agents/dsr_agent.py`) - **用途**:交付物安全审查合规性评估 - **模型**:`us.anthropic.claude-sonnet-4-6` - **工具**:用于 IaC 文件分析的 `file_read` - **合规框架**:涵盖以下方面的 20 项安全评估: - 开源策略和许可证验证 - OWASP Top 10 漏洞评估 - 数据加密(静态和传输中) - 网络安全控制 - 机密管理 - 法规合规性(PCI, HIPAA, GDPR) - **输出**:结构化的合规性表格(是/否/不适用 响应) #### AgentCore Runtime 编排器 (`agent_main.py`) - **实现**:Python 运行时处理程序 — 其本身不是 Agent - **职责**: - 解析传入请求并路由到相应的工作流 - 协调 Agent 顺序执行并在 Agent 之间传递上下文 - 流式传输实时分析结果 - 处理从 S3 检索文件 - **支持的工作流**: - `ash_security_scan`:仅 ASH 安全扫描 - `architecture_code_comparison`:架构 + 代码 + DSR 分析 - `full_analysis`:完整的 4 Agent 分析流水线 - `chat`:针对先前分析结果的后续问题 ### Agent 工作流模式 #### 模式 1:仅 ASH 安全扫描 ``` Request Type: ash_security_scan ┌─────────────────┐ │ Main Orchestrator│ └─────────┬───────┘ │ ▼ ┌─────────────────┐ │ ASH Agent │ ──► S3 Download ──► ASH Scan ──► Findings Analysis └─────────────────┘ ``` #### 模式 2:架构 + 代码对比 ``` Request Type: architecture_code_comparison ┌─────────────────┐ │ Main Orchestrator│ └─────────┬───────┘ │ ▼ Architecture Agent ──► Diagram Analysis │ ▼ (arch context passed) Code Mapping Agent ──► IaC Analysis + Architecture Comparison │ ▼ DSR Agent ──► Compliance Assessment ``` #### 模式 3:完整分析流水线 ``` Request Type: full_analysis ┌─────────────────┐ │ Main Orchestrator│ └─────────┬───────┘ │ ▼ Architecture Agent ──► Security Assessment │ ▼ (arch context passed) Code Mapping Agent ──► IaC Analysis + Architecture Comparison │ ▼ DSR Agent ──► Compliance Review │ ▼ ASH Agent ──► Vulnerability Scan + Dependency CVEs ``` ### Agent 通信流程 1. **请求处理**: - 前端通过 Streamlit 界面提交分析请求 - 主编排器解析 payload 并确定工作流 - 从 S3 下载文件 2. **顺序分析**: - Agent 一个接一个地执行,每个 Agent 都将前一个 Agent 的输出作为上下文接收 - 架构 Agent 的输出被传递给代码映射 Agent 以进行差异分析 - DSR Agent 在代码上下文下运行;ASH 扫描最后运行(资源消耗最大) 3. **流式响应**: - 每个 Agent 在运行时将结果实时流式传输到前端 - `StreamingBuffer` 在句子边界、换行符处或 3 秒后刷新 - 渐进式输出意味着早期 Agent 的结果会在后期 Agent 完成之前出现 ### Agent 工具集成 #### Strands 框架工具 - **文件操作**:`file_read` - **图像处理**:用于架构图的 `image_reader` - **自定义工具**:`inspect_and_prepare`、`ash_security_scan`(在 `ash_agent.py` 中使用 `@tool` 定义) #### Model Context Protocol (MCP) 集成 - **AWS 文档服务器**:实时访问 AWS 服务文档 - **安全最佳实践**:Well-Architected Framework 指南 - **服务参考**:全面的 AWS 安全服务文档 #### 自定义工具:ASH Scanner (`agents/ash_agent.py`) - **`inspect_and_prepare`**:从 S3 下载 zip 压缩包,剥离二进制/媒体/大型文件和跳过目录(node_modules、.git 等),报告移除了什么以及存在哪些依赖文件 - **`ash_security_scan`**:在准备好的目录上运行 `ash --mode local`,解析 `ash_aggregated_results.json`(ASH v3 SARIF),针对 Python 依赖项 CVE 运行 `pip-audit` - **发现结果处理**:SARIF 结果被解析为扁平的发现结果列表,包含严重程度、文件路径、行号和规则 ID - **清理管理**:每次扫描后自动清理临时目录 - **超时保护**:10 分钟扫描超时及优雅的错误处理 ### Agent 状态管理 - **临时目录**:每个 Agent 管理隔离的临时目录,使用后进行清理 - **文件上下文**:DSR Agent 将工作目录更改为解压后的 zip 目录,以便 `file_read` 能正确解析相对路径 - **错误处理**:在失败时进行优雅降级和清理;单个 Agent 的失败不会停止整个工作流 ### Agent 性能特征 - **顺序执行**:Agent 依次运行;架构输出作为上下文传递给后续 Agent - **流式输出**:使用 `StreamingBuffer` 的实时结果(在句子结束、换行、200 字符限制或 3 秒超时刷新) - **内存效率**:分析后清理临时文件 - **超时处理**:ASH 扫描的 10 分钟超时 - **错误恢复**:单个 Agent 的失败不会停止整个工作流 ## 设置说明 ### 前提条件 - 具有适当权限的 AWS 账户 - Python 3.9 或更高版本 - Docker(用于容器化部署) - 配置好凭证的 AWS CLI ### 本地开发设置 1. **克隆仓库** git clone cd dsr-agent 2. **创建 Python 虚拟环境** python3 -m venv .venv source .venv/bin/activate # 在 Windows 上: .venv\Scripts\activate 3. **安装依赖** # 后端依赖 pip install -r backend/agentcore_deployment/requirements.txt # 前端依赖 pip install -r frontend/requirements.txt 4. **配置环境变量** 设置前端所需的变量(参见下方的[环境配置](#environment-configuration)): export S3_BUCKET_NAME=your-dsr-bucket export DYNAMODB_TABLE_NAME=dsr-sessions export COGNITO_CLIENT_ID=your-cognito-client-id export COGNITO_DOMAIN=your-cognito-domain export COGNITO_USER_POOL_ID=your-user-pool-id export AWS_REGION=us-east-1 export CLOUDFRONT_URL=https://your-cloudfront-domain.com export AGENT_ARN=arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/your-runtime-id 5. **运行本地开发服务器** cd frontend streamlit run src/app.py --server.port=8501 ### AWS 部署 #### 选项 1:全自动部署 1. **设置 IAM 权限** - 确保您的 AWS 凭证具有以下权限: - Bedrock AgentCore 操作 - ECS 集群管理 - S3 存储桶操作 - DynamoDB 表操作 - Cognito 用户池管理 2. **申请 ACM 证书** ALB 需要在 **us-east-1** 中拥有 TLS 证书。在 [AWS Certificate Manager](https://console.aws.amazon.com/acm/home?region=us-east-1) 中创建或导入证书,然后导出其 ARN: export ACM_CERTIFICATE_ARN=arn:aws:acm:us-east-1:123456789012:certificate/your-cert-id 如果缺少此变量,部署脚本将立即退出。所有流量仅限 HTTPS — 端口 80 重定向到 443 (HTTP 301),CloudFront 强制执行 `redirect-to-https`,并且 Cognito OAuth 回调需要 `https:// URL。 3. **运行部署脚本** cd deployment chmod +x ./full-deploy.sh ./full-deploy.sh #### 选项 2:手动部署 1. **部署基础设施** cd deployment aws cloudformation deploy \ --stack-name dsr-reviewer-infra \ --template-file infrastructure.yaml \ --parameter-overrides ACMCertificateArn=$ACM_CERTIFICATE_ARN \ --capabilities CAPABILITY_NAMED_IAM \ --region us-east-1 2. **构建并推送 Agent 容器镜像** ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=us-east-1 aws ecr create-repository --repository-name agentcore-dsr --region $REGION 2>/dev/null || true aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com docker build --platform linux/arm64 -t agentcore-dsr:latest backend/agentcore_deployment docker tag agentcore-dsr:latest $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/agentcore-dsr:latest docker push $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/agentcore-dsr:latest 3. **部署 AgentCore Runtime** cd deployment python3 -m venv .venv source .venv/bin/activate pip install boto3 BEDROCK_AGENT_ROLE_ARN=$(aws cloudformation describe-stacks --stack-name dsr-reviewer-infra --region $REGION \ --query "Stacks[0].Outputs[?OutputKey=='BedrockAgentRoleArn'].OutputValue" --output text) COGNITO_USER_POOL_ID=$(aws cloudformation describe-stacks --stack-name dsr-reviewer-infra --region $REGION \ --query "Stacks[0].Outputs[?OutputKey=='CognitoUserPoolId'].OutputValue" --output text) COGNITO_CLIENT_ID=$(aws cloudformation describe-stacks --stack-name dsr-reviewer-infra --region $REGION \ --query "Stacks[0].Outputs[?OutputKey=='CognitoClientId'].OutputValue" --output text) python agents-deployment.py $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/agentcore-dsr:latest \ --user-pool-id $COGNITO_USER_POOL_ID \ --user-pool-client-id $COGNITO_CLIENT_ID \ --role-arn $BEDROCK_AGENT_ROLE_ARN 4. **部署前端** cd frontend docker build -t dsr-agent-frontend . # 部署到您首选的容器服务 ### 配置文件 - **`infrastructure.yaml`**:AWS 资源的 CloudFormation 模板 - **`ecs-stack.yaml`**:ECS 服务配置 - **`.env`**:本地环境变量(根据设置部分中的变量列表创建) ## 领域对齐 ### 服务交付领域 DSR Agent 通过以下方式与服务交付实践保持一致: - **自动化质量门禁**:将安全审查集成到 CI/CD 流水线中 - **标准化评估**:所有交付物采用一致的评估标准 - **加速审查**:将手动审查时间从数小时缩短至数分钟 - **文档生成**:自动生成合规报告和安全评估 - **风险缓解**:在生产部署之前及早检测安全问题 ### 架构领域 该解决方案展示了企业架构的最佳实践: - **微服务架构**:采用关注点清晰分离的模块化 Agent 设计 - **事件驱动设计**:带有流式响应的异步处理 - **可扩展基础设施**:用于弹性伸缩的无服务器和容器化组件 - **API 优先方法**:RESTful 接口和标准化协议 - **多租户支持**:用户隔离和会话管理 ### 安全领域 安全优先的设计原则: - **零信任架构**:所有操作都需要身份验证 - **最小权限访问**:为每个组件提供细粒度的 IAM 权限 - **数据加密**:对所有数据进行静态和传输中加密 - **审计日志**:用于安全监控的全面日志记录 - **合规性自动化**:内置 DSR 合规性检查 ## 安全考虑因素 ### 身份验证和授权 - **Amazon Cognito 集成**:使用 JWT token 进行安全的用户身份验证 - **基于角色的访问控制**:基于用户角色的细粒度权限 - **会话管理**:具有自动过期的安全会话处理 - **API 安全**:所有 API endpoint 的基于 token 的身份验证 ### 数据保护 - **静态加密**:使用 AWS KMS 加密所有存储数据 - **传输中加密**:所有网络通信采用 TLS 1.2+ 加密 - **数据隔离**:使用 DynamoDB 分区键隔离用户数据 - **临时存储**:自动清理临时文件和分析构件 ### 基础设施安全 - **VPC 隔离**:用于 Agent 运行时环境的网络分段 - **安全组**:为所有组件设置严格的防火墙规则 - **IAM 角色**:具有最低权限要求的特定服务角色 - **容器安全**:带有安全扫描的强化容器镜像 ### 隐私和数据处理 - **数据最小化**:仅收集和处理必要的数据 - **数据保留**:分析构件的自动清理策略 ## 用户界面 DSR Agent 提供了一个使用 Streamlit 构建的直观的基于 Web 的界面,便于与多 Agent 分析系统进行交互。 ### 前端架构 (`frontend/src/`) #### 核心组件 - **`app.py`**:带有身份验证和路由的主 Streamlit 应用程序 - **`persistent_auth.py`**:带有 JWT token 管理的 Amazon Cognito 身份验证处理程序 - **`aws_services.py`**:AWS 服务集成(S3, DynamoDB, AgentCore) - **`ui_components.py`**:用于表单和聊天界面的可重用 UI 组件 #### 主要特性 - **安全身份验证**:具有持久登录会话的 Amazon Cognito 集成 - **会话管理**:支持通过 DynamoDB 持久化的多会话 - **文件上传**:用于架构图和代码压缩包的拖放式界面 - **实时分析**:带有渐进式更新的流式结果显示 - **聊天界面**:与分析结果的对话式交互 - **会话历史记录**:访问以前的分析会话和结果 #### 用户工作流 1. **身份验证**: - 用户通过 Amazon Cognito 进行身份验证 - JWT token 提供安全的会话管理 - 处理 OAuth 流程的自动重定向 2. **创建会话**: - 创建具有描述性名称的新分析会话 - 选择分析类型(ASH 扫描、架构比较、全面分析) - 上传所需文件(架构图、代码压缩包) 3. **执行分析**: - 实时流式传输分析结果 - Agent 输出的渐进式显示 - 用于后续问题的交互式聊天界面 4. **结果管理**: - 在 DynamoDB 中进行会话持久化 - 访问历史分析结果 - 报告导出功能 #### 环境配置 ``` # 前端所需的环境变量 S3_BUCKET_NAME=your-dsr-bucket DYNAMODB_TABLE_NAME=dsr-sessions COGNITO_CLIENT_ID=your-cognito-client-id COGNITO_DOMAIN=your-cognito-domain COGNITO_USER_POOL_ID=your-user-pool-id AWS_REGION=us-east-1 CLOUDFRONT_URL=https://your-cloudfront-domain.com ``` #### 本地开发 ``` # 本地运行 Streamlit 前端 cd frontend streamlit run src/app.py --server.port=8501 ``` #### 部署 ``` # Docker 部署 cd frontend docker build -t dsr-agent-frontend . docker run -p 8501:8501 --env-file .env dsr-agent-frontend ``` ## 使用示例 ### Web 界面(推荐) 1. **访问应用程序**: - 导航到您部署的 Streamlit 应用程序 - 使用 Amazon Cognito 凭证进行身份验证 2. **创建新的分析会话**: - 点击“Start New Session” - 输入会话名称和描述 - 选择分析类型: - **ASH Security Scan**:仅进行代码漏洞分析 - **Architecture + Code Comparison**:架构图 + IaC 分析 + DSR 合规性 - **Full Analysis**:包含全面比较的完整 4 Agent 流水线 3. **上传文件**: - **架构图**:AWS 架构的 PNG、JPG 文件 - **代码压缩包**:包含 IaC(CloudFormation, Terraform, CDK)的 ZIP 文件 4. **监控分析**: - 实时流式传输结果 - Agent 的渐进式输出 - 用于后续问题的交互式聊天 ### API 访问(编程方式) #### 架构分析 ``` # 提交架构图进行分析 curl -X POST /api/analyze \ -H "Authorization: Bearer $TOKEN" \ -F "architecture_file=@diagram.png" \ -F "request_type=architecture_analysis" ``` #### 完整安全审查 ``` # 通过代码和架构完成 DSR 分析 curl -X POST /api/analyze \ -H "Authorization: Bearer $TOKEN" \ -F "architecture_file=@diagram.png" \ -F "code_zip=@infrastructure.zip" \ -F "request_type=full_analysis" ``` #### ASH 安全扫描 ``` # 安全漏洞扫描 curl -X POST /api/analyze \ -H "Authorization: Bearer $TOKEN" \ -d '{"request_type": "ash_security_scan", "code_zip_s3_url": "s3://bucket/code.zip"}' \ -H "Content-Type: application/json" ``` #### AgentCore 直接调用 ``` # 直接调用 AgentCore runtime aws bedrock-agentcore invoke-agent-runtime \ --agent-id agent_main-g6B1cG9eDF \ --payload '{"request_type": "full_analysis", "architecture_s3_url": "s3://bucket/diagram.png", "code_zip_s3_url": "s3://bucket/code.zip"}' \ --region us-east-1 ``` ## 贡献 1. Fork 该仓库 2. 创建一个功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交您的更改 (`git commit -m 'Add amazing feature'`) 4. 推送到该分支 (`git push origin feature/amazing-feature`) 5. 发起 Pull Request ## 支持 如需支持和解答疑问: - 在 GitHub 仓库中创建一个 issue - 联系开发团队 - 有关特定服务的问题,请参阅 AWS 文档 ## 更新日志 ### 版本 1.0.0 - 带有多 Agent DSR 分析的初始版本 - Bedrock AgentCore 集成 - Strands 框架实现 - 全面的 AWS 部署自动化 - 全面的安全合规性检查
标签:AI智能体, AWS, DPI, Kubernetes, PyRIT, 合规审查, 多智能体系统, 请求拦截, 逆向工具