spmask
脱敏 脱敏字典
1.数据库节点注册进zk
proxy启动后,将服务器信息写进zk
用zkcli列出ls所有服务器:
ls /serverlist
返回:1KxCaYr, 2KxCaY,...(以服务器信息hash作为唯一主键,防止重复注册)
读取节点1KxCaYr服务器信息
getdata /serverlist/1KxCaYr
返回:{"port":8030,"hosts":["192.168.0.101","192.168.75.1","192.168.66.1"],"type":"proxy"}
json,包含多个ip
2.初始化表接口
post /InitTable
{"tabname":"dbname:tabname","keyid":100,"fields":["user_id","content","mobile"],"encrypted":["content","mobile"]}
"keyid":执行初始化的用户
"fields":需要初始化的字段名
"encrypted":增加了encrypted字段,需要加密的字段,(必须是fields中存在的字段),
存在表示该字段需要加密,不存在表示该字段不需要加密(但有可能需要脱敏,具体看该字段后续有没有被设置脱敏规则)
注意:初始化一旦被用户100执行后,其他用户不可调初始化接口更改(只可授权),但可以用100用户反复执行,每次会更新
返回成功:{code:0}
返回错误:{code:100,message:"..."}
3.授权表接口(未变动)
数据库表dbname:tabname被用户100初始化后,可以将权限授权给用户101
post /AuthTable
{"tabname":"dbname:tabname","keyid":101,"fields":["content","mobile"]}
tabname:要授权的表名,该表确定是已经被某个用户(如上面的100)初始化过,且该用户当前必须在登陆状态
keyid:密钥id,(当前必须登陆状态)
fields:要授权的字段,如上授权了2个字段
返回成功:{"code":0,"message":"OK"}
返回失败:{"code":100,"message":"..."}
可以在终端用curl直接发送初始化请求
授权成功后,100对 "user_id","mobile","content"有权限
101对 "content","mobile"有权限
对于字段,"mobile","content",100,101两个用户任意一个在登陆状态,都可访问
对于 "user_id",只有100在登陆状态才可访问
4.设置脱敏(未变动)
post: /SetMask
{"tabname":"dbname:tabname","keyid":100,"mask":{"content":"ReplaceWStar(1,3)","mobile":"ReplaceWStar(2,5)"}
返回成功:{code:0}
返回错误:{code:100,message:"..."}
5.LS脱敏(未变动)
get /ListMask/t_order/mobile
返回表dbname:tabname中字段mobile所有用户设置的脱敏规则
返回成功:
{"tabname":"dbname:tabname", "field":"mobile","masks":[{"keyid":100,"mask":"ReplaceWStar(2,5)"}]
返回错误:{code:100,message:"..."}