我能够使用以下内容为顶级键的 json 列创建数据屏蔽策略,但无法找到更深层的 json。有人做过吗?
CREATE OR REPLACE MASKING POLICY json_mask_test AS
(val variant) returns variant ->
CASE
WHEN invoker_role()='ADMIN' THEN val
ELSE object_insert(
object_insert(
object_insert(val, 'pii_field', '***', true),
'address','***', true),
'lastName','***', true)
END
Ifobject_insert
是在 json 字段上创建屏蔽策略的唯一方法,看起来它仅限于顶级键。
我正在使用On Variant Data的示例
同样作为副作用,当原始字段中不存在键时,此策略会将键插入 json 字段。能够消除这一点将是可取的。
编辑:
我在上面的例子中使用了这个 json
{"regular_field": "regular data", "pii_field": "pii data"}
我试图在 json 中屏蔽 LastNames,如下所示
'{"root":[{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}]}'