Skip to main content

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"100101两个用户任意一个在登陆状态,都可访问
对于 "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:"..."}

脱敏字典

1.创建字典

curl -i -k -H "Content-type: application/json" -X POsT -d '"["str1","str1","str3","str2"yy' http:/ocahost:8030/setDict/dictname1
//dictname1字段分类,zk没有就新创建,有更新
return:{"code":0,"message":"OK"}

2.获取字典列表

curl http://localhost:8030/GetDict
return:{"code":0,"data":["dictname1""dictname2"]}

2.获取字典数据

curl http://localhost:8030/GetDict/dictname1
return: {"code": 0, "data": ["str1""str2"]}
return:{"code":100"message":"错误原因"}

2.删除字典

curl http://localhost:8030/DelDict/dictname1
return:{"code":0,"message":"OK"}
  • 设置脱敏规则函数格式
  • DICT(dictname1),字典过滤,仅支持字符串类型
  • //参数:dictname1为字典的分类名,通过该标识从zk加载对应字典