Skip to content

Commit ae54ae6

Browse files
GloomyNANhhyo
andauthored
fix sql.trx_view and MaskingColumns column_comment (hhyo#1175)
* fix sql.trx_view * fix MaskingColumn column_comment * add masking.sh Co-authored-by: 小圈圈 <[email protected]>
1 parent f24d059 commit ae54ae6

File tree

3 files changed

+68
-2
lines changed

3 files changed

+68
-2
lines changed

masking.sh

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# 脱敏字段添加过于繁琐
2+
# 可参考下面的脚本,定时运行即可
3+
4+
# 脱敏规则
5+
# (1, '手机号'), (2, '证件号码'), (3, '银行卡'), (4, '邮箱'), (5, '金额'), (6, '其他')
6+
masking_rule_phone='phone|mobile'
7+
masking_rule_idno='id_number|idcard'
8+
masking_rule_bankcardno='bank_no'
9+
masking_rule_mail='mail|email'
10+
masking_rule_amount='pay_money|amount'
11+
masking_rule_others='pwd|password|user_pass'
12+
masking_rules="$masking_rule_phone|$masking_rule_idno|$masking_rule_bankcardno|$masking_rule_mail|$masking_rule_amount|$masking_rule_others";
13+
14+
DIR="$( cd "$( dirname "$0" )" && pwd )"
15+
cd $DIR
16+
archery_host=127.0.0.1
17+
archery_port=3306
18+
archery_user=
19+
archery_db=archery
20+
archery_pw=
21+
22+
# 获取archery所有slave实例信息
23+
mysql -h$archery_host -P$archery_port -u$archery_user -p$archery_pw $archery_db -N -e "select
24+
id,instance_name,host,port
25+
from sql_instance where type='slave';">instances.list
26+
27+
# 清空表
28+
mysql -h$archery_host -P$archery_port -u$archery_user -p$archery_pw $archery_db -N -e "truncate table data_masking_columns;"
29+
30+
# 临时账号密码(因实例账号&密码为加密,写死使用)
31+
# 此方式只适用单个实例或多个实例账号密码一致
32+
user=
33+
pw=
34+
35+
# 获取脱敏字段信息
36+
cat instances.list|while read instance_name host port
37+
do
38+
mysql -h$host -P$port -u$user -p$pw -N -e "
39+
SELECT CASE
40+
WHEN COLUMN_NAME REGEXP '$masking_rule_phone'
41+
THEN 1
42+
WHEN COLUMN_NAME REGEXP '$masking_rule_idno'
43+
THEN 2
44+
WHEN COLUMN_NAME REGEXP '$masking_rule_bankcardno'
45+
THEN 3
46+
WHEN COLUMN_NAME REGEXP '$masking_rule_mail'
47+
THEN 4
48+
WHEN COLUMN_NAME REGEXP '$masking_rule_amount'
49+
THEN 5
50+
WHEN COLUMN_NAME REGEXP '$masking_rule_others'
51+
THEN 6
52+
END AS rule_type,
53+
1 AS active,
54+
'$instance_id' instance_id,
55+
TABLE_SCHEMA table_schema,
56+
TABLE_NAME table_name,
57+
COLUMN_NAME column_name,
58+
COLUMN_COMMENT column_comment
59+
FROM information_schema.COLUMNS
60+
WHERE COLUMN_NAME REGEXP '$masking_rules'
61+
AND TABLE_SCHEMA != 'performance_schema'
62+
AND TABLE_SCHEMA != 'information_schema';">$instance_name.txt
63+
64+
# 更新表数据
65+
mysql -h$archery_host -P$archery_port -u$archery_user -p$archery_pw $archery_db -N -e "load data local infile '$instance_name.txt' replace into table data_masking_columns fields terminated by '\t' ( rule_type,active,instance_id,table_schema,table_name,column_name,column_comment);"
66+
done

sql/admin.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class QueryPrivilegesApplyAdmin(admin.ModelAdmin):
151151
@admin.register(DataMaskingColumns)
152152
class DataMaskingColumnsAdmin(admin.ModelAdmin):
153153
list_display = (
154-
'column_id', 'rule_type', 'active', 'instance', 'table_schema', 'table_name', 'column_name',
154+
'column_id', 'rule_type', 'active', 'instance', 'table_schema', 'table_name', 'column_name', 'column_comment',
155155
'create_time',)
156156
search_fields = ['table_name', 'column_name']
157157
list_filter = ('rule_type', 'active', 'instance__instance_name')

sql/db_diagnostic.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ def innodb_trx(request):
277277
ON trx.trx_mysql_thread_id = p.id
278278
WHERE trx.trx_state = 'RUNNING'
279279
AND p.COMMAND = 'Sleep'
280-
AND P.time > 3
280+
AND p.time > 3
281281
ORDER BY trx.trx_started ASC;'''
282282

283283
query_result = query_engine.query('information_schema', sql)

0 commit comments

Comments
 (0)