安全合规能力
核心定位
一句话说清楚:为企业构建纵深安全防御体系,满足等保三级、金融级安全审计要求,让业务系统「天生合规」。
解决什么问题
| 合规需求 |
RuoYiPlus 安全方案 |
| 等保三级认证 |
身份鉴别 + 访问控制 + 安全审计 + 数据完整性 + 数据保密性 |
| 金融级审计 |
区块链哈希链存证 + 防篡改操作日志 |
| 数据隐私保护 |
敏感字段自动脱敏 + 传输加密 + 存储加密 |
| 风险防控 |
实时风险监控 + 异常行为告警 + 账号冻结 |
适合什么样的用户
mindmap
root((安全合规需求用户))
金融机构
等保三级认证
金融审计合规
医疗行业
HIPAA 合规
患者数据保护
政务平台
等级保护
数据安全
SaaS 企业
多租户安全隔离
数据隐私合规
用户角色
graph TB
subgraph "安全角色"
SA["安全管理员
配置安全策略"]
AUDITOR["审计员
审查操作日志"]
ADMIN["系统管理员
运维安全"]
DEV["开发人员
安全编码"]
end
SA -->|配置| MFA["多因素认证"]
SA -->|配置| PWD["密码策略"]
AUDITOR -->|审查| LOG["操作日志"]
AUDITOR -->|生成| REPORT["合规报告"]
ADMIN -->|管理| KEY["密钥管理"]
ADMIN -->|监控| ALERT["安全告警"]
DEV -->|遵循| SECURE["安全编码规范"]
1. 安全体系架构
graph TB
subgraph "RuoYiPlus 安全合规体系"
subgraph "身份认证层"
A1["IAM 中心"]
A2["多因素认证"]
A3["SSO 单点登录"]
end
subgraph "访问控制层"
B1["RBAC 权限"]
B2["数据权限"]
B3["API 权限"]
end
subgraph "数据安全层"
C1["加密脱敏"]
C2["防篡改"]
C3["数据分级"]
end
subgraph "安全审计层"
D1["Audit 中心"]
D2["风险预警"]
D3["合规报表"]
end
subgraph "安全防护层"
E1["WAF"]
E2["防注入"]
E3["防 XSS"]
E4["防 CSRF"]
E5["防 DDoS"]
E6["密钥管理"]
end
end
A1 --> B1
A2 --> B1
A3 --> B1
B1 --> C1
B2 --> C1
B3 --> C1
C1 --> D1
C2 --> D1
C3 --> D1
D1 --> E1
2. 身份认证安全
2.1 多因素认证 (MFA)
graph LR
A["用户登录"] --> B{"是否需要 MFA?"}
B -->|是| C["输入密码"]
C --> D{"选择验证方式"}
D --> E["短信 OTP"]
D --> F["邮件 OTP"]
D --> G["TOTP"]
D --> H["硬件 Key"]
E --> I["认证成功"]
F --> I
G --> I
H --> I
B -->|否| I
| 认证方式 |
安全等级 |
说明 |
| 密码 + 验证码 |
⭐⭐ |
基础双因素 |
| 密码 + 短信 OTP |
⭐⭐⭐ |
动态短信验证码 |
| 密码 + 邮件 OTP |
⭐⭐⭐ |
邮件验证码 |
| 密码 + TOTP |
⭐⭐⭐⭐ |
时间同步动态口令 |
| 密码 + 硬件 Key |
⭐⭐⭐⭐⭐ |
FIDO2/U2F 最高安全 |
2.2 SSO 单点登录
sequenceDiagram
participant User as 用户
participant App1 as 应用1
participant IAM as IAM 认证中心
participant App2 as 应用2
User->>App1: 访问应用1
App1->>IAM: 未认证,跳转认证
User->>IAM: 输入凭证
IAM->>IAM: 认证成功,签发 Token
IAM->>App1: 返回 Token
User->>App2: 访问应用2
App2->>IAM: 验证 Token
IAM->>App2: Token 有效
App2->>User: 直接访问
| 协议 |
支持 |
适用场景 |
| OAuth 2.0 |
✅ |
第三方应用授权 |
| OIDC |
✅ |
现代应用 SSO |
| SAML 2.0 |
✅ |
企业级 SSO |
| LDAP |
✅ |
企业目录集成 |
2.3 登录安全策略
security:
login:
password:
min-length: 8
require-uppercase: true
require-lowercase: true
require-digit: true
require-special: true
expiry-days: 90
history-count: 5
lockout:
max-failed: 5
lockout-duration: 30m
abnormal:
enabled: true
notify-on-new-device: true
block-high-risk: true
3. 访问控制
3.1 RBAC 权限模型
graph TB
A["用户"] --> B["角色"]
B --> C["菜单权限"]
B --> D["操作权限"]
B --> E["数据权限"]
A --> F["岗位"]
F --> G["角色继承"]
F --> H["数据范围"]
3.2 数据权限控制
graph LR
A["数据请求"] --> B{"权限类型"}
B -->|全部数据| C["*"]
B -->|本部门数据| D["dept_id = current.dept_id"]
B -->|本人数据| E["creator_id = current.user_id"]
B -->|自定义数据| F["region_id IN current.regions"]
C --> G["返回数据"]
D --> G
E --> G
F --> G
3.3 API 权限控制
// 方法级权限控制
@RequiresPermissions(value = {"system:user:add", "system:user:edit"}, logical = Logical.OR)
public void saveUser(User user) { }
// 角色权限控制
@RequiresRoles(value = {"admin", "manager"})
public void exportReport() { }
// 自定义权限校验
@RequiresCustomPermissions(key = "data:export:financial")
public void exportFinancial() { }
4. 数据安全
4.1 敏感字段脱敏流程
graph TB
A["数据查询"] --> B["脱敏规则匹配"]
B --> C{"字段类型"}
C -->|手机号| D["中间4位脱敏"]
C -->|邮箱| E["用户名脱敏"]
C -->|身份证| F["出生日期+后4位"]
C -->|银行卡| G["仅后4位"]
C -->|姓名| H["姓氏外脱敏"]
C -->|密码| I["完全隐藏"]
D --> J["返回脱敏结果"]
E --> J
F --> J
G --> J
H --> J
I --> J
4.2 传输与存储安全
| 配置项 |
说明 |
| HTTPS 强制 |
全站 HTTPS,HTTP 自动跳转 |
| TLS 版本 |
TLS 1.3 (兼容 TLS 1.2) |
| HSTS |
强制使用 HTTPS |
| 数据库加密 |
AES 加密敏感字段 |
5. 审计追踪
5.1 审计事件采集
graph TB
subgraph "审计事件采集"
A1["登录审计"]
A2["操作审计"]
A3["权限审计"]
A4["导出审计"]
A5["敏感审计"]
A6["API 审计"]
end
subgraph "审计处理"
B1["事件解析"]
B2["风险评分"]
B3["规则匹配"]
end
subgraph "审计存储"
C1["热数据"]
C2["冷数据"]
C3["区块链"]
end
A1 --> B1
A2 --> B1
A3 --> B1
A4 --> B1
A5 --> B1
A6 --> B1
B1 --> B2
B2 --> B3
B3 --> C1
B3 --> C2
B3 --> C3
5.2 区块链哈希链
graph TB
subgraph "Genesis Block"
A1["blockHash = SHA256"]
A2["genesisData"]
end
subgraph "Block N"
B1["blockHash = SHA256"]
B2["previousHash"]
B3["merkleRoot"]
B4["signature"]
end
subgraph "Block N+1"
C1["blockHash = SHA256"]
C2["previousHash = Block N hash"]
C3["merkleRoot"]
C4["signature"]
end
A1 --> B2
B1 --> C2
6. 合规支持
6.1 等保三级覆盖
graph LR
A["等保三级要求"] --> B["身份鉴别"]
A --> C["访问控制"]
A --> D["安全审计"]
A --> E["数据完整性"]
A --> F["数据保密性"]
A --> G["备份恢复"]
B --> H["MFA/SSO"]
C --> I["RBAC/数据权限"]
D --> J["Audit 中心"]
E --> K["区块链哈希链"]
F --> L["加密脱敏"]
G --> M["数据备份方案"]
| 等保要求 |
实现方式 |
覆盖情况 |
| 身份鉴别 |
MFA/SSO |
✅ 完整 |
| 访问控制 |
RBAC/数据权限 |
✅ 完整 |
| 安全审计 |
Audit 中心 |
✅ 完整 |
| 数据完整性 |
区块链哈希链 |
✅ 完整 |
| 数据保密性 |
加密脱敏 |
✅ 完整 |
| 备份恢复 |
数据备份方案 |
✅ 完整 |
7. 安全监控
7.1 实时风险监控
graph TB
subgraph "风险监控"
A1["异地登录"]
A2["暴力破解"]
A3["异常查询"]
A4["批量导出"]
A5["权限滥用"]
end
subgraph "风险判断"
B["风险引擎"]
end
subgraph "响应动作"
C1["短信告警"]
C2["账号冻结"]
C3["日志标记"]
C4["需要审批"]
C5["实时告警"]
end
A1 --> B
A2 --> B
A3 --> B
A4 --> B
A5 --> B
B --> C1
B --> C2
B --> C3
B --> C4
B --> C5
| 监控项 |
风险阈值 |
响应动作 |
| 异地登录 |
新城市登录 |
短信告警 |
| 暴力破解 |
5分钟失败>10次 |
账号冻结 |
| 异常查询 |
单用户>100次/分钟 |
日志标记 |
| 批量导出 |
>50条/分钟 |
需要审批 |
| 权限滥用 |
非工作时间操作核心数据 |
实时告警 |
8. 安全配置清单
| 配置项 |
建议值 |
说明 |
| 密码最小长度 |
12位 |
强密码策略 |
| 密码过期 |
90天 |
强制定期修改 |
| 登录失败锁定 |
5次 |
防暴力破解 |
| MFA |
强制 |
管理员必须开启 |
| HTTPS |
强制 |
全站加密 |
| 日志留存 |
1年 |
合规要求 |
| 会话超时 |
30分钟 |
自动登出 |
| API 限流 |
100 QPS |
防 DDoS |
安全能力总览
graph TB
subgraph "安全纵深防御"
L1["🔐 身份认证层
MFA + SSO + 密码策略"]
L2["🛡️ 访问控制层
RBAC + 数据权限 + API权限"]
L3["🔒 数据安全层
脱敏 + 加密 + 防篡改"]
L4["📋 审计追溯层
全链路审计 + 区块链存证"]
L5["🚨 安全监控层
实时风险监控 + 自动响应"]
end
L1 --> L2
L2 --> L3
L3 --> L4
L4 --> L5
docs