数据库脱敏
2021-12-13 15:18:45 0 举报
数据库脱敏设计方案(包含权限控制)
作者其他创作
大纲/内容
w**u
2
auth_id
database_name
nameA
3
代理获取此次连接的数据库用户和ip信息
des
phoneA
DB
3306
应用
pig
l**i
db_server_id
1830****2789
table:auth_role_mapping
id
表信息
role_B
123456
application_id
查找原始字段名
system_name
phone
lisi
table_name
脱敏策略配置表:表A
查询
c服务器
field_name
获取到数据
principal_name
1830****2786
10.20.152.10
db_name
table:db_server_info
c业务
重新发送sql请求到DB
第三步:代理数据库流量
gateway_fly.user.phone
strategy_id
数据库请求发出
NOTE:select 语句中还可以定义一些自定义函数F,然后通过函数包装字段 (inbound端)
t.u_name
1
在某个应用下进行数据导入,指定表名和所需字段名即可
belong_table
18302702786
执行策略上配置的脱敏操作
gateway_fly.user
老的想法:基于数据库用户做权限控制(此设计基于数据库用户做权限控制,应用方在操作数据库如果区分权限,使用对应权限的数据库用户)
principal_type
....
代理拿到用户信息后解析出appId和currentPrincipalID(根据appId查应用是否支持角色),后面直接查找出db_server的管理员认证信息,替换此用户
非hash函数:contact(),
不做处理
zhangsan
基于角色的权限控制(此设计基于应用系统账户信息做权限控制,连接数据库时需要做一些处理,在数据库连接这一块需要改动,可能会影响连接池的使用)
admin
continue
需要区分数据库类型进行扫描
数据库连接需改变:将原本连接中的用户名替换成appId(每个应用固定id)+currentPrincipalID(如果系统支持role则是roleId,如果不支持则是userId)
varchar
z**n
role
principal_id
input
wangwu
name
a服务器
user_name
yes
role_id
数据库
output
部分权限
user
**
接收数据库响应数据
18302702789
第二步:根据扫描出的字段信息配置脱敏策略
gateway_fly.user.name
白名单函数表(主要是一些hash类型函数):表B
获取响应数据
代理
18302702788
int
代理端根据ip信息和数据库用户名,查找对应的策略表
cat
10.20.152.12
if(exist && !(Hash F)) 【 continue】
role_A
匹配
user表信息示例:
所有权限
【过滤select语句】
10.20.152.11
HASH类型函数(不可逆的函数操作)
table:auth_info
b服务器
第一步:数据库扫描
count()
找不到输入之后,查询user_name是否配置策略
****
dog
count
table:role_strategy_mapping
port
应用获取数据库结果执行后续操作
ip
NULL
field_type
返回数据
admin_name
sql语句分析
gateway_fly
根据之前获取的appId和currentPrincipalId查找策略,找到此用户对应策略后根据策略对用户查询数据做脱敏操作
发回应用端
font color=\"#ff0000\
接收应用的请求,执行【sql语句解析】,得到别名映射关系;(具体执行过程见【示例二】)
复杂一点的sql,示例一:select user_name from sys_user where id in (select id as uid from sys_user where id in (select id from sys_user))and user_name in (select user_name from sys_user);此处sql没有subquery直接判断user_name是否设置策略即可
hash
1830****2788
admin_password
table:role_info
field
b业务
应用发送一条sql请求(连接gateway_fly库):
table:application_info
a业务
user:1role:2
执行配置的具体脱敏操作
扫描
hash()
operate
之前casb代理中可以通过cookie传递身份信息,后续设计跟数据库脱敏系统中的权限控制类似
表字段信息
应用发起正常sql请求
数据库执行sql语句,将结果返回给代理端
table
数据库流量代理流程
用于权限控制的两种数据来源(只能使用其中一种):1.导入客户系统的用户2.导入客户系统的角色(如果有)
0 条评论
下一页