安全合规能力
核心定位
一句話說清楚:為企業構建縱深安全防禦體系,滿足等保三級、金融級安全審計要求,讓業務系統「天生合規」。
解決什麼問題
| 合規需求 | 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["安全編碼規範"]
配置安全策略"] 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
MFA + SSO + 密碼策略"] L2["🛡️ 訪問控制層
RBAC + 資料許可權 + API許可權"] L3["🔒 資料安全層
脫敏 + 加密 + 防篡改"] L4["📋 審計追溯層
全鏈路審計 + 區塊鏈存證"] L5["🚨 安全監控層
實時風險監控 + 自動響應"] end L1 --> L2 L2 --> L3 L3 --> L4 L4 --> L5