关于敏感数据的存储与展示:从数据泄露事件到安全解决方案

原创
08/09 10:52
阅读数 128

敏感数据是指那些如果未经授权被访问、泄露、修改或破坏,可能会对个人、组织或国家的安全、隐私、经济利益等造成严重影响的数据。这些数据通常包含个人隐私信息、商业秘密、知识产权等关键内容。

近几年数据泄露事件举例

近几年数据泄露事件频发,涉及金融、电商、互联网、教育、医疗、酒店、汽车等行业,下面举几个例子:

1. 某*酒店集团数据泄露事件

时间:2018年

事件概述:某*酒店集团发生了一起严重的数据库泄露事件,导致约5亿条用户数据在暗网被售卖。泄露信息包括用户的姓名、手机号、邮箱、身份证号、登录账号密码等敏感信息。

影响:事件引发了公众对酒店行业数据安全的担忧,也促使企业加强了对敏感数据的保护。

2. 某*汽车用户数据泄露

时间:2022年

事件概述:某*汽车因服务器配置错误导致百万条用户信息泄露,并遭受巨额勒索。泄露信息包括用户姓名、联系方式、车辆识别码等。

影响:事件引发了公众对汽车企业数据安全的关注,也促使企业加强了对服务器配置和数据加密的管理。

3. 明星电子病历泄露

时间:2023年

事件概述:周**去世后,其电子病历截图在社交媒体流传,病历中的个人信息清晰可见。

影响:这一事件引起了公众对医疗机构诊疗信息安全的高度关注,也促使医院加强内部管理和员工培训。

敏感数据存储与展示的方法与原则

存储方法

  1. 加密存储:敏感数据在存入数据库时,应使用内部密钥进行加密,确保数据在存储过程中的安全性。内部密钥的持有应进行严格的权限控制,只有可信的人和系统才能对数据进行解密处理。
  2. 多因素认证:对于访问敏感数据的系统,应启用多因素认证机制,提高账户的安全性,防止未授权访问。
  3. 定期备份:定期对敏感数据进行备份,确保在数据丢失或损坏时能够及时恢复。

展示原则

  1. 最小化原则:在展示敏感数据时,应遵循最小化原则,只展示必要的信息,避免在公共场合或不安全的网络环境中展示敏感数据。
  2. 脱敏处理:对于需要在公共场合展示的数据,应进行脱敏处理,如使用掩码、替换等方式隐藏敏感信息。
  3. 访问控制:对敏感数据的访问应进行严格的控制,确保只有经过授权的用户或系统才能访问敏感数据。

FgxAdmin快速开发平台敏感数据解决方案

数据加密传输

FgxAdmin支持前后端加密传输,支持国际算法RSA和国标算法SM2加密确保数据的安全性,也支持SM2+RSA双重加密,防止数据在传输过程中被截获或篡改。

加密存储与脱敏展示

FgxAdmin支持敏感数据加密存储到数据库和支持页面脱敏展示。为了满足安全合规要求,除数据库加密存储外日志中也不能含有敏感数据的明文。FgxAdmin采用在Controller接口入参和出参对敏感数据进行加密和解密处理,这样就能保证敏感数据在后端的逻辑处理过程中和数据库存储都是加密的。

开启加解密

  • Controller接口方法上使用@EncryptDecrypt 注解,仅对被注解的接口进行加解密处理
  • 接口入参对象(必须继承BaseReq入参基类)中需要加密的属性使用 @Encrypt 注解
  • 接口出参对象中需要解密的属性使用@Decrypt 注解
/**
     * 新增账号
     */
@Operation(summary = "新增账号", description = "新增账号")
@OperationLog
@RequiresPermissions("system:account:add")
@NoRepeatSubmit()
@EncryptDecrypt
@PostMapping("/add")
public Result<Account> add(@Valid @RequestBody AccountAddReq req) {
    // ...
    return Result.ok(accountService.add(req));
}

@Data
@EqualsAndHashCode(callSuper = false)
public class AccountAddReq extends BaseReq {
    // ...
    
    /**
     * 手机号
     */
    @Schema(title = "手机号")
    @Length(max = 16, message = "手机号的长度不能超过16个字符")
    @Encrypt(group = Groups.ACCOUNT)
    private String mobile;

    /**
     * 邮箱
     */
    @Schema(title = "邮箱")
    @Length(max = 128, message = "邮箱的长度不能超过128个字符")
    @Encrypt(group = Groups.ACCOUNT)
    private String email;

    // ...
}

@Data
public class Account extends SimpleEntity {
    // ...
    /**
     * 手机号
     */
    @Schema(title = "手机号")
    @Decrypt(type = Types.MOBILE, group = Groups.ACCOUNT, permissions = {"system:account:unmask"})
    private String mobile;
    /**
     * 邮箱
     */
    @Schema(title = "邮箱")
    @Decrypt(type = Types.EMAIL, group = Groups.ACCOUNT, permissions = {"system:account:unmask"})
    private String email;

    // ...
}

@Decrypt 注解支持配置脱敏方式:

  • 展示密文 (即不解密)
  • 展示明文 (即不脱敏)
  • 手机号脱敏
  • 固定电话脱敏
  • 身份证号脱敏
  • 中文名脱敏
  • 地址脱敏
  • 电子邮箱脱敏
  • 密码脱敏
  • 车牌号脱敏
  • 银行卡号脱敏

加密分组

@Encrypt 和 @Decrypt 注解中都支持配置group分组,用于按分组关闭加密或脱敏功能,可通过配置项来关闭:
关闭加密功能:
setting.base.encrypt.encryptDisabledGroups=account,corpContact #多个逗号分隔

关闭脱敏功能:
setting.base.encrypt.maskDisabledGroups=account,corpContact #多个逗号分隔

# FgxAdmin配置
setting:
  base:
    # 数据库敏感数据加解密设置@Encrypt@Decrypt
    encrypt:
      # 关闭加密功能的分组,多个用逗号分隔; 默认空
      encryptDisabledGroups: 
      # 关闭脱敏功能的分组,多个用逗号分隔; 默认空
      maskDisabledGroups:

敏感数据的查看权限

FgxAdmin提供了完善的权限控制机制,确保只有经过授权的用户才能访问敏感数据。通过角色管理、菜单管理等功能,可以实现对不同用户的权限进行细粒度控制。页面一般仅展示脱敏后的打码数据,但在某些场景下需要查看敏感数据的明文,可通过“查看敏感数据”权限来控制,代码生成器中可以指定哪些字段是敏感数据并配置脱敏感方式和分组,生成代码时会同步生成“查看敏感数据”权限SQL,权限码格式为:模块名:子模块名:unmask
当用户有该模块的敏感数据查看权限时页面搜索栏下面会有一个展示敏感数据的选项,勾选后可查看敏感数据的明文。

 

 

审计日志

FgxAdmin快速开发平台记录了详细的操作日志和登录日志,方便管理员进行审计和追踪。一旦发现敏感数据泄露或异常访问行为,可以迅速定位问题并采取相应措施。

最后

敏感数据的存储与展示是企业信息安全管理的重要环节。通过回顾近几年的数据泄露事件,我们可以看到数据泄露带来的严重后果。因此,企业在处理敏感数据时,必须采取严格的安全措施,确保数据的安全性。FgxAdmin快速开发平台作为一款注重安全性的快速开发平台,为敏感数据的处理提供了有效的解决方案。

FgxAdmin快速开发平台官网:https://fuginx.com

相关文章:

1、FgxAdmin 快速开发平台的技术选型剖析与架构设计

2、通用型管理后台的账号体系设计

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部