【数据安全】XXXX数据安全保护标准参考

  • 版本历史
  • 一、 目的
  • 二、 范围
  • 三、 职责
    • 3.1 安全组
    • 3.2 数据提供方
    • 3.3 数据使用方
  • 四、 数据分级标准
    • 4.1 机密
    • 4.2 敏感
    • 4.3 内部
    • 4.4 公开
  • 五、 数据安全保护标准
    • 5.1 机密数据安全保护标准
    • 5.2 敏感数据安全保护标准
      • 5.2.1 WEB接口
      • 5.2.2 WEB应用
      • 5.2.3 日志文件
      • 5.2.4 生产环境数据库
      • 5.2.5 beta/dev环境数据库
      • 5.2.6 数据仓库
      • 5.2.7 其它
    • 5.3 内部数据安全保护标准
    • 5.4 公开数据安全保护标准
    • 5.5 风险定级及整改时间要求
  • 六、4 参考资料
    • 6.1 mysql清洗参考方法
    • 6.2 pg清洗参考方法

一、目的

明确信息数据分级标准,明确数据安全保护措施及要求。

二、范围

全公司

三、职责

3.1 安全组

制定和维护此安全标准,推动实施,审查执行情况,提出整改要求,采取强制措施控制风险。

3.2 数据提供方

按照此标准要求,对相关数据进行清洗,例如替换、打码、hash、加密等,合规后再提供给数据使用方。

3.3 数据使用方

按照此标准要求,在授权范围内合理使用数据,禁止扩散。

四、数据分级标准

4.1 机密

机密数据范围包括但不限于:

  • 持卡人资料,主要是卡号
  • HR薪资信息等

注意,持卡人敏感验证数据严禁以任何形式存储,包括:完整的磁条数据、CAV2、CVV、CVV2、CID、PIN

4.2 敏感

敏感数据范围包括但不限于:

  • 用户的电话号码、传真号码、电子邮箱地址、通讯地址、证件号、QQ号、密码、密保问题及答案
  • cookie中的身份认证信息,例如”_v”
  • 持卡人资料,包括:持卡人姓名、有效期、业务代码

注意:如果其它属性/字段含上述敏感数据,那么此属性/字段也属于敏感数据范围。

例如,如果”account”字段允许以手机号码或邮箱形式存在,那么”account”字段也属于敏感数据。

4.3 内部

内部数据范围包括但不限于:公司所有的研究方法、培训资料、客户资料、财务数据、技术文档、产品文档、源代码等

4.4 公开

例如公司网站各种产品信息,公开的财报,公司新闻动态等信息。

五、数据安全保护标准

5.1 机密数据安全保护标准
  • 机密数据的安全保护标准参照敏感数据的安全保护标准
  • 持卡人相关数据的安全保护,需同时符合PCI-DSS标准
  • 额外的保护措施待定
5.2 敏感数据安全保护标准
5.2.1 WEB接口

禁止通过GET参数传递敏感数据,以防止在访问日志中留下记录。注意,这种方式也是禁止的

POST /api?mobile=13812345678 HTTP/1.0
Host: xx

虽然是POST方法,但在GET参数仍然有敏感数据。
正确的方法应该是把参数放在POST请求的body中。

5.2.2 WEB应用
  • 公开系统
    • 除了在特定状态或场景(生成订单和等待支付),其它状态或场景下,敏感数据应该做打码处理,打码标准参见《应用系统设计开发安全标准
  • 内部后台
    • 如果业务场景不需要用到敏感数据,应该进行打码处理
    • 如果业务场景需要用到敏感数据,可以明文展示,但仅限单条数据。
    • 任何权限,包括超级管理员,都禁止有批量查询/导出敏感数据的功能或权限。超过1条数据即算批量。
    • 特殊的业务场景,VP特别授权后,可以有批量查询/导出敏感数据的功能或权限。
    • 查询敏感数据的操作,应该记录日志。日志内容需要包括:时间、IP、用户名、查询条件等。
5.2.3 日志文件

日志文件范围包括但不限于:业务日志、调试日志、错误日志等。原则:不可直接查看到明文的敏感数据,不可通过密钥解密出敏感数据。具体要求:

  • 禁止记录明文的敏感数据
  • 禁止记录加密后的数据
  • 禁止记录不带salt的单向hash数据
  • 如业务有特殊需求,经安全组审批后,可记录带salt的单向hash数据,salt必须是15位以上的随机字符
  • 可记录打码后的敏感数据,打码标准参见《应用系统设计开发安全标准
5.2.4 生产环境数据库
  • 禁止任何人(包括dba)用业务系统中的用户名/密码操作生产数据库
  • 禁止DEV/QA增删改查生产数据库,此类操作需dba同意,并由dba执行
  • 禁止导出业务数据、用户数据,此类操作需dba和安全组同意,并由dba执行
  • 特殊情况
    • 为支持在特殊情况下开发团队能及时处理问题、观察数据,经bu开发leader和dba同意后,可以给少量开发人员开通独立的只读权限帐号,报备给安全组
    • 对于存在数据库中的业务系统用的配置数据,应该通过业务系统功能进行操作,来不及做的系统,可以由dba授权开发人员进行操作
    • 极特殊情况下,在得到dba/bu开发leader的同意下(譬如故障处理的时候),开发可以操作数据库,但事后需要完整提交命令给dba和安全组进行审计
  • 每个数据库帐号均应该限制登录来源。如果来源是IP,必须精确匹配,不能是IP段。如果来源是主机名,可以是一组相同命名规则的通配符主机名,例如l-ttsweb*.f.cn1
  • 数据库离开生产环境前,必须对敏感数据做清洗,由DBA负责,具体清洗标准根据目的地来定
  • 数据库备份必须进行加密,标准参见《重要数据备份文件安全加密标准
