DB2-如何防止用户查看视图DDL

ppcbkaq5  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(294)

我遇到了这样的情况,用户正在使用DBeaver访问DB2。创建了一些视图。目前,用户可以使用DBeaver查看视图DDL(后端代码)。
问:如何/有没有办法阻止用户看到视图DDL?
非常感谢你的忠告

ru9i0ody

ru9i0ody1#

请看Db2 Obfuscation工具。

CALL DBMS_DDL.CREATE_WRAPPED ('CREATE OR REPLACE VIEW TEST_OBFUSCATED AS SELECT TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA LIKE ''SYS%''');

SELECT TEXT
FROM SYSCAT.VIEWS
WHERE VIEWSCHEMA = CURRENT SCHEMA AND VIEWNAME = 'TEST_OBFUSCATED';

| 文本|
| - -|
| 创建或替换视图测试废弃 Package SQL 11014长字符串无意义|
您可以按相同方式将此视图用作任何其他视图,但其文本并非对所有人都可见。
此外,您可以使用这个“奇怪的”模糊语句从头开始创建视图。有一个标量函数可以帮助您获得这个模糊语句,而不必先创建它。

VALUES DBMS_DDL.WRAP ('CREATE OR REPLACE VIEW TEST_OBFUSCATED AS SELECT TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA LIKE ''SYS%''')

如果有人仍然需要查看真实的视图文本,可以在SYSIBM.SYSVIEWS表上使用Row and column access control (RCAC)

nc1teljy

nc1teljy2#

如果您希望用户能够从视图中进行选择,则他们必须能够获得该视图的定义。
您可以将针对视图的查询 Package 在一个返回集合的用户定义函数中,该函数具有其创建者(假定是DBA)的所有权限,并仅授予其他用户对该函数的EXECUTE权限。然后,您就可以撤消用户读取您不希望他们读取的系统目录表的权限。
Details in the manual

相关问题