Speed-boo3/grc-project
GitHub: Speed-boo3/grc-project
一个整合风险评估、合规检查、网络扫描和自动化报告的轻量级 GRC 工具,帮助团队追踪风险并验证安全控制是否真正落实。
Stars: 0 | Forks: 0
# GRC 项目




一个作为网络安全硕士项目一部分构建的治理、风险与合规 (GRC) 项目。它涵盖了风险评估、安全策略、合规性检查和每周报告。
## 项目功能
```
flowchart LR
A[Risk register JSON] --> B[Risk Matrix]
B --> C[Scored + ranked risks]
D[Compliance checklist] --> E[Control review]
C --> F[Weekly report]
E --> F
F --> G[reports/ folder]
G --> H[GitHub Pages / README]
```
## 项目结构
```
grc-project/
├── grc/
│ ├── risk-assessment/
│ │ ├── risk_matrix.py # Scores and ranks risks
│ │ └── sample_risks.json # Example risk register
│ ├── policies/
│ │ └── security_policy.md # Sample security policy
│ └── compliance/
│ └── checklist.md # ISO 27001 / NIST CSF checklist
├── scripts/
│ └── generate_report.py # Generates weekly reports
├── reports/
│ └── README.md # Index of all generated reports
├── tests/
│ └── test_risk_matrix.py
├── .github/workflows/
│ └── weekly-report.yml # Runs Mon, Wed, Fri at 08:00
├── requirements.txt
├── CONTRIBUTING.md
└── CHANGELOG.md
```
## 工作原理
### 风险评估
```
python grc/risk-assessment/risk_matrix.py --file grc/risk-assessment/sample_risks.json
```
风险使用标准的 **可能性 × 影响** 矩阵进行评分。每个风险获得 1 到 25 的分数,并被评为低、中、高或严重。
### 风险矩阵
```
quadrantChart
title Risk Matrix — Likelihood vs Impact
x-axis Low Impact --> High Impact
y-axis Low Likelihood --> High Likelihood
quadrant-1 Critical
quadrant-2 High
quadrant-3 Low
quadrant-4 Medium
Unpatched Systems: [0.9, 0.75]
Phishing Attack: [0.75, 0.9]
Insider Threat: [0.9, 0.35]
DDoS Attack: [0.55, 0.55]
SQL Injection: [0.9, 0.55]
Lost Laptop: [0.35, 0.55]
```
### 风险输出示例
```
Risk Assessment Report
======================================================================
ID Risk Score Level Owner
----------------------------------------------------------------------
RISK-002 Phishing attack 20 Critical Security Team
RISK-001 Unpatched systems 20 Critical IT Operations
RISK-005 Data breach via SQL injection 15 High Dev Team
RISK-003 Insider threat 10 High HR / Security
RISK-004 DDoS attack 9 Medium Network Team
RISK-006 Lost or stolen laptop 6 Medium IT Operations
```
## 合规覆盖范围
检查清单映射到两个框架:
| ISO 27001 | NIST CSF |
|---|---|
| 访问控制 | 识别 |
| 资产管理 | 保护 |
| 事件管理 | 检测 |
| 密码学 | 响应 |
| | 恢复 |
```
flowchart LR
subgraph ISO 27001
A[Access Control]
B[Asset Management]
C[Incident Management]
D[Cryptography]
end
subgraph NIST CSF
E[Identify]
F[Protect]
G[Detect]
H[Respond]
I[Recover]
end
A --> F
B --> E
C --> H
C --> I
D --> F
```
## 报告
我整理了一份每周报告,用于跟踪合规性分数和风险等级的变化。它涵盖了与检查清单相同的控制领域,并提供了当前状况的快速概览。
报告位于 [`reports/`](./reports/README.md) 文件夹中,每个日期一个子文件夹。每份报告包含按领域划分的合规性分数图表、按严重程度划分的未解决风险,以及来自 SOC 侧的警报趋势。
```
flowchart LR
A[Risk register] --> B[Score risks]
B --> C[Check compliance]
C --> D[Write report]
D --> E[reports/YYYY-MM-DD/]
```
## 设置
```
git clone https://github.com/Speed-boo3/grc-project.git
cd grc-project
pip install -r requirements.txt
```
## 运行测试
```
pytest tests/
```
## 相关项目
这项工作的 SOC 部分位于一个单独的仓库中:[soc-project](https://github.com/Speed-boo3/soc-project)
GRC 定义控制和策略。SOC 监控这些控制是否有效运行。它们相互促进。
## 网络扫描
GRC 工作中最重要的部分之一是检查书面上的控制措施是否与现实相符。网络扫描器正是为此而生——它扫描主机,发现开放端口,并将它们转化为直接输入风险登记册的风险。
### 扫描流水线如何工作
```
flowchart TD
A[Run scanner.py] --> B[nmap scans the target]
B --> C[Open ports found]
C --> D{Is the port risky?}
D -- Known risky port --> E[Risk level: High]
D -- Unexpected port --> F[Risk level: Medium]
D -- Expected port 80 443 22 --> G[No risk added]
E --> H[Risk JSON output]
F --> H
H --> I[risk_matrix.py scores and ranks]
I --> J[GRC risk register]
```
### 什么算作危险端口
| 端口 | 服务 | 风险 |
|---|---|---|
| 21 | FTP | 明文发送密码 |
| 23 | Telnet | 所有内容均未加密发送 |
| 25 | SMTP | 开放转发风险 |
| 445 | SMB | 主要的勒索软件载体 |
| 3389 | RDP | 持续的暴力破解目标 |
| 3306 | MySQL | 数据库不应公开 |
| 5432 | PostgreSQL | 数据库不应公开 |
| 6379 | Redis | 经常在无认证状态下运行 |
| 27017 | MongoDB | 多起数据泄露源于暴露的实例 |
| 8080 | HTTP Alt | 无 TLS 的开发服务器 |
### 运行扫描器
```
python grc/network-scan/scanner.py --target localhost --output network_risks.json
```
然后将输出直接输入风险矩阵:
```
python grc/risk-assessment/risk_matrix.py --file network_risks.json
```
### 输出示例
当扫描器发现危险端口时,结果如下所示:
```
Network Scan Report
Target : localhost
Date : 2026-03-16 08:00
============================================================
Open ports found: 4
22 ssh
80 http
443 https
3306 mysql (8.0.32)
Risks identified: 1
ID Risk Level
------------------------------------------------------------
NET-3306 MySQL exposed on port 3306 High
Details:
NET-3306 -- MySQL exposed on port 3306
Port : 3306 (mysql)
Reason : Database should not be exposed outside the local network.
Score : 16 -> High
Treatment: Close the port if not needed, or restrict with firewall rules.
```
### 如何连接到项目的其余部分
```
flowchart LR
A[Network scanner] -->|Finds open ports| B[Risk JSON]
B -->|Fed into| C[Risk matrix]
C -->|Scored risks| D[GRC report]
D -->|Low compliance score| E[Policy updated]
E -->|New control added| F[SOC monitors for violations]
F -->|Alert fires| A
```
这闭合了 SOC 和 GRC 之间的环路。扫描器发现弱点,GRC 将其登记为风险,策略得到更新以解决该问题,而 SOC 则持续监控未来的违规行为。
标签:GitHub Actions, GRC, Homebrew安装, ISO 27001, Markdown, NIST CSF, Python, 企业安全, 合规自动化, 安全治理, 安全策略, 安全规则引擎, 持续监控, 提示词设计, 无后门, 治理风险与合规, 网络安全, 网络安全硕士, 网络资产管理, 自动化报告, 自动笔记, 逆向工具, 量化风险评估, 防御加固, 隐私保护, 风险矩阵