5.2.5 beta/dev环境数据库

敏感数据从生产环境数据库进入beta/dev环境前,必须进行清洗。原则是:不可直接查看到明文的敏感数据,不可通过密钥解密出敏感数据。具体要求为:

  • 可用完全替换的方法,例如用一个内部的手机号,替换用户真实的手机号
  • 可用打码的方法,打码标准参见《应用系统设计开发安全标准
  • 如业务有特殊需求,经安全组审批后,可用带salt的单向hash,salt必须是15位以上的随机字符,salt由DBA保管
5.2.6 数据仓库

敏感数据从生产环境进入数据仓库前,必须进行清洗。原则是:不可直接查看到明文的敏感数据,可通过密钥解密出敏感数据。具体要求为:

  • 可用完全替换的方法,例如用一个内部的手机号,替换用户真实的手机号
  • 可用打码的方法,打码标准参见《应用系统设计开发安全标准
  • 如业务有特殊需求,经安全组审批后,可用带salt的单向hash,salt必须是15位以上的随机字符,salt由DBA保管
  • 如业务有特殊需求,经安全组审批后,可用3DES/AES对数据进行加密,密钥必须是20位以上随机字符,密钥由DBA保管
5.2.7 其它

市场营销等业务需求,需要抽取指定条件的敏感信息时,

  • 如果需要发邮件,邮件地址通过系统对接提供给EDM,敏感数据不能由业务人员经手
  • 如果需要发短信,手机号码通过系统对接提供给短信部门,敏感数据不能由业务人员经手
  • 如果需要提供给第三方,或者其它需求,由安全组评估解决方案
5.3 内部数据安全保护标准
  • 内部系统和数据应有明确的owner,如无明确owner,由安全组接管并处置
  • 内部系统和数据应由owner明确授权后才能访问
  • 禁止将内部数据扩散给无权限接触的第三人
  • 禁止将内部数据公布到互联网,例如:微博、微信、博客、在线文库、在线代码仓库、BBS、网盘等
  • 代码开源前,应获取本部门技术负责人、安全组和CTO授权
  • 行业技术交流沙龙、会议,如涉及分享公司内部数据,应获取本部门技术负责人授权,并向安全组报备
5.4 公开数据安全保护标准

暂无

5.5 风险定级及整改时间要求
  • 访问日志、业务日志、调试日志、错误日志等日志文件中
    • 如果以不合规的方式记录了机密数据,定级为高风险漏洞,要求4小时内处理完毕
    • 如果以不合规的方式记录了敏感数据,定级为中高风险漏洞,要求3天内处理完毕
  • 其它类型风险的定级和整改时间要求,根据具体场景由安全组和业务线商量,有争议的升级解决

六、参考资料

把下列SQL语句中的DB、TABLE、COLUMN替换成对应的库名、表名、字段名即可。

如果不进行打码处理,也可以把数据都统一替换成QA/DEV人员的手机号、email、证件号等。

6.1 mysql清洗参考方法
银行卡号(显示后四位,效果****1234)
update ignore DB.TABLE set COLUMN=concat('****',substr(COLUMN,-4)) where COLUMN rlike '^[0-9]{12,19}$';




手机号(显示前三位和后四位,效果186****5678)
update ignore DB.TABLE set COLUMN=concat(substr(COLUMN,1,3),'****',substr(COLUMN,-4)) where COLUMN rlike '^1[0-9]{10}$';




证件号(显示前四位和后三位,效果0010********123)
update ignore DB.TABLE set COLUMN=concat(substr(COLUMN,1,4),'****',substr(COLUMN,-3)) where COLUMN rlike '^[0-9]{17}[0-9xX]$';




email(显示@符号前三位和@符号及之后,效果abc****@gmail.com)
update ignore DB.TABLE set COLUMN=concat(substr(COLUMN,1,3),'****',substr(COLUMN,locate('@',COLUMN))) where COLUMN like '%@%';
6.2 pg清洗参考方法
银行卡号(显示后四位,效果****1234)
\c DB;
update TABLE set COLUMN=concat('****',right(COLUMN,4)) where COLUMN ~ '^[0-9]{12,19}$';




手机号(显示前三位和后四位,效果186****5678)
\c DB;
update TABLE set COLUMN=concat(left(COLUMN,3),'****',right(COLUMN,4)) where COLUMN ~ '^1[0-9]{11}$';




证件号(显示前四位和后三位,效果0010********123)
\c DB;
update TABLE set COLUMN=concat(left(COLUMN,4),'****',right(COLUMN,3)) where COLUMN ~ '^[0-9]{17}[0-9xX]$';




email(显示@符号前三位和@符号及之后,效果abc****@gmail.com)
\c DB;
update TABLE set COLUMN=concat(left(COLUMN,3),'****',substring(COLUMN from '@.*')) where COLUMN like '%@%';

关于 “【数据安全】XXXX数据安全保护标准参考” 的 2 个意见

发表评论

电子邮件地址不会被公开。 必填项已用*标注