frousselet/open-grc
GitHub: frousselet/open-grc
一套功能完备的开源治理、风险与合规管理平台,支持 ISO 27005 和 EBIOS RM 风险方法论。
Stars: 0 | Forks: 0
# Open GRC
基于 Django 构建的开源治理、风险与合规 (GRC) 平台。
## 功能特性
### 治理 (背景与组织)
- **范围** — 具有版本控制和审批流程的层级组织边界
- **站点** — 具有层级的物理和逻辑位置(办公室、数据中心、云端区域)
- **议题** — 具有影响和趋势追踪的内部/外部战略议题(PESTLE 类别)
- **利益相关者** — 具有期望、影响力/利益水平及 RACI 支持的相关方
- **目标** — 具有 KPI 追踪的安全和业务目标(目标值/当前值、进度 %)
- **SWOT 分析** — 具有影响级别的结构化优势/劣势/机会/威胁分析
- **角色与职责** — RACI 矩阵、强制角色执行、职责分配
- **活动** — 具有关键性级别的层级业务流程(核心、支持、管理)
### 资产管理
- **核心资产** — 具有 DIC 评估(机密性、完整性、可用性,5 级量表)的业务流程和信息资产
- **支持资产** — 具有生命周期追踪(EOL、保修)的 IT 基础设施(硬件、软件、网络、服务、站点、人员)
- **依赖关系** — 核心资产到支持资产的映射,包含关键性、SPOF 检测和冗余追踪
- **资产组** — 支持资产的逻辑分组
- **DIC 继承** — 支持资产自动继承关联核心资产的最大 DIC 级别
- **评估记录** — 每个核心资产的历史 DIC 评估追踪
### 风险管理
- **风险评估** — ISO 27005 和 EBIOS RM 方法论
- **风险准则** — 可配置的可能性/影响尺度,支持动态风险矩阵生成
- **风险** — 三级追踪(初始、当前、残留)及处理决策(接受、缓解、转移、规避)
- **威胁目录** — 按类型(蓄意、意外、环境)和来源分类的可复用威胁
- **漏洞目录** — 可复用的漏洞,包含严重性、CVE 参考和修复指导
- **ISO 27005 分析** — 原子威胁 x 漏洞风险场景,包含综合可能性/影响计算
- **处理计划** — 结构化补救措施,包含有序操作、进度追踪和成本估算
- **风险接受** — 正式接受记录,包含到期日期、条件和审查追踪
- **风险矩阵** — 可视化热力图(当前 vs 残留)
### 合规管理
- **框架** — 监管和标准框架(ISO 27001、GDPR、NIS2 等),包含类型、类别和管辖范围
- **章节** — 层级化的框架结构
- **要求** — 针对特定框架的要求,包含合规状态、证据和差距追踪
- **评估** — 合规性评价,包含逐项要求的结果和自动合规水平计算
- **行动计划** — 差距补救计划,包含优先级、进度和成本追踪
- **跨框架映射** — 跨框架的要求对要求映射(等效、部分、包含、相关)
- **框架导入** — 基于 Excel 的框架和需求批量导入
### 用户与访问控制
- **自定义用户模型** — 基于邮箱的身份验证,使用 UUID 主键
- **基于角色的访问控制** — 使用 `module.feature.action` 代码名的细粒度权限 (90+)
- **6 个系统组** — Super Admin、Admin、RSSI/DPO、Auditor、Contributor、Reader
- **基于范围的租户** — 组可被限制在特定的组织范围内
- **账户安全** — 登录失败锁定(5 次尝试 / 15 分钟),强制密码复杂度
- **双重认证** — 基于会话(Web UI)+ 带有 Token 轮换的 JWT(API)
- **访问日志** — 认证事件的完整审计追踪(登录、登出、锁定、密码更改)
### 实时仪表盘
- **WebSocket 更新** — 通过 Django Channels 推送实时仪表盘统计数据,无需刷新页面
- **动画计数器** — 平滑的计数动画,采用 easeOutExpo 缓动和本地化千位分隔符
- **连接状态** — 声纳风格的视觉指示器,显示 WebSocket 连接状态
- **自动重连** — 指数退避重连(最长 30 秒)
- **范围感知** — 每个用户仅查看与其分配范围匹配的数据
### 指标 (KPI 追踪)
- **自定义指标** — 手动 KPI、度量值和合规度量追踪,支持数字、布尔值或百分比格式
- **预定义指标** — 自动计算的度量(全局合规率、风险处理率、目标进度等)
- **阈值** — 关键阈值检测,支持可配置运算符和最小/最大边界
- **测量历史** — 带有时间戳的测量记录,包含趋势和增量追踪
- **迷你图** — 仪表盘上数值指标的嵌入式图表
### 通用能力
- **审批工作流** — 对所有领域模型的两步审批(提交/批准),具有专用权限
- **审计追踪** — 通过 django-simple-history 记录每个模型的完整变更历史
- **版本控制** — 所有领域对象自动版本递增
- **上下文帮助** — 带有多语言内容 (FR/EN) 的内联帮助横幅
- **Excel 导出** — 将资产、风险、合规数据导出到 Excel
- **深色模式** — 根据操作系统偏好自动切换主题
- **响应式 UI** — 可折叠侧边栏,适配移动端的布局
- **REST API** — 对所有资源提供完整的 CRUD + 过滤、搜索、分页和导出功能
- **HTMX 集成** — 无需整页重载的动态局部更新
- **Passkey 认证** — FIDO2 WebAuthn 无密码登录,支持可发现凭证
- **MCP Server** — 支持 JSON-RPC 2.0 的服务器,包含 40+ 工具和用于外部客户端的 OAuth 2.0 认证
## 技术栈
| 组件 | 技术 |
|-----------|-----------|
| 后端 | Django 5.2 LTS |
| 数据库 | PostgreSQL 16 |
| 实时通信 | Django Channels + Redis 7 |
| ASGI 服务器 | Uvicorn |
| REST API | Django REST Framework |
| 身份验证 | djangorestframework-simplejwt, fido2 (WebAuthn) |
| 审计追踪 | django-simple-history |
| 过滤器 | django-filter |
| 前端 | Bootstrap 5.3 + HTMX |
| 导出 | openpyxl |
| 容器 | Docker & Docker Compose |
## 快速开始
### 前置条件
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)
### 快速启动
1. 复制环境文件:
```
cp .env.example .env
```
2. 启动服务:
```
docker compose up --build
```
3. 应用数据库迁移(在另一个终端中):
```
docker compose exec web python manage.py migrate
```
4. 创建超级用户:
```
docker compose exec web python manage.py createsuperuser
```
应用程序访问地址为 [http://localhost:8000](http://localhost:8000)。
管理界面地址为 [http://localhost:8000/admin/](http://localhost:8000/admin/)。
### 使用 Docker Hub 镜像
您可以直接使用发布的镜像运行 Open GRC,而无需克隆仓库。
创建一个 `docker-compose.yml` 文件:
```
services:
web:
image: frousselet/open-grc:latest
ports:
- "8000:8000"
environment:
SECRET_KEY: change-me-to-a-random-secret-key
DEBUG: "False"
ALLOWED_HOSTS: localhost,127.0.0.1
POSTGRES_DB: open_grc
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_HOST: db
POSTGRES_PORT: "5432"
REDIS_HOST: redis
REDIS_PORT: "6379"
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
redis:
image: redis:7-alpine
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
db:
image: postgres:16
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: open_grc
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
volumes:
postgres_data:
```
然后启动堆栈:
```
docker compose up -d
docker compose exec web python manage.py migrate
docker compose exec web python manage.py createsuperuser
```
## 许可证
MIT
标签:Django, EBIOS RM, GPT, GRC, ISO 27005, IT治理, KPI追踪, Python, RACI矩阵, SWOT分析, 业务连续性, 企业治理, 占用监测, 合规自动化, 威胁目录, 开源GRC平台, 搜索引擎查询, 数据隐私, 无后门, 治理风险与合规, 测试用例, 漏洞管理, 网络安全, 请求拦截, 资产管理, 隐私保护