MCP安全扫描器:AI代码助理的实时保护
此模式描述了如何实现一个模型上下文协议(MCP)服务器,该服务器集成了四个行业标准的安全扫描工具(Checkov、Semgrep、Bandit和ASH),以提供全面的代码安全分析。该服务器使AI编码助手能够自动扫描代码片段和基础设施即代码(IaC)配置,以查找安全漏洞、配置错误和合规违规。
该解决方案结合了用于扫描IaC文件(包括Terraform、CloudFormation和Kubernetes清单)的Checkov、用于分析多种编程语言(如Python、JavaScript、Java等)的Semgrep、用于专门的Python安全扫描的Bandit和用于综合多工具扫描的ASH(自动安全助手)以及聚合结果。
它为安全扫描提供了一个统一的界面,具有标准化的响应格式,使安全检查更容易集成到开发工作流程中。该模式使用Python和MCP框架提供自动安全反馈,帮助开发人员在开发过程的早期识别和解决安全问题,同时通过详细的发现学习安全最佳实践。
这种模式对于希望通过人工智能辅助编码工具增强开发安全实践的组织来说尤其有价值,这些工具提供跨多种编程语言和基础设施定义的连续安全扫描功能。
主要特点:
- 对新代码段进行增量扫描,减少计算开销
- 隔离的安全工具环境,防止交叉工具污染
- 与人工智能工具(Amazon Q Developer、Kiro等)无缝集成
- 代码生成过程中的实时安全反馈
- 可定制的扫描规则,以实现组织合规性
演示
代码扫描演示
使用您的AI助手尝试以下示例提示:
- “扫描当前脚本并告诉我结果”
- “扫描第20-60行并告诉我结果”
- “扫描此Amazon DynamoDB表资源并告诉我结果”
使用安全扫描演示生成代码
尝试以下示例提示以生成安全代码:
- “生成一个Terraform配置,以创建启用加密的DynamoDB表,并扫描其中的安全问题”
- “创建一个Python Lambda函数,写入DynamoDB并扫描其中的漏洞”
- “为具有适当安全设置的S3存储桶生成CloudFormation模板,并验证其是否通过安全检查”
- “编写一个Python脚本,通过分页查询DynamoDB并扫描安全最佳实践”
- “为具有安全强化功能的微服务创建Kubernetes部署清单并对其进行验证”
建筑
特性
此MCP服务器使AI助手能够使用四种强大的安全扫描工具对代码片段进行全面的安全分析:
🛡️ Checkov-基础设施即代码安全
- 扫描基础架构代码(IaC)文件以查找安全配置错误
- 支持:Terraform、CloudFormation、Kubernetes、Dockerfile、ARM、二头肌等
- 检测违规行为和安全最佳实践
🔍 Semgrep-源代码安全
- 分析源代码中的安全漏洞和错误
- 支持:Python、JavaScript、TypeScript、Java、Go、C/C++、C#、Ruby、PHP、Scala、Kotlin、Rust
- 使用以安全为重点的规则集进行全面分析
🐍 Bandit-Python安全专家
- 专用Python安全扫描程序
- 检测常见的Python安全问题,如不安全函数、硬编码秘密、注入漏洞
- 提供详细的置信度和严重性评级
🚀 ASH-自动安全助手
- 综合多工具安全扫描仪
- 并行运行多个扫描程序:Bandit、Checkov、cfn-nag、cdk-nag、检测秘密、grype、syft、npm审计
- 增量扫描支持,用于分析代码更改
- 通过统一报告汇总所有扫描仪的结果
- 支持上述工具的所有格式以及其他扫描仪
- 注: Semgrep被排除在ASH扫描之外,以避免与独立扫描重复
scan_with_semgrep工具
📦 带文件输出的目录扫描
- 默认情况下,所有目录扫描工具都会将结果保存到专用文件夹中
- 防止LLM交互中的上下文窗口溢出
- 输出目录:
.grype/,.checkov/,.bandit/,.semgrep/,.ash/,.sbom/,.trivy/ - 返回带有文件路径的轻量级摘要
- 可选的
return_output=True参数以获取完整结果 - 用于跟踪扫描历史的带时间戳的文件
- 看 扫描仪_FILE_OUTPUT.md 详情
安装
注: 以下说明适用于macOS/Linux。对于Windows和其他代码助手,请参阅 AWS MCP存储库自述 针对特定平台的说明。
先决条件
- Python>=3.10,\=3.0.0` -IaC安全扫描仪
semgrep>=1.45.0-源代码安全扫描器bandit>=1.7.5-Python安全扫描程序mcp[cli]>=1.11.0-MCP框架pydantic>=1.10.0-数据验证loguru>=0.6.0-日志记录
可选:ASH集成
使用ASH(自动安全助手)进行全面的多工具扫描:
# Install ASH using uvx (recommended)
uvx git+https://github.com/awslabs/automated-security-helper.git@v3.2.5
# Or install with pip
pip install git+https://github.com/awslabs/automated-security-helper.git@v3.2.5
# Or install with pipx (isolated environment)
pipx install git+https://github.com/awslabs/automated-security-helper.git@v3.2.5
# Verify installation
ash --versionASH提供了除核心三个之外的其他扫描仪:
- Cfn nag:CloudFormation安全分析
- cdk nag:AWS CDK安全检查
- 检测秘密:代码中的秘密检测
- 抓取:依赖关系的漏洞扫描
- syft:软件物料清单(SBOM)生成
- npm审计:Node.js依赖安全
注意:ASH需要Python 3.10+,并使用UV进行包管理。某些扫描仪可能需要额外的依赖关系(请参阅 ASH文件).
用法
MCP配置
配置您的MCP客户端以使用服务器。配置因客户端而异,支持本地路径和GitHub安装方法。
Kiro入门
Install in Kiro
看 Kiro模型上下文协议文档 了解详情。
- 导航
Kiro>MCP Servers - 通过单击添加新的MCP服务器
Open MCP Config按钮。 - 粘贴以下配置之一:
选项1:从本地路径安装
替换 /path/to/sample-mcp-security-scanner 使用您的实际存储库路径:
.kiro/settings/mcp.json (本地)或 ~/.kiro/settings/mcp.json (全球)
{
"mcpServers": {
"security-scanner": {
"command": "uvx",
"args": [
"--from",
"/path/to/sample-mcp-security-scanner",
"security_scanner_mcp_server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"WORKSPACE_ROOT": "/path/to/your/workspace"
},
"timeout": 120000,
"disabled": false,
"autoApprove": []
}
}
}选项2:从GitHub安装
{
"mcpServers": {
"security-scanner": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
"security_scanner_mcp_server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"WORKSPACE_ROOT": "/path/to/your/workspace"
},
"timeout": 120000,
"disabled": false,
"autoApprove": []
}
}
}亚马逊Q开发者入门
Install in Amazon Q Developer
看 Amazon Q开发者文档 了解详情。
- 手动配置
- 在以下位置编辑MCP配置文件 ~/.aws/amazonq/mcp.json (全球)或 .amazonq/mcp.json (当地)。 - 使用以下配置之一:
选项1:从本地路径安装
替换 /path/to/sample-mcp-security-scanner 使用您的实际存储库路径:
~/.aws/amazonq/mcp.json
{
"mcpServers": {
"security-scanner": {
"command": "uvx",
"args": [
"--from",
"/path/to/sample-mcp-security-scanner",
"security_scanner_mcp_server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"WORKSPACE_ROOT": "/path/to/your/workspace"
},
"timeout": 120000
}
}
}选项2:从GitHub安装
{
"mcpServers": {
"security-scanner": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
"security_scanner_mcp_server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"WORKSPACE_ROOT": "/path/to/your/workspace"
},
"timeout": 120000
}
}
}开始使用Cline
Install in Cline
- 安装 Cline VS代码扩展.
- 单击扩展名将其打开并选择 MCP服务器.
- 选择 已安装 选项卡,然后单击 配置MCP服务器 打开
cline_mcp_settings.json文件。 - 添加以下配置之一:
选项1:从本地路径安装
替换 /path/to/sample-mcp-security-scanner 使用您的实际存储库路径:
cline_mcp_settings.json
{
"mcpServers": {
"security-scanner": {
"command": "uvx",
"args": [
"--from",
"/path/to/sample-mcp-security-scanner",
"security_scanner_mcp_server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"WORKSPACE_ROOT": "/path/to/your/workspace"
},
"timeout": 120000,
"disabled": false,
"autoApprove": []
}
}
}选项2:从GitHub安装
{
"mcpServers": {
"security-scanner": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
"security_scanner_mcp_server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"WORKSPACE_ROOT": "/path/to/your/workspace"
},
"timeout": 120000,
"disabled": false,
"autoApprove": []
}
}
}其他代码助理
有关Cursor、Windsurf、VS Code、Claude Desktop和其他MCP客户端的配置说明,请参阅 AWS MCP存储库自述.
可用工具
1. scan_with_checkov
将基础架构扫描为代码文件以查找安全问题。
参数:
code(string):要扫描的IaC内容format_type(string):格式类型(地形、云结构、kubernetes、dockerfile等)
2. scan_with_semgrep
扫描源代码以查找安全漏洞。
参数:
code(string):要扫描的源代码内容language(string):编程语言(python、javascript、java等)
3. scan_with_bandit
扫描Python代码以查找安全问题(特定于Python)。
参数:
code(string):要扫描的Python代码内容
4. scan_with_ash
使用ASH扫描代码进行全面的多工具安全分析。
参数:
code(string):要扫描的代码内容file_extension(string):文件扩展名(例如.py、.tf、.js、Dockerfile)severity_threshold(字符串,可选):最小严重性阈值(低、中、高、临界)。默认值:中
特征:
- 并行运行多个安全扫描程序
- 提供所有适用扫描仪的汇总结果
- 针对代码片段优化的增量扫描
- 跨所有工具的统一严重性报告
5. scan_with_trivy
使用Trivy将基础架构扫描为代码或Dockerfile以解决安全问题。
参数:
code(string):要扫描的代码内容(Dockerfile或IaC配置)scan_type(字符串,可选):扫描类型(dockerfile、terraform、kubernetes、config)。默认值:dockerfile
6. check_ash_availability
检查ASH是否已安装且可用,包括哪些扫描仪可用。
退货: 安装状态、版本信息、扫描仪可用性详细信息和格式化报告
示例响应:
{
"success": true,
"available": true,
"version": "3.2.1",
"message": "ASH is installed and available: 3.2.1",
"scanner_summary": {
"available": 6,
"total": 9,
"unavailable": 3
},
"formatted_report": "ASH Status: ✅ Installed (version 3.2.1)\nScanner Availability: 6 out of 9 scanners available\n\n✅ Available Scanners:\n • Bandit - Python security linter (python-based)\n • Semgrep - Multi-language SAST (python-based)\n • Checkov - IaC security scanner (python-based)\n • cdk-nag - AWS CDK security scanner (npm-based)\n • detect-secrets - Secret detection (python-based)\n • npm-audit - Node.js dependency scanner (npm-based)\n\n❌ Missing Scanners:\n • cfn-nag - CloudFormation security scanner (ruby-based)\n Install with: gem install cfn-nag\n • Grype - Vulnerability scanner (binary)\n Install with: Install Grype from official source\n • Syft - SBOM generator (binary)\n Install with: Install Syft from official source\n\nThe tool successfully shows which scanners are available and which ones need additional OS-level dependencies.",
"scanners": {
"bandit": {
"name": "Bandit",
"description": "Python security linter",
"available": true,
"dependency_type": "python",
"file_types": [".py"],
"status": "installed"
},
"semgrep": {
"name": "Semgrep",
"description": "Multi-language SAST",
"available": true,
"dependency_type": "python",
"file_types": [".py", ".js", ".ts", ".java", ".go", ".rb", ".php"],
"status": "installed"
},
"checkov": {
"name": "Checkov",
"description": "IaC security scanner",
"available": true,
"dependency_type": "python",
"file_types": [".tf", ".yaml", ".yml", ".json", "Dockerfile"],
"status": "installed"
},
"cfn-nag": {
"name": "cfn-nag",
"description": "CloudFormation security scanner",
"available": false,
"dependency_type": "ruby",
"file_types": [".yaml", ".yml", ".json", ".template"],
"status": "not installed",
"install_hint": "gem install cfn-nag"
},
"cdk-nag": {
"name": "cdk-nag",
"description": "AWS CDK security scanner",
"available": true,
"dependency_type": "npm",
"file_types": [".ts", ".js"],
"status": "installed"
},
"detect-secrets": {
"name": "detect-secrets",
"description": "Secret detection",
"available": true,
"dependency_type": "python",
"file_types": ["*"],
"status": "installed"
},
"grype": {
"name": "Grype",
"description": "Vulnerability scanner",
"available": false,
"dependency_type": "binary",
"file_types": ["*"],
"status": "not installed",
"install_hint": "Install Grype from official source"
},
"syft": {
"name": "Syft",
"description": "SBOM generator",
"available": false,
"dependency_type": "binary",
"file_types": ["*"],
"status": "not installed",
"install_hint": "Install Syft from official source"
},
"npm-audit": {
"name": "npm-audit",
"description": "Node.js dependency scanner",
"available": true,
"dependency_type": "npm",
"file_types": ["package.json", "package-lock.json"],
"status": "installed"
}
}
}格式化报告输出: 当您调用此工具时,AI助手将显示 formatted_report 字段,提供清晰易读的摘要:
ASH Status: ✅ Installed (version 3.2.1)
Scanner Availability: 6 out of 9 scanners available
✅ Available Scanners:
• Bandit - Python security linter (python-based)
• Semgrep - Multi-language SAST (python-based) (disabled in ASH - use standalone scan_with_semgrep tool)
• Checkov - IaC security scanner (python-based)
• cdk-nag - AWS CDK security scanner (npm-based)
• detect-secrets - Secret detection (python-based)
• npm-audit - Node.js dependency scanner (npm-based)
❌ Missing Scanners:
• cfn-nag - CloudFormation security scanner (ruby-based)
Install with: gem install cfn-nag
• Grype - Vulnerability scanner (binary)
Install with: Install Grype from official source
• Syft - SBOM generator (binary)
Install with: Install Syft from official source
The tool successfully shows which scanners are available and which ones need additional OS-level dependencies.注: Semgrep被排除在ASH扫描之外,以避免与独立扫描重复 scan_with_semgrep 该工具可提供更专注、更快的扫描。
使用此工具可以:
- 在运行扫描之前验证ASH安装
- 检查您的环境中有哪些扫描仪可用
- 识别缺失的依赖项(例如,cfn-nag需要Ruby,grype/syft是二进制文件)
- 获取缺失扫描仪的安装提示
7. get_supported_formats
获取有关所有工具支持的格式和语言的信息。
8. generate_security_report
根据扫描结果生成SECURITY.md报告。
参数:
project_name(string):正在分析的项目的名称scan_results(string):JSON字符串,包含来自任何扫描工具的扫描结果。可以是单个结果对象或结果对象数组。
工作流程:
- 使用适当的扫描工具扫描相关文件
- 将所有扫描结果JSON对象收集到数组中
- 呼叫
generate_security_report和project_name和scan_results(JSON字符串) - 保存返回的
report字段asSECURITY.md
报告包括:
- 执行摘要——风险等级(临界/高/中/低)和总发现计数
- 扫描结果--按扫描仪、格式和严重性细分
- 严重性和高严重性发现——每个发现的详细信息
- 中低严重性发现——汇总表
- 威胁模型输入——STRIDE分类
- 合规和监管说明——SOC2、PCI-DSS、HIPAA、GDPR观察
- 建议——按严重程度分级的优先行动
目录扫描工具
默认情况下,以下工具扫描整个项目目录并将结果保存到文件中,以防止上下文窗口溢出:
8. scan_directory_with_grype
扫描项目目录以查找依赖关系漏洞。
参数:
directory_path(string):要扫描的目录的路径severity_threshold(字符串,可选):最小严重性阈值(低、中、高、临界)。默认值:中return_output(bool,可选):返回完整输出,而不是保存到文件。默认值:False
输出: 保存到 .grype/grype_scan_{directory}_{timestamp}.json 并返回摘要
9. scan_directory_with_checkov
扫描项目目录以查找IaC安全问题。
参数:
directory_path(string):要扫描的目录的路径severity_threshold(字符串,可选):最小严重性阈值(低、中、高、临界)。默认值:中return_output(bool,可选):返回完整输出,而不是保存到文件。默认值:False
输出: 保存到 .checkov/checkov_scan_{directory}_{timestamp}.json 并返回摘要
10. scan_directory_with_bandit
扫描项目目录以查找Python安全问题。
参数:
directory_path(string):要扫描的目录的路径severity_threshold(字符串,可选):最小严重性阈值(低、中、高)。默认值:中return_output(bool,可选):返回完整输出,而不是保存到文件。默认值:False
输出: 保存到 .bandit/bandit_scan_{directory}_{timestamp}.json 并返回摘要
11. scan_directory_with_semgrep
扫描项目目录以查找源代码安全问题。
参数:
directory_path(string):要扫描的目录的路径severity_threshold(字符串,可选):最小严重性阈值(低、中、高、临界)。默认值:中return_output(bool,可选):返回完整输出,而不是保存到文件。默认值:False
输出: 保存到 .semgrep/semgrep_scan_{directory}_{timestamp}.json 并返回摘要
12. scan_directory_with_ash
使用ASH扫描项目目录,进行全面的多工具安全分析。
参数:
directory_path(string):要扫描的目录的路径severity_threshold(字符串,可选):最小严重性阈值(低、中、高、临界)。默认值:中return_output(bool,可选):返回完整输出,而不是保存到文件。默认值:False
输出: 保存到 .ash/ash_scan_{directory}_{timestamp}.json 并返回摘要
13. scan_directory_with_syft
为项目目录生成软件物料清单(SBOM)。
参数:
directory_path(string):要扫描的目录的路径output_format(字符串,可选):输出格式(json、cyclonedx-json、spdx-json,表)。默认值:jsonsave_sbom(bool,可选):将完整的SBOM保存到文件中。默认值:False(仅返回摘要)
输出: 保存到 .sbom/sbom_{directory}_{timestamp}.{extension} 并返回摘要
14. scan_image_with_trivy
扫描容器映像以查找漏洞。
参数:
image_name(string):要扫描的容器映像(例如nginx:latest,python:3.9)severity_threshold(字符串,可选):最小严重性阈值(低、中、高、临界)。默认值:中return_output(bool,可选):返回完整输出,而不是保存到文件。默认值:False
输出: 保存到 .trivy/trivy_scan_{image}_{timestamp}.json 并返回摘要
注: 所有目录扫描工具都会自动将完整结果保存到专用文件夹中,并返回轻量级摘要。使用 return_output=True 以在响应中获得完整结果。看 扫描仪_FILE_OUTPUT.md 了解更多详情。
支持格式
契科夫(IaC)
- 地形改造:.tf、.tfvars、.tfstate
- 云层形成:.yml、.yml、.json、.template
- Kubernetes:.yml,.yml
- Dockerfile:Dockerfile
- 手臂:.json(Azure资源管理器)
- 二头肌肱二头肌
- 无服务器:.yml,.yaml
- 舵:.yml、.yml、.tpl
- github操作:.yml,.yaml
- gitlab的:.yml,.yaml
- 安斯布尔:.yml,.yaml
Semgrep(源代码)
- python南美国家巴拉圭的缩写(Paraguay)
- JavaScript:.js
- TypeScript:.ts
- JavaJava
- 去:去吧
- cc
- C++:.cpp
- C#:.cs
- 红宝石:.rb
- PHP:.php
- Scala:.scale
- Kotlin:.kt
- 锈:.rs
Bandit(仅限Python)
- python:.py文件
响应格式
所有扫描工具返回一致的响应格式:
{
"success": true,
"tool": "checkov|semgrep|bandit|ash",
"format_type": "terraform",
"language": "python",
"total_issues": 3,
"findings": [
{
"check_id": "CKV_AWS_20",
"severity": "HIGH",
"description": "S3 Bucket has an ACL defined which allows public access",
"line_number": 3,
"resource": "aws_s3_bucket.example"
}
],
"summary": {
"high": 1,
"medium": 2,
"low": 0
}
}与AI助手集成
此MCP服务器旨在与Kiro、Amazon Q Developer、Cline等AI编码助手配合使用。AI可以:
- 分析生成的代码:自动扫描代码段以查找安全问题
- 提供情境感知建议:获取特定语言和格式的安全建议
- 持续的安全反馈:将安全扫描集成到开发工作流程中
- 教育见解:通过详细的调查结果了解安全最佳实践
Kiro Power:安全扫描仪
此存储库还打包为 基洛电力 --即插即用功能包,包括MCP服务器、指导文件和文档。安装电源后,Kiro可以自动访问所有扫描工具,而无需手动配置MCP。
包含什么
sample-mcp-security-scanner/
├── POWER.md # Power metadata and documentation (repo root)
├── mcp.json # Pre-configured MCP server (auto-approve all tools)
├── steering/
│ ├── scanning-workflows.md # Auto-included: scanner selection, scan-fix-rescan loop, report generation
│ └── secure-coding.md # Auto-included: application, infrastructure, and dependency security rules
├── security_scanner_mcp_server/ # MCP server source code
├── agents/ # Pre-built Kiro agent configs
├── hooks/ # Kiro hook definitions
├── tests/ # Test suite
└── docs/ # Documentation, examples, and assets运作原理
mcp.json--预配置的MCP服务器定义,所有扫描工具自动批准。安装电源后,Kiro会自动启动安全扫描服务器。scanning-workflows.md(自动控制)--指导Kiro为每种文件类型选择正确的扫描程序,运行扫描修复-重新扫描循环,并生成SECURITY.md报告。secure-coding.md(自动包含转向)-指示Kiro在生成或审查代码时主动应用安全编码实践(输入验证、参数化查询、无硬编码秘密、强加密、最低权限IAM等)。
安装电源
- 打开Kiro并导航到 权力 面板。
- 点击 添加自定义电源.
- 选择 从GitHub导入电源.
- 粘贴存储库URL并按Enter键:
https://github.com/aws-samples/sample-mcp-security-scanner电源自动配置MCP服务器和转向文件,无需手动设置。
使用电源
安装后,Kiro会在每次对话中自动应用转向规则。您可以使用以下提示:
- “扫描当前文件以查找安全漏洞”
- 扫描此Terraform配置,修复任何问题,然后重新扫描,直到干净为止
- “对项目运行安全扫描并生成security.md报告”
- “扫描整个项目目录并总结结果”
Kiro将根据文件类型自动选择正确的扫描仪,应用安全编码实践,并遵循扫描修复-重新扫描工作流程。
基洛经纪人:拉齐奥
此存储库包括一个预构建的 基罗 使用MCP安全扫描程序提供安全第一编码协助的代理。
| 特性 | 描述 |
|---|---|
| 自动扫描 | 使用Semgrep、Bandit或Checkov扫描每次代码更改 |
| 修复循环 | 查找漏洞→ 修复它们→ 重新扫描,直到干净 |
| SECURITY.md | 使用STRIDE威胁模型生成结构化报告 |
| 默认安全 | 生成代码时应用安全最佳实践 |
| 合规提示 | 标记SOC2、PCI-DSS、HIPAA、GDPR相关模式 |
快速安装
# Global (all projects)
cp agents/sec-lazio/sec-lazio.json ~/.kiro/agents/
# Or project-specific
mkdir -p .kiro/agents
cp agents/sec-lazio/sec-lazio.json .kiro/agents/激活
/agent sec-lazio或者使用键盘快捷键: Ctrl+Shift+S
看 代理/README.md 获取完整文档和示例提示。
扫描策略
使用适合作业的扫描仪:
| 文件类型 | 主扫描仪 | 次扫描仪 |
|---|---|---|
| Python(.py) | scan_with_bandit | scan_with_semgrep |
| JavaScript(.js)、TypeScript(.ts) | scan_with_semgrep | — |
| Java、Go、Rust、Kotlin、C# | scan_with_semgrep | — |
| 地形(.tf、.tfvars) | scan_with_checkov | — |
| 云形成(.yml、.yml、.json) | scan_with_checkov | — |
| Kubernetes清单 | scan_with_checkov | — |
| Dockerfile | scan_with_checkov | scan_with_trivy |
| 容器图像 | scan_image_with_trivy | — |
| 依赖关系清单 | scan_directory_with_grype | — |
| 完整项目 | scan_directory_with_* 变体 | -- |
对于Python文件,运行Bandit和Semgrep——它们会捕获不同类别的问题。
严重性处理
| 严重性 | 行动 |
|---|---|
| CRITICAL | 必须在部署前修复--阻止发布 |
| HIGH | 修复当前冲刺中的漏洞——这些都是可利用的漏洞 |
| 中等 | 分类和计划——在下一个冲刺中修复或有理由接受 |
| 低 | 积压——审查风险接受度或机会性修复 |
发展
本地运行
# Clone and install
git clone git@github.com:aws-samples/sample-mcp-security-scanner.git
cd sample-mcp-security-scanner
uv pip install -e .
# Run the server
python -m security_scanner_mcp_server.server测试
该项目包括几个测试脚本来验证功能:
1.全面的扫描仪测试
# Test all scanners (Checkov, Semgrep, Bandit, ASH)
python tests/test_scanner.py此脚本测试:
- Checkov与Terraform代码(S3存储桶和安全组配置错误)
- Semgrep与Python代码(SQL注入和硬编码秘密)
- 使用Python代码的Bandit(不安全的pickle使用和弱加密)
2.ASH集成测试
# Test ASH availability and scanning
python tests/test_ash_integration.py此脚本测试:
- ASH安装和版本检查
- 使用包含安全问题的Python代码进行ASH扫描
- 扫描仪可用性报告
3.简单的独立测试
# Test scanners without MCP dependencies
python tests/simple_test.py此脚本测试:
- Checkov基本功能
- Semgrep的基本功能
- Bandit的基本功能
- 可用于扫描仪安装故障排除
4.ASH进口测试
# Verify ASH module can be imported
python test_ash_import.py此脚本验证:
- ASH模块安装正确
- 可以检索ASH版本
- Python环境配置正确
Kiro Hooks样品
该项目包括在 hooks/ 展示自动化安全扫描工作流程的目录。这些钩子可以安装在Kiro IDE中,以启用自动安全扫描。
1.具有自动修复功能的安全扫描程序
文件: hooks/security-scan-on-save.kiro.hook
此挂钩在保存时自动扫描文件,并提供修复安全问题的功能:
特征:
- 源代码和IaC文件的文件保存触发器
- 自动选择合适的扫描仪:
- Bandit用于Python文件 - Semgrep用于多语言源代码 - Checkov基础设施代码
- 执行初始安全扫描
- 提供补救发现(经批准):
- 用安全的替代品替换不安全的功能 - 删除硬编码的秘密 - 修复SQL注入漏洞 - 更新不安全的配置
- 修复后重新扫描以验证修复
- 提供详细的前后对比报告
支持的文件类型:
- 源代码:
.py,.js,.ts,.java,.go,.c,.cpp,.cs,.rb,.php,.scala,.kt,.rs - IaC:
.tf,.tfvars,.yaml,.yml,.json,.bicep,Dockerfile*
2.安全扫描报告(只读)
文件: hooks/security-scan-report-on-save.kiro.hook
此钩子扫描所有打开的编辑器文件,并在不修改代码的情况下提供安全报告:
特征:
- 文件保存时触发
- 扫描当前打开的所有编辑器文件(而不仅仅是活动文件)
- 根据文件类型自动选择合适的扫描仪
- 报告严重级别的安全问题
- 提供补救建议
- 只读模式-从不修改源代码
- 重复使用当前聊天会话以获得持续反馈
使用案例:
- 多个文件的安全审计
- 提交前安全检查
- 无需自动修复即可了解安全问题
- 以安全为重点的团队代码审查
在Kiro中安装挂钩
- 将钩子复制到您的项目中:
# Copy to workspace-level hooks (project-specific)
cp hooks/*.kiro.hook .kiro/hooks/
# Or copy to user-level hooks (global)
cp hooks/*.kiro.hook ~/.kiro/hooks/- 在Kiro中启用挂钩:
- 打开Kiro IDE - 导航到资源管理器视图中的“Agent Hooks”部分 - 启用所需的挂钩 - 或者使用命令面板:“打开Kiro Hook UI”
- 自定义挂钩:
- 编辑 .kiro.hook 调整文件模式的文件 - 修改提示以更改扫描行为 - 根据需要启用/禁用自动修复
注: 钩子需要在Kiro中配置和运行安全扫描程序MCP服务器。
故障排除
| 问题 | 解决方案 |
|---|---|
| 环境设置问题 | 验证是否安装了Python 3.10+。确保 uv 包管理器已安装。 |
| 扫描仪问题 | 验证是否支持文件格式。检查文件语法是否有效。确保使用了正确的文件扩展名。 |
| 集成问题 | 验证MCP服务器是否正在运行。检查配置文件是否正确。验证API终结点。 |
| ASH不可用 | 使用安装ASH uvx git+https://github.com/awslabs/automated-security-helper.git@v3.2.5 |
| 未找到Trivy | macOS: brew install trivy.Linux:请参阅 Trivy安装. |
要启用调试日志记录,请设置 "FASTMCP_LOG_LEVEL" 到 "DEBUG" 在您的MCP配置中。
相关资源
贡献
欢迎投稿!请阅读CONTRIBUTING.md了解指南。
作者
由Ivan Girardi(AWS)和Iker Reina Fuente(AWS)创建的模式。
安全
看 贡献 了解更多信息。
许可证
此库根据MIT-0许可证获得许可。请参阅LICENSE文件。
