aws-samples/sample-security-review-assistant
GitHub: aws-samples/sample-security-review-assistant
DSR Agent 是一个基于多 Agent 架构的智能安全审查系统,通过自动化分析 AWS 架构图、IaC 代码和合规性检查,为云上部署提供全面的安全评估。
Stars: 2 | Forks: 0
# DSR Agent - 交付物安全审查助手

## 概述
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, 合规审查, 多智能体系统, 请求拦截, 逆向工具