aws-samples/sample-mcp-security-scanner
GitHub: aws-samples/sample-mcp-security-scanner
一个基于 MCP 协议的安全扫描服务器,让 AI 编程助手能够自动调用 Checkov、Semgrep、Bandit 对代码进行实时安全分析。
Stars: 10 | Forks: 2
# MCP Security Scanner:AI 代码助手的实时保护
此模式描述了如何实现一个 Model Context Protocol (MCP) 服务器,该服务器集成了三种行业标准的 security 扫描工具(Checkov、Semgrep 和 Bandit),以提供全面的代码安全分析。该服务器使 AI 编码助手能够自动扫描代码片段和 Infrastructure as Code (IaC) 配置,以查找安全漏洞、配置错误和合规性违规。
该解决方案结合了 Checkov(用于扫描 IaC 文件,包括 Terraform、CloudFormation 和 Kubernetes manifests)、Semgrep(用于分析多种编程语言,如 Python、JavaScript、Java 等)以及 Bandit(用于专门的 Python 安全扫描)。
它为安全扫描提供了一个统一的接口,具有标准化的响应格式,使将安全检查集成到开发工作流中变得更加容易。该模式使用 Python 和 MCP 框架提供自动化的安全反馈,帮助开发人员在开发过程早期识别和解决安全问题,同时通过详细的发现了解安全最佳实践。
对于希望通过 AI 辅助编码工具增强其开发安全实践的组织来说,此模式特别有价值,它提供了跨多种编程语言和基础设施定义的持续安全扫描功能。
主要功能:
- 对新代码段进行增量扫描,减少计算开销
- 隔离的安全工具环境,防止工具间交叉污染
- 与 AI 工具(Amazon Q Developer、Kiro 等)无缝集成
- 在代码生成期间提供实时安全反馈
- 可定制的扫描规则,以满足组织合规性要求
## 演示
### 代码扫描演示
使用您的 AI 助手尝试以下示例提示:
1. “扫描当前脚本并告诉我结果”
2. “扫描第 20-60 行并告诉我结果”
3. “扫描此 Amazon DynamoDB 表资源并告诉我结果”

### 带安全扫描的代码生成演示
尝试以下示例提示以生成安全的代码:
1. “生成一个启用了加密的 DynamoDB 表 Terraform 配置,并扫描其安全问题”
2. “创建一个写入 DynamoDB 的 Python Lambda 函数,并扫描其漏洞”
3. “生成一个具有适当安全设置的 S3 bucket CloudFormation 模板,并验证其是否通过安全检查”
4. “编写一个带分页功能的 Python 脚本来查询 DynamoDB,并扫描其安全最佳实践”
5. “创建一个经过安全加固的微服务 Kubernetes deployment manifest,并对其进行验证”

## 架构

