feat: 数据脱敏体系重构 — 全局设置+masked_columns+前端去硬编码
后端: - applyDataMasking 新增 masked_columns 返回字段,告诉前端哪些列被脱敏 - seedDefaultSettings 添加 data_masking 分组(启用开关+敏感字段列表) - 脱敏逻辑: 全局敏感字段 + 实例级 mask_fields 合并,开关关闭则跳过 前端: - QueriesPage 去掉硬编码 sensitiveKeywords 和 maskData() - 改用后端返回的 masked_columns 显示'敏'标签 - 脱敏值由后端统一处理(替换为*) - PlatformConfigPage 数据脱敏分组独立显示 - EditInstanceDialog 脱敏字段简化为逗号分隔输入 验证: - 设置页开关可正常开关/保存 - 查询 ghost_test: email列被脱敏为*,列头显示'敏'标签 - 非敏感列(name, id, status)正常显示
This commit is contained in:
1 parent
e81eed288c
commit
557d88d3ed
6 files changed
+155
-62
No files matched your search
@@ -60,6 +60,9 @@ func main() {
|
||||
&model.UserGroup{},
|
||||
)
|
||||
|
||||
// Seed default settings (idempotent)
|
||||
seedDefaultSettings(db)
|
||||
|
||||
// Setup Gin
|
||||
r := gin.Default()
|
||||
r.Use(middleware.CORSMiddleware())
|
||||
@@ -79,3 +82,21 @@ func main() {
|
||||
log.Fatalf("Failed to start server: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func seedDefaultSettings(db *gorm.DB) {
|
||||
defaults := []model.SystemSetting{
|
||||
// Data masking group
|
||||
{Key: "data_masking_enabled", Value: "true", ValueType: "boolean", Group: "data_masking", Label: "启用数据脱敏", Desc: strPtr("启用后,查询结果中的敏感字段将被替换为 *"), DefaultValue: strPtr("true"), SortOrder: 1},
|
||||
{Key: "data_masking_sensitive_fields", Value: "mobile,concat_mobile,email_alias,email,password,ga_key,private_key,secret,secret_key,key_snow,telephone,username,real_name,token,two_factor_secret,content,phone", ValueType: "string", Group: "data_masking", Label: "默认敏感字段列表", Desc: strPtr("全局敏感字段,逗号分隔。匹配列名(不区分大小写)"), DefaultValue: strPtr("mobile,concat_mobile,email_alias,email,password,ga_key,private_key,secret,secret_key,key_snow,telephone,username,real_name,token,two_factor_secret,content,phone"), SortOrder: 2},
|
||||
}
|
||||
for _, s := range defaults {
|
||||
var existing model.SystemSetting
|
||||
if db.Where("`key` = ?", s.Key).First(&existing).Error != nil {
|
||||
db.Create(&s)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func strPtr(s string) *string {
|
||||
return &s
|
||||
}
|
||||
Reference in new issue
Block a user