了解 DML 操作中的掩蔽行为
pg_columnmask 一致地应用于所有 DML 操作,包括 INSERT、UPDATE、DELETE 和 MERGE 语句。当您执行这些操作时,Aurora PostgreSQL 会根据核心原则掩蔽数据,即根据当前用户的适用策略掩蔽从存储中读取的任何数据。
掩蔽会影响以下一些查询组件,例如:
WHERE 子句
JOIN 条件
子查询
RETURNING 子句
所有这些组件都对掩蔽值而不是原始数据进行操作。当数据以未掩蔽的方式写入存储时,用户只有在读回数据时才能看到其掩蔽视图。
Aurora PostgreSQL 对实际存储的值而不是掩蔽值强制执行所有数据库约束(NOT NULL、UNIQUE、CHECK、FOREIGN KEY)。如果未精心设计掩蔽函数,这偶尔会造成明显的不一致。
掩蔽与列级别权限一起使用:
没有 SELECT 权限的用户无法读取列
拥有 SELECT 权限的用户会根据其适用的策略查看掩蔽值