代码与数据合规扫描技能。扫描代码仓库或数据处理流程, 自动检测 GDPR、CCPA、SOC 2、HIPAA、PCI-DSS 合规风险, 输出结构化合规报告和修复建议。 适用于工程团队、合规官、CTO 进行合规自检和审计准备。
---
name: compliance-scan
description: >
代码与数据合规扫描技能。扫描代码仓库或数据处理流程,
自动检测 GDPR、CCPA、SOC 2、HIPAA、PCI-DSS 合规风险,
输出结构化合规报告和修复建议。
适用于工程团队、合规官、CTO 进行合规自检和审计准备。
version: 1.0.0
author: AgentSkills Factory
tags:
- compliance
- security
- gdpr
- soc2
- audit
- risk-assessment
platforms:
- claude-code
- cursor
- codex-cli
- openclaw
license: commercial
price: 99
---
# 合规扫描报告
## 这个技能做什么
扫描代码仓库或数据处理流程,自动检测合规风险并输出修复建议:
1. **数据隐私合规**:GDPR(欧盟)、CCPA(加州)、PIPL(中国)
2. **安全合规**:SOC 2 Type II、ISO 27001
3. **行业合规**:HIPAA(医疗)、PCI-DSS(支付)
4. **风险评级**:每个发现按严重程度分级
5. **修复建议**:具体到代码级别的修复方案
6. **审计准备**:生成审计员可用的合规证据清单
## 触发条件
- 提到"合规""compliance""GDPR""SOC 2""HIPAA""PCI""审计""audit"
- 使用 `/compliance-scan` 或 `/compliance` 命令
- 要求检查代码的安全或隐私风险
**示例**:
- "扫描这个仓库的 GDPR 合规风险"
- "/compliance-scan --framework=soc2"
- "检查我们的数据处理流程是否符合 HIPAA"
## 工作流
### 步骤 1:确认扫描范围
必需信息:
- 代码仓库路径(本地路径或 GitHub URL)
- 或直接粘贴的代码片段
可选信息:
- 目标合规框架(默认全量扫描)
- 业务类型(B2B/B2C/医疗/金融/电商)
- 数据涉及地区(欧盟/美国/中国/全球)
### 步骤 2:代码扫描
读取代码文件,检测以下风险模式:
#### 2.1 数据收集与存储风险
**扫描项**:
- 硬编码的 API 密钥、数据库密码、JWT secret
- 敏感数据(邮箱、电话、身份证号)明文存储
- 日志中输出敏感信息
- 数据库未加密的字段
**检测方法**:
```
搜索模式:
- sk_live_, sk_test_ (Stripe密钥)
- AKIA (AWS密钥)
- ghp_, gho_ (GitHub token)
- jwt_secret, JWT_SECRET, secret_key
- password =, passwd =, pwd =
- BEGIN PRIVATE KEY
- 社会安全号格式 \d{3}-\d{2}-\d{4}
- 邮箱格式在数据库schema中明文存储
```
#### 2.2 数据传输风险
**扫描项**:
- API 端点未使用 HTTPS
- 敏感数据通过 query parameter 传输
- CORS 配置过于宽松(`*`)
- 缺少 CSRF 保护
- API 响应中泄露敏感字段
#### 2.3 访问控制风险
**扫描项**:
- 缺少身份验证的 API 端点
- 权限检查缺失(IDOR 风险)
- JWT 验证不完整(未验证 exp、未验证算法)
- Session 管理问题(固定 session、未设置 httpOnly)
- 管理接口暴露
#### 2.4 数据处理合规(框架特定)
**GDPR 扫描项**:
- 用户数据导出功能是否存在
- 用户数据删除功能是否存在(被遗忘权)
- 数据处理同意记录机制
- 数据跨境传输标识
- 隐私政策引用
**CCPA 扫描项**:
- "Do Not Sell My Info" 机制
- 用户数据查询接口
- 数据分类标签
**HIPAA 扫描项**(医疗业务):
- PHI(受保护健康信息)加密
- 访问日志记录
- 最小必要原则实施
- BAA(业务伙伴协议)提示
**PCI-DSS 扫描项**(支付业务):
- 信用卡号处理(是否有PCI合规风险)
- 是否使用 tokenization
- 是否存储 CVV
- 支付数据隔离
### 步骤 3:风险评级
每个发现按以下标准评级:
| 级别 | 定义 | 示例 | 修复时限 |
|------|------|------|---------|
| 🔴 严重 | 直接违反合规要求,可能导致罚款 | 硬编码生产密钥 | 立即 |
| 🟠 高危 | 合规要求未满足,审计不通过 | 缺少数据删除功能 | 1周内 |
| 🟡 中危 | 合规最佳实践未遵循 | 日志泄露部分敏感信息 | 2周内 |
| 🟢 低危 | 改进建议 | 缺少隐私政策引用 | 1月内 |
| ℹ️ 提示 | 信息性建议 | 建议增加访问日志 | 规划中 |
### 步骤 4:输出报告
---
## 📋 合规扫描报告
**扫描目标**:{仓库路径/代码描述}
**扫描日期**:{日期}
**目标框架**:{GDPR / CCPA / SOC 2 / HIPAA / PCI-DSS / 全量}
**业务类型**:{B2B / B2C / 医疗 / 金融 / 电商}
### 扫描摘要
| 指标 | 数量 |
|------|------|
| 🔴 严重 | {n} |
| 🟠 高危 | {n} |
| 🟡 中危 | {n} |
| 🟢 低危 | {n} |
| ℹ️ 提示 | {n} |
| **总扫描文件数** | {n} |
| **合规度评分** | {x}/100 |
**合规度评分规则**:
```
100 - (严重×15 + 高危×8 + 中危×3 + 低危×1) = 合规度评分
最低0分
```
### 详细发现
#### 🔴 严重风险
**发现 #1:{风险标题}**
- **位置**:{文件路径}:{行号}
- **框架**:{GDPR/SOC2/HIPAA等}
- **描述**:{风险详情}
- **代码片段**:
```{语言}
{相关代码}
```
- **影响**:{可能的合规后果}
- **修复建议**:
```
{具体修复方案,包括代码示例}
```
- **参考**:{合规条款引用}
(每个发现都按此格式)
#### 🟠 高危风险
{同上格式}
#### 🟡 中危风险
{同上格式}
#### 🟢 低危风险
{同上格式,可简化}
### 合规框架对照
| 框架要求 | 状态 | 备注 |
|---------|:----:|------|
| 数据加密存储 | ✅/❌/⚠️ | {说明} |
| 数据传输加密 | ✅/❌/⚠️ | {说明} |
| 访问控制 | ✅/❌/⚠️ | {说明} |
| 审计日志 | ✅/❌/⚠️ | {说明} |
| 数据主体权利 | ✅/❌/⚠️ | {说明} |
| 事件响应计划 | ✅/❌/⚠️ | {说明} |
### 审计准备清单
以下文件/证据需要准备以应对审计:
- [ ] {证据1}
- [ ] {证据2}
- [ ] {证据3}
### 修复优先级路线图
**第一优先(立即修复)**:
1. {修复项}
2. {修复项}
**第二优先(1周内)**:
1. {修复项}
**第三优先(2周内)**:
1. {修复项}
---
### 步骤 5:质量自检
- [ ] 所有发现都有具体文件位置和行号
- [ ] 每个发现都有修复建议(不是只说问题不说方案)
- [ ] 风险评级与严重程度匹配
- [ ] 合规框架对照表完整
- [ ] 没有漏报明显风险(如硬编码密钥必报)
- [ ] 修复建议包含代码示例
## 使用示例
**用户输入**:
> 扫描 ./src 目录的 GDPR 和 SOC 2 合规风险,我们是 B2C 电商
**AI 行为**:
1. 读取 ./src 目录下的代码文件
2. 按扫描项逐一检测
3. 重点检查 GDPR(B2C电商涉及用户数据)和 SOC 2
4. 输出完整报告
**用户输入**:
> 检查这段代码的 PCI-DSS 合规性:{代码}
**AI 行为**:
1. 分析代码中的支付数据处理
2. 检测信用卡号处理、存储、传输
3. 输出PCI-DSS专项报告
## 注意事项
1. **准确性**:只报告确实存在的风险,不夸大
2. **上下文**:考虑业务场景(如内网工具的CORS风险等级低于公网API)
3. **可修复**:每个发现必须有可执行的修复方案
4. **框架引用**:引用具体的合规条款,方便用户查证
5. **不替代专业审计**:本工具是自检工具,不替代正式的合规审计
## 技能边界
这个技能**不做**:
- 不执行渗透测试
- 不访问外部系统
- 不做法律建议
- 不替代正式合规审计
- 不评估组织层面的合规(只评估代码层面)
---
*AgentSkills Factory 出品 | 版本 1.0.0 | 适用于 Claude Code / Cursor / Codex CLI / OpenClaw*
don't have the plugin yet? install it then click "run inline in claude" again.