数据安全仓黄皮书
数据安全仓产品需求
-
- 拦截所有进出流量,至少可以部署在每个VM端,如果可以部署在宿主机即可防护全部VM则更好
- 工作在三层(IP)或二层(Mac)均可
- 发送数据包时
- 目的端如果在黑名单中则拒发,如果既不在黑名单也不在白名单中则根据配置决定是否拒发
- 目的端如果不在密钥列表中直接转发
- 从缓存列表中查找目的端的公钥
- 如果是三层,查找IP列表
- 如果目的端是域名,解析成IP后查找IP列表
- 如果是二层, 查找MAC列表
- 在密钥列表的表明对端也是咱们自己程序,否则是不识别咱们的数据包格式的
- 如果配置要签名,计算原数据Hash值,用本节点私钥签名
- Hash算法可配置md5或sm3,缺省是md5
- 签名算法可配置ECC256或sm2,缺省是sm2
- 生成随机对称密钥作为会话密钥,用会话密钥对数据包加密
- 根据配置选择sm4或AES256,缺省是AES256
- 用对方公钥加密会话密钥
- 根据配置选择SM2或ECC256,缺省是ECC256
- 如果配置要纠错能力,将加密后的数据包分为n个分片,再计算m份校验分片
- 纠错算法用RS,n和m由配置决定
- 如果配置要Hash校验,每个分片都计算Hash值
- 数据包包头加上数字信封,数据结构建议如下,也可以用等效的protobuf:
char[6] “SurPkt”标识
BYTE 数字信封数据结构版本号
BYTE 数字信封长度(字节为单位)
BYTE 纠错码算法,0=无纠错,1=RS
WORD 数据shard长度,无纠错时等于原始数据长度(不支持超过64K数据包有问题吗?)
BYTE 原始数据shard数量,无纠错功能时为1
BYTE 校验码shard数量,无纠错时为0
BYTE 加密算法编号,0=不加密,1=AES256,2=SM4
BYTE Hash算法编号,0=没有hash校验,1=MD5,2=SHA1,3=SHA256, 4=SHA3, 5=SM3
BYTE 签名算法编号,0=没有签名,1=ECC256-25519,2=SM2
BYTE 加密后的密钥长度(字节为单位),不加密时为0
BYTE[] 用对方公钥加密的会话密钥,长度见上
BYTE 签名长度(字节为单位),没有签名时为0
BYTE[] 发送方签名数据,长度见上
- 拦截所有进出流量,至少可以部署在每个VM端,如果可以部署在宿主机即可防护全部VM则更好
BYTE Hash长度(字节为单位),没有hash校验时为0
BYTE[] hash值,长度见上
-
-
-
数字封后是一个或多个分片,每个分片第一字节为该分片的编号,然后hash值(如果有的话),最后是分片数据
-
- 接收数据包时
- 如果发送方在黑名单拒收,如果既不在黑名单也不在白名单,根据配置决定是否拒收
- 检查数据包包头是否有书生数字信封的ID(“SurPkt”),没有则直接原样转发
- 如果数据包有hash值,对每个数据分片进行完整性验证
- 如果数据包用了纠错码,进行纠错码解码
- 如果有hash校验,只用hash校验成功的分片进行还原,而无需进行纠错计算
- 如果数据包加密了,用私钥解密出会话密钥,用会话密钥解密数字信封以后的数据包数据
- 如果数据包有签名数据,从KMS获得对方公钥,进行验签
- 转发数据包
- 异常行为记录日志,严重异常拒发/拒收
- 短时间发送数据包达到一定频次视为异常,达到更高频次视为严重异常,具体频次由配置决定
- 短时间收到同一个对端的数据包达到一定频次视为异常,达到更高频次视为严重异常,具体频次由配置决定
- 可预置一个或多个允许批量发送的签名用公钥,用所有公钥对应的私钥签名的指令可在指定时间内临时解除对指定对端的发送数据包数量限制
- 如果配置要求对API接口管控,收到RESTful格式的数据包时根据调用的功能,查该功能是否有IP限制,超出范围的拒收
- 以白名单或黑名单方式限定能调用API的IP,可以指定到具体接口,例如接口1是全部放开的,接口2只有指定IP才能访问。白名单和黑名单是可以动态设置的
- 记录API调用的日志,是 否记录日志、记录所有API还是指定API也是可以动态设置的
- 拒发、发送失败、拒收、Hash校验错、纠错码发现错误、验签没通过、异常行为都记录日志,根据配置决定是否正常收发一个数据包也要记录日志
-
数据目录
- 字段:编号、名称,说明、分类分级、数量、状态、数据流程图、更多信息、设置、操作
- 状态目前有正常、已删除未销毁介质、已删除并销毁介质三种状态,对核心数据如果已删除未销毁介质则加红色加粗再加警告符号(或其它方式警告)
- 数据流程图可能有多张,表格中仅列出标题,点击后显示图像
- 点击更多信息,出现数据源、存储介质、脱敏关系菜单,对已删除数据还有存储介质是否同步销毁项
- 点击数据源,展现数据源列表(文字说明即可),可编辑修改
- 点击存储介质,跳转到存储介质列表(按存储本数据项筛选),该列表有编辑设置存储介质与数据项对应关系的功能
- 点击脱敏关系,呈现脱敏关系说明(文字说明即可),可编辑
- 对已删除数据,在菜单中显示“存储介质已销毁...”或“存储介质未销毁...”,点击该菜单项可编辑修改存储介质是否销毁选项,对已销毁状态显示销毁记录时间(即设置为已销毁状态时的时间),
- 点击设置,出现基本信息、数据流程图、计算数量规则、导入指令、导出指令、删除设置菜单
- 基本信息是名称、说明和分类分级;
- 点击“数据流程图”,可上传、删除数据流程图
- 计算数量规则有指定数据库的指定表的记录数,以及指定服务器指定目录下某后缀文件数(可选是否包含子目录)两种方式
- 导入/导出指令为字符串,导入/导出时执行,可以是软件程序,也可以是脚本,导入来源和导出地址都由导入/导出程序来询问,本产品不提供相关UI
- 删除设置为不可删除原因或彻底删除指令二选一,二者都是用户录入文字
- 点击操作出现导入、导出、高级
- 导入/导出就是执行导入/导出指令
- 高级只有一项:删除,需要多人分别插入ukey确认
- )、增删查功能、、发布标识结果,可在多重确认后删除执行(确认情况上链)、对核心数据在删除时是否同步销毁存储介质(肖亚光 胡家欢)
- 增加新数据项按钮
- 查询框
- 发布标识结果:将所有数据项的信息导出成一个文件
- 关键操作日志可选上链
存储介质列表
-
- 字段:编号,状态、类型,厂商、型号,序列号、容量,购置时间、数据、位置、设备、部门、记录、销毁、备注、操作
- 状态是尚未使用、使用中、已下架、已销毁;数据是数据目录中的名称,一个存储介质可以存储多种数据;位置指XX机房、XX房间、XX库房,字符串;设备指存储介质安装在哪台设备上,例如XX服务器,先按字符串实现(因为没有设备管理功能);部门指该存储介质的管理部门
- 点开记录有安全检查记录、使用行为记录、审计记录三个菜单
- 安全检查记录列表字段:日期、检查者、检查事项、备注
- 使用行为记录列表字段:日期、数据、位置、设备、部门
- 审计记录列表字段:日期,审计者、审计事项、审计结论、备注
- 点开销毁有销毁流程方式要求(可编辑文本)、是否已销毁(可选项)、销毁过程的监控和记录(文字以及可上传的图片视频)、介质销毁措施有效性说明(文字以及可上传的文件)、是否对被销毁后进行了数据恢复验证(可选项,如果进行了数据恢复验证,可对此加以说明,说明可上传附件)
- 操作包括编辑基本信息(类型、厂商、型号、序列号、容量、购置时间、备注)、设置部署位置(编辑位置和设备)、设置存储数据项、改变状态(投入使用、下架、销毁),也可以在表格的每个项目都可以右键编辑(这样的话就不需要操作列了),或其它方式
- 增加存储介质按钮
- 常规查询、筛选操作,其中其它业务(数据目录)需要按数据项筛选(仅列出存储该数据项的所有存储介质)
- 关键日志可选上链
- 字段:编号,状态、类型,厂商、型号,序列号、容量,购置时间、数据、位置、设备、部门、记录、销毁、备注、操作
对外接口列表
-
- 字段:编号,接口名称、是否涉及敏感数据、接口类型、接口参数,服务器、调用者、调用次数、安全策略、调用审批情况、操作、备注
- 是否涉及敏感数据,可以是无或重要数据/核心数据/敏感个人信息的组合
- 接口类型目前只支持RESTful
- 接口参数按版本号排列,点击版本号弹出该版本的接口参数说明(文本框即可)
- 安全策略列出都采取了什么安全措施,包括安全通道、加密传输、访问控制、授权策略、时间戳、身份鉴别、接口签名、安全传输协议等,有哪个安全措施就列出哪个
- 服务器列出提供该接口服务的IP地址列表,由传输网关自动识别记录产生,无需用户编辑
- 调用者列出调用该接口服务的IP地址列表,由传输网关自动识别记录产生,无需用户编辑
- 调用次数也是传输网关自动识别后累加,无需用户编辑
- 操作包括编辑基本信息、增加新版本、记录安全策略
- 基本信息包括名称、是否涉及敏感数据、接口类型、接口参数
- 增加新版 本时,包括版本号和接口参数说明,接口参数初始值为当前版本的接口参数说明
- 记录安全策略时,安全通道、加密传输、时间戳、身份鉴别、接口签名、 安全传输协议都是yes/no的单选(以后改成根据网络传输网关的运行配置自动识别),访问控制、授权策略为文字框说明(以后也是从网络传输网关的运行配置自动生成)
- 可以手工增加接口,也可以扫描网络传输网关的记录自动添加
- 常规查询、筛选操作
- 字段:编号,接口名称、是否涉及敏感数据、接口类型、接口参数,服务器、调用者、调用次数、安全策略、调用审批情况、操作、备注
数据关键操作记录
-
- 字段:执行时间、操作类型、操作账号、处理方式、 授权情况、IP 地址、登录信息
- 列出所有对数据授权访问、收集、批量复制、对外提供、公开、销毁、数据接口调用、下载、导出等关键操作的记录
- 先以手工登记方式做简单实现,逐渐增加从各模块日志中分析自动填入,但手工登记将长期保留(例如在没有咱们网关上的服务器做的操作就仍然只能手工登记)
SSO
-
- 更换框架,支持常见协议和双因子认证
- 系统管理员、安全管理员、安全审计员分离
- 某些类型用户可设置是否要求双人双岗、是否要求责任协议,在该类型用户少于2人或没有上传责任协议时警告
- 可选关键操作上链,例如设置用户权限、设置管理员权限、责任协议hash值
- 将用户其它账号密码记录在KMS中
- 可调用其它应用,并可用记录的账号密码自动登录(参照Okta)
网络安全事件列表
-
- 字段:序号,日期,级别,事件说明,处置过程,后果和影响,备注
- 人工增删改查
风险信息列表
-
- 字段:序号,级别,风险说明, 分析研判,责任人,通报处置情况,备注
- 人工增删改查
- 也可以用开源bug管理系统(如果能对接我们的SSO的话)
- 将来从安全审计中自动产生/提交
对外提供数据列表
-
- 字段:序号、数据,数量,接收方,目的、方式、期限、合规性说明、到期处置情况、操作、备注
- 数据应与数据目录一致,建议从数据目录列表中的数据名称选择(可复选)
- 合规性说明点开后包括:范围的合法性、正当性、必要性、最小性说明,审批情况,数据安全风险评估情况,个人信息保护影响评估情况,向境外执法机构提供境内数据的情况,核心数据跨主体流动前经过国家有关部门评估情况,均为文本框
- 到期处置情况包括是否到期、是否返还数据、是否删除数据
- 操作包括编辑基本信息(数据,数量,接收方,目的、方式、期限、备注)、编辑合规性说明、编辑到期处置情况
- 人工增删改查
- 可选操作记录上链
- 字段:序号、数据,数量,接收方,目的、方式、期限、合规性说明、到期处置情况、操作、备注
安全审计
-
- 从elk日志中按审计规则筛选日志(包括但不限于批量复制、传输、下载、导出、修改、删除敏感数据等)
- 可自定义审计规则
- 按风险级别、时间、操作对象、操作主体等多种维度对按审计规则筛选出的日志进行统计
- 可视化查看统计结果,风险程度高的列入告警列表,并可列出每条统计数据的明细记录
- 审计规则和重要审计结果最好上链
导出/导入数据
-
- 将一个目录下的文件加密签名打包
- 压缩包中有一个json格式的索引文件,记录压缩包中其它文件的数字信封和签名信息
- 可选包含子目录、只对某些后缀进行操作
- 可选将操作记录上链
- 将压缩包解压验签解密
- 验证压缩包中每个文件的hash值是否正确
- 验证压缩包中每个文件的签名值是否正确
- 用自己的私钥解密出压缩包中每个文件对应的数字信封的密钥,再解密该文件
- 将一个目录下的文件加密签名打包
定时任务
-
- 可配置定时任务,指定起始时间、时间间隔和定时执行指令
- 定时执行指令可以手工输入,也可以选择删除缓存
- 删除缓存时,需要指定服务器、删除目录、删除后缀列表、是否包含子目录,可有多个
- 只有管理员才能设置
敏感数据发现
- 可设置敏感数据发现规则
- 对数据库,设置待扫描的数据源列表、数据库名(按匹配规则模糊匹配)、表名(按匹配规则模糊匹配)和字段名(按匹配规则模糊匹配),对每个字段可以定义对应的操作。
数据源列表中的每个数据源可以有一个到多个数据库名匹配规则(当前只实现正则表达式规则),每个数据库名匹配规则又有一个到多个数据表名匹配规则(当前只实现正则表达式),每个数据库表名匹配规则又有一个到多个字段名匹配规则(当前只实现正则表达式),每个字段名匹配规则对应一个处理操作,可以是空操作,也可以设置脱敏算法(及其参数)、水印算法(及其参数),设置动态加密/动态脱敏/动态水印,设置是自动设置还是人工确认。对每个数据库名匹配规则,可以设置一个静态加密/脱敏/水印任务,设置是自动设置还是人工确认,也可以不设置。 - 其它类型数据待定义
- 对数据库,设置待扫描的数据源列表、数据库名(按匹配规则模糊匹配)、表名(按匹配规则模糊匹配)和字段名(按匹配规则模糊匹配),对每个字段可以定义对应的操作。
- 敏感数据发现任务可手动执行,亦可定时自动执行
- 扫描发现的敏感数据,可按照预定规则设置敏感字段动态加密/脱敏/ 水印,自动添加静态加密/脱敏/水印任务,如规则要求人工确认则管理员确认后完成设置,否则自动设置。