问题描述
我是FGA审核的新手,并且为表T列SSN上的SELECT创建了FGA策略。这很好。专门选择列T.SSN的任何用户,在我的审计表中生成一行。(我正在使用DB 11.2.0.4)
从T中选择T.SSN; -- 生成审计行
从T中选择 *; -- 生成和审计行
然后我创建了一个具有2个表列的视图V。其中一个表列是T.SSN,另一个是T.DOB。
所以我的观点只有两列,V.SSN和V.DOB
所以现在如果我查询视图V:
从V中选择V.SSN; -- 按预期生成审计行
从V中选择 *; -- 按预期生成审计行
现在是假阳性!!
从V; 中选择V.DOB; -- 生成审计行。非常出乎意料。用户实际上从未选择过SSN列,但是由于用户正在通过恰好包含SSN的视图进行查询,因此FGA会审核选择。
有没有一种方法可以防止这种误报,同时仍将SSN列保留在视图中?
以前有人遇到过吗?
提前感谢您提供的任何建议。
鲍勃
从T中选择T.SSN; -- 生成审计行
从T中选择 *; -- 生成和审计行
然后我创建了一个具有2个表列的视图V。其中一个表列是T.SSN,另一个是T.DOB。
所以我的观点只有两列,V.SSN和V.DOB
所以现在如果我查询视图V:
从V中选择V.SSN; -- 按预期生成审计行
从V中选择 *; -- 按预期生成审计行
现在是假阳性!!
从V; 中选择V.DOB; -- 生成审计行。非常出乎意料。用户实际上从未选择过SSN列,但是由于用户正在通过恰好包含SSN的视图进行查询,因此FGA会审核选择。
有没有一种方法可以防止这种误报,同时仍将SSN列保留在视图中?
以前有人遇到过吗?
提前感谢您提供的任何建议。
鲍勃
专家解答
这在MOS注释2233726.1中有记录。一个视图只是存储的文本,所以从概念上你的查询:
从V中选择dob
可以在内部表示为:
选择dob
(从T中选择ssn,dob);
因此,您正在 “引用” ssn。
解决方法是将FGA策略放在视图上,而不是表格上。因此
当前
=
带有审计政策的表T
将V视为从T中选择2个cols
提议的
==
表T (重命名为HIDDEN_T)
将T视为select * fin HIDDEN_T,FGA策略
查看V作为从HIDDEN_T、FGA策略中选择2个cols
从V中选择dob
可以在内部表示为:
选择dob
(从T中选择ssn,dob);
因此,您正在 “引用” ssn。
解决方法是将FGA策略放在视图上,而不是表格上。因此
当前
=
带有审计政策的表T
将V视为从T中选择2个cols
提议的
==
表T (重命名为HIDDEN_T)
将T视为select * fin HIDDEN_T,FGA策略
查看V作为从HIDDEN_T、FGA策略中选择2个cols
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




