问题现象
脱敏功能下执行 sql 或存储过程报错,甚至 gcluster 宕机,需要检查 unmask 权限。
解决方法:
Unmask 是面向脱敏控制的权限,对于脱敏数据,拥有 unmask 权限的普通用户可以看到原始数据,没有 unmask 权限的普通用户只能看到脱敏后的数据。权限是针对普 通 用 户的全局权 限, 不属于某 一个 VC 或 库 表, 在 gbase.user 表中Unmask_priv 列可以查看用户的 unmask 权限。Alter table tb alter col masked 修改脱敏属性,需要拥有 alter 和 unmask 权限才可以执行。新创建的数据库用户,赋予的 all 权限不包括 unmask 权限,unmask 权限需要单独赋予。
gbase> create user unmaskuser;
Query OK, 0 rows affected (Elapsed: 00:00:00.88)
gbase> grant all on *.* to unmaskuser;
Query OK, 0 rows affected (Elapsed: 00:00:00.14)
gbase> select Unmask_priv,user from gbase.user where user='unmaskuser';
+-------------+------------+
| Unmask_priv | user |
+-------------+------------+
| N | unmaskuser |
+-------------+------------+
1 row in set (Elapsed: 00:00:00.12) gbase> grant unmask on *.*.* to unmaskuser;
Query OK, 0 rows affected (Elapsed: 00:00:00.05)
gbase> select Unmask_priv,user from gbase.user where user='unmaskuser';
+-------------+------------+ | Unmask_priv | user | +-------------+------------+ | Y | unmaskuser | +-------------+------------+
1 row in set (Elapsed: 00:00:00.00)