首批通过分布式安全可靠测评,为关键业务系统打造
列加密常见问题
更新时间:2026-04-07 20:57:20
本文档介绍了列加密功能的一些常见问题。
把加密列数据通过 SQL 写入一个不加密的列,如 INSERT INTO ... SELECT ...,查询时新列是密文还是明文?
- 如果执行
INSERT INTO ... SELECT ...的用户有对应明文访问数据的权限,则插入的是明文。查询时是明文(除非该表上有另外的加密规则)。 - 如果执行
INSERT INTO ... SELECT ...的用户没有对应明文访问数据的权限,则不允许执行这种操作。
加密列的列名重命名之后,是否还受加密规则保护?
列加密规则的应用不受列名更改的影响。即使列名被更改,这个列仍然会受到加密规则的保护。
加密列在函数内,比如 SELECT CAST(id AS CHAR), name, password FROM test_01;,查询时是密文还是明文?
在查询中,如果投影列包含加密列,则整个投影列将被加密返回。
从加密列设置非加密列的值
当从加密列设置非加密列的值时,如 UPDATE test_01 SET age = id + 2;,如果执行这条语句的用户有明文访问权限,则非加密列的值将以明文形式处理。否则,用户不能执行这条语句。
加密列与明文列的计算结果
在计算加密列与明文列的结果时,如 SELECT CONCAT(id, name) FROM test_01;,结果将被加密返回。
备份恢复对列加密规则的影响
在进行租户级备份恢复时,列加密规则将被恢复。但表级恢复功能,恢复的是独立对象,难以继承源表的列加密规则和权限。所以源表包含列加密规则时,建议业务评估是否要对表级恢复出来的数据增加单独的访问控制。