## 功能
此 MCP 服务器使 AI 助手能够使用三种强大的安全扫描工具对代码片段进行全面的安全分析:
### 🛡️ Checkov - Infrastructure as Code 安全
- 扫描 Infrastructure as Code (IaC) 文件以查找安全配置错误
- 支持:Terraform、CloudFormation、Kubernetes、Dockerfile、ARM、Bicep 等
- 检测合规性违规和安全最佳实践
### 🔍 Semgrep - 源代码安全
- 分析源代码以查找安全漏洞和 bug
- 支持:Python、JavaScript、TypeScript、Java、Go、C/C++、C#、Ruby、PHP、Scala、Kotlin、Rust
- 使用专注于安全的规则集进行全面分析
### 🐍 Bandit - Python 安全专家
- 专门的 Python 安全扫描器
- 检测常见的 Python 安全问题,如不安全函数、硬编码机密、注入漏洞
- 提供详细的置信度和严重性评级
## 安装
### 前置条件
- Python >=3.10, <=3.13
- uv 包管理器(从 [Astral](https://docs.astral.sh/uv/getting-started/installation/) 安装)
### 本地安装
此 MCP 服务器不通过 PyPI 提供,以增强安全性和控制力:
- **安全性**:通过检查代码库来验证您正在运行的确切代码
- **控制**:固定到特定版本并在更新前审查更改
- **性能**:本地缓存提高了启动速度并减少了网络依赖
- **信任**:避免潜在的包名称混淆或不安全的 mcp 服务器的使用
您可以使用以下两种方法之一安装此服务器:
#### 选项 1:从本地路径安装
在本地克隆或下载代码库:
```
git clone git@github.com:aws-samples/sample-mcp-security-scanner.git
cd sample-mcp-security-scanner
```
然后配置您的 MCP 客户端以使用本地路径(请参阅下面的配置示例)。
#### 选项 2:从 GitHub 安装
配置您的 MCP 客户端以直接从 GitHub 安装,使用:
```
git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main
```
此方法会自动下载并安装服务器,而无需本地克隆(请参阅下面的配置示例)。
### 依赖项
服务器会自动安装:
- `checkov>=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` - 日志记录
## 用法
### MCP 配置
配置您的 MCP 客户端以使用该服务器。配置因客户端而异,并支持本地路径和 GitHub 安装方法。
### Kiro 入门
### Amazon Q Developer 入门
### Cline 入门
### 其他代码助手
有关 Cursor、Windsurf、VS Code、Claude Desktop 和其他 MCP 客户端的配置说明,请参阅 [AWS MCP Repository README](https://github.com/awslabs/mcp)。
### 可用工具
#### 1. `scan_with_checkov`
扫描 Infrastructure as Code 文件以查找安全问题。
**参数:**
- `code` (字符串):要扫描的 IaC 内容
- `format_type` (字符串):格式类型 (terraform, cloudformation, kubernetes, dockerfile 等)
#### 2. `scan_with_semgrep`
扫描源代码以查找安全漏洞。
**参数:**
- `code` (字符串):要扫描的源代码内容
- `language` (字符串):编程语言 (python, javascript, java 等)
#### 3. `scan_with_bandit`
扫描 Python 代码以查找安全问题(专门针对 Python)。
**参数:**
- `code` (字符串):要扫描的 Python 代码内容
#### 4. `get_supported_formats`
获取有关支持的格式和语言的信息。
## 支持的格式
### Checkov (IaC)
- **terraform**: .tf, .tfvars, .tfstate
- **cloudformation**: .yaml, .yml, .json, .template
- **kubernetes**: .yaml, .yml
- **dockerfile**: Dockerfile
- **arm**: .json (Azure Resource Manager)
- **bicep**: .bicep
- **serverless**: .yml, .yaml
- **helm**: .yaml, .yml, .tpl
- **github_actions**: .yml, .yaml
- **gitlab_ci**: .yml, .yaml
- **ansible**: .yml, .yaml
### Semgrep (源代码)
- **python**: .py
- **javascript**: .js
- **typescript**: .ts
- **java**: .java
- **go**: .go
- **c**: .c
- **cpp**: .cpp
- **csharp**: .cs
- **ruby**: .rb
- **php**: .php
- **scala**: .scala
- **kotlin**: .kt
- **rust**: .rs
### Bandit (仅限 Python)
- **python**: .py 文件
## 响应格式
所有扫描工具都返回一致的响应格式:
```
{
"success": true,
"tool": "checkov|semgrep|bandit",
"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 可以:
1. **分析生成的代码**:自动扫描代码片段以查找安全问题
2. **提供上下文感知的建议**:获取特定语言和格式的安全建议
3. **持续的安全反馈**:将安全扫描集成到开发工作流中
4. **教育性见解**:通过详细的发现了解安全最佳实践
## 开发
### 本地运行
```
# 克隆并安装
git clone git@github.com:aws-samples/sample-mcp-security-scanner.git
cd sample-mcp-security-scanner
uv pip install -e .
# 运行 server
python -m security_scanner_mcp_server.server
```
### 测试
```
# 使用示例代码测试
python examples/test_scanner.py
```
## 许可证
MIT 许可证 - 详见 LICENSE 文件。
## 贡献
欢迎贡献!请阅读 CONTRIBUTING.md 以获取指南。
## 作者
模式由 Ivan Girardi (AWS) 和 Iker Reina Fuente (AWS) 创建。
## 安全
此工具旨在通过识别漏洞来提高安全性。但是:
- 始终手动审查发现结果
- 保持扫描工具更新
- 结合其他安全措施和工具使用
## 安全
有关更多信息,请参阅 [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications)。
## 许可证
此库根据 MIT-0 许可证授权。请参阅 LICENSE 文件。
在 Kiro 中安装
有关详细信息,请参阅 [Kiro Model Context Protocol 文档](https://kiro.dev/docs/mcp/configuration/)。 1. 导航到 `Kiro` > `MCP Servers` 2. 通过点击 `Open MCP Config` 按钮添加新的 MCP 服务器。 3. 粘贴以下配置之一: #### 选项 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" }, "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" }, "disabled": false, "autoApprove": [] } } } ```在 Amazon Q Developer 中安装
有关详细信息,请参阅 [Amazon Q Developer 文档](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/qdev-mcp.html)。 1. **手动配置** - 编辑位于 `~/.aws/amazonq/mcp.json` (全局) 或 `.amazonq/mcp.json` (本地) 的 MCP 配置文件。 - 使用以下配置之一: #### 选项 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" } } } } ``` #### 选项 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" } } } } ```在 Cline 中安装
1. 安装 [Cline VS Code 扩展](https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev)。 2. 点击扩展将其打开,然后选择 **MCP Servers**。 3. 选择 **Installed** 选项卡,然后点击 **Configure MCP Servers** 以打开 `cline_mcp_settings.json` 文件。 4. 添加以下配置之一: #### 选项 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" }, "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" }, "disabled": false, "autoApprove": [] } } } ```标签:AI 编程助手, Amazon Q Developer, Bandit, CloudFormation, DevSecOps, ECS, IaC 安全, Kiro, LLM 集成, MCP, Python, Semgrep, Terraform, WordPress安全扫描, 上游代理, 安全扫描, 无后门, 时序注入, 模型上下文协议, 逆向工具, 错误基检测, 静态代码